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