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