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