BWAPI
|
00001 #pragma once 00002 #include <boost/tuple/tuple.hpp> 00003 00008 class Condition 00009 { 00010 // bool evaluate() 00011 }; 00012 00016 class NoCondition : public Condition 00017 { 00018 public: 00019 bool evaluate() const { return true; } 00020 }; 00021 00025 template <class NegatedCondition> 00026 class Not : public Condition 00027 { 00028 public: 00029 Not(NegatedCondition condition) 00030 : m_condition(condition) 00031 { 00032 } 00033 //template <class Arguments> 00034 //bool evaluate(Arguments& args) 00035 //{ 00036 // return !m_condition.evaluate(args); 00037 //} 00038 bool evaluate() 00039 { 00040 return !m_condition.evaluate(); 00041 } 00042 template <class T1> 00043 bool evaluate(T1 t1) 00044 { 00045 return !m_condition.evaluate(t1); 00046 } 00047 template <class T1, class T2> 00048 bool evaluate(T1 t1, T2 t2) 00049 { 00050 return !m_condition.evaluate(t1, t2); 00051 } 00052 template <class T1, class T2, class T3> 00053 bool evaluate(T1 t1, T2 t2, T3 t3) 00054 { 00055 return !m_condition.evaluate(t1, t2, t3); 00056 } 00057 template <class T1, class T2, class T3, class T4> 00058 bool evaluate(T1 t1, T2 t2, T3 t3, T4 t4) 00059 { 00060 return !m_condition.evaluate(t1, t2, t3, t4); 00061 } 00062 template <class T1, class T2, class T3, class T4, class T5> 00063 bool evaluate(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) 00064 { 00065 return !m_condition.evaluate(t1, t2, t3, t4, t5); 00066 } 00067 00068 protected: 00069 NegatedCondition m_condition; 00070 };