00001 /* oracleProverLight.h 00002 */ 00003 #ifndef _ORACLEPROVERLIGHT_H 00004 #define _ORACLEPROVERLIGHT_H 00005 00006 #include "osl/checkmate/proofOracle.h" 00007 #include "osl/checkmate/fixedDepthSearcher.h" 00008 #include "osl/state/numEffectState.h" 00009 #include "osl/player.h" 00010 namespace osl 00011 { 00012 namespace checkmate 00013 { 00017 template <Player Attacker> 00018 class OracleProverLight 00019 { 00020 public: 00021 typedef NumEffectState state_t; 00022 private: 00023 state_t *state; 00024 FixedDepthSearcher fixed_searcher; 00025 int node_count; 00026 Move best_move; 00027 public: 00028 OracleProverLight() : node_count(0) 00029 { 00030 } 00031 typedef ProofOracleAttack<Attacker> attack_oracle_t; 00032 typedef ProofOracleDefense<Attacker> defense_oracle_t; 00037 bool proofWin(state_t& state, attack_oracle_t oracle, 00038 Move& best_move); 00043 bool proofLose(state_t& state, defense_oracle_t oracle, 00044 Move last_move=Move::INVALID()); 00045 00046 int nodeCount() const { return node_count; } 00047 00048 // private: 00049 const ProofDisproof attack(attack_oracle_t oracle); 00050 const ProofDisproof defense(defense_oracle_t oracle); 00051 }; 00052 00053 } // namespace checkmate 00054 } // namespace osl 00055 00056 #endif /* _ORACLEPROVERLIGHT_H */ 00057 // ;;; Local Variables: 00058 // ;;; mode:c++ 00059 // ;;; c-basic-offset:2 00060 // ;;; End: