00001 #ifndef Sub_h 00002 #define Sub_h 00003 #include "Primitive.h" 00004 00005 namespace Tree { 00006 namespace Primitives { 00007 00012 template <class T> 00013 class SubT : public Primitive 00014 { 00015 public: 00016 SubT(void); 00017 void execute(void* result, Tree& tree); 00018 ~SubT(void); 00019 }; 00020 typedef SubT<double> Sub; 00021 00022 template <class T> 00023 SubT<T>::SubT(void) 00024 { 00025 nArguments_ = 2; 00026 name_ = "-"; 00027 complementName_ = "+"; 00028 } 00029 00030 00031 template <class T> 00032 SubT<T>::~SubT(void) 00033 { 00034 } 00035 00036 template <class T> 00037 void SubT<T>::execute(void* result, Tree& tree) 00038 { 00039 T prvi, drugi; 00040 T& res = *(T*)result; 00041 getNextArgument(&prvi, tree); 00042 getNextArgument(&drugi, tree); 00043 res = prvi - drugi; 00044 } 00045 00046 } 00047 } 00048 00049 #endif