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