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