• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/ECF/cartesian/Sub.h

00001 #ifndef Sub_h
00002 #define Sub_h
00003 #include "Function.h"
00004 
00005 namespace cart
00006 {
00007     template <class T>
00008     class Sub : public Function
00009     {
00010     public:
00011         Sub();
00012         Sub(uint numArgs);
00013         ~Sub();
00014 
00015         void evaluate(voidP inputs, void* result);
00016     };
00017 
00018     typedef Sub<double> SubDouble;
00019     typedef Sub<int> SubInt;
00020 
00021     template <class T>
00022     Sub<T>::Sub()
00023     {
00024         name_ = "-";
00025         numOfArgs_ = 2;
00026     }
00027 
00028     template <class T>
00029     Sub<T>::Sub(uint numArgs)
00030     {
00031         name_ = "-";
00032         numOfArgs_ = numArgs;
00033     }
00034 
00035     template <class T>
00036     Sub<T>::~Sub()
00037     {
00038     }
00039 
00040     template <class T>
00041     void Sub<T>::evaluate(voidP inputs, void* result)
00042     {
00043         T& diff = *(T*) result;
00044         stringstream ss;
00045         ss << *((string*) inputs.get());
00046         vector<T> readInputs;
00047         T input;
00048         uint i = 0;
00049         while (ss >> input)
00050         {
00051             readInputs.push_back(input);
00052             ++i;
00053             if (i == numOfArgs_)
00054             {
00055                 break;
00056             }
00057         }
00058 
00059         diff = readInputs.at(0);
00060         for (int i = 1; i < (int)numOfArgs_; i++)
00061         {
00062             diff -= readInputs.at(i);
00063         }
00064     }
00065 
00066 }
00067 
00068 #endif /* Sub_h */

Generated on Tue Nov 4 2014 13:04:30 for ECF by  doxygen 1.7.1