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