00001 //---------------------------------------------------------------------------- 00002 /** @file BenzeneSolver.hpp 00003 */ 00004 //---------------------------------------------------------------------------- 00005 00006 #ifndef BENZENESOLVER_H 00007 #define BENZENESOLVER_H 00008 00009 #include "Hex.hpp" 00010 #include "ConstBoard.hpp" 00011 00012 _BEGIN_BENZENE_NAMESPACE_ 00013 00014 //---------------------------------------------------------------------------- 00015 00016 struct SolverDataFlags 00017 { 00018 /** Marks the proof as that of a transposition of some other 00019 state. */ 00020 static const int TRANSPOSITION = 1; 00021 00022 /** Marks the proof as a mirror transposition of some other 00023 state. */ 00024 static const int MIRROR_TRANSPOSITION = 2; 00025 }; 00026 00027 //---------------------------------------------------------------------------- 00028 00029 /** Contains a bestmove. */ 00030 template<class T> 00031 struct HasBestMoveConcept 00032 { 00033 void constraints() 00034 { 00035 const T t; 00036 HexPoint point = t.m_bestMove; 00037 SG_UNUSED(point); 00038 } 00039 }; 00040 00041 /** Contains a flag. */ 00042 template<class T> 00043 struct HasFlagsConcept 00044 { 00045 void constraints() 00046 { 00047 const T t; 00048 int flags = t.m_flags; 00049 SG_UNUSED(flags); 00050 } 00051 }; 00052 00053 /** Object can be mirrored. */ 00054 template<class T> 00055 struct HasMirrorConcept 00056 { 00057 void constraints() 00058 { 00059 const ConstBoard& brd = ConstBoard::Get(1, 1); 00060 T t; 00061 t.Mirror(brd); 00062 } 00063 }; 00064 00065 //---------------------------------------------------------------------------- 00066 00067 _END_BENZENE_NAMESPACE_ 00068 00069 #endif // BENZENESOLVER_H