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