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