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