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