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