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