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