00001 #ifndef Max_h 00002 #define Max_h 00003 #include "Primitive.h" 00004 00005 #include <algorithm> 00006 00007 namespace Tree { 00008 namespace Primitives { 00009 00014 template <class T> 00015 class MaxT : public Primitive 00016 { 00017 public: 00018 MaxT(); 00019 void execute(void* result, Tree& tree); 00020 ~MaxT(); 00021 }; 00022 typedef MaxT<double> Max; 00023 00024 00025 template <class T> 00026 MaxT<T>::MaxT() 00027 { 00028 nArguments_ = 2; 00029 name_ = "max"; 00030 complementName_ = "min"; 00031 } 00032 00033 00034 template <class T> 00035 MaxT<T>::~MaxT() 00036 { } 00037 00038 00039 template <class T> 00040 void MaxT<T>::execute(void* result, Tree& tree) 00041 { 00042 T first, second; 00043 T& max = *(T*)result; 00044 getNextArgument(&first, tree); 00045 getNextArgument(&second, tree); 00046 max = std::max(first, second); 00047 } 00048 00049 } 00050 } 00051 00052 #endif