00001
00002
00003 #ifndef _ORACLEPOOL_LASTMOVE_H
00004 #define _ORACLEPOOL_LASTMOVE_H
00005
00006 #include "osl/move.h"
00007 #include "osl/pieceStand.h"
00008 #include <boost/scoped_ptr.hpp>
00009 #include <cstddef>
00010
00011 namespace osl
00012 {
00013 namespace state
00014 {
00015 class SimpleState;
00016 }
00017 namespace checkmate
00018 {
00019 using state::SimpleState;
00020 class CheckHashRecord;
00026 class OraclePoolLastMove
00027 {
00028 class Table;
00029 boost::scoped_ptr<Table> oracles;
00030 public:
00031 explicit OraclePoolLastMove(Player attacker);
00032 ~OraclePoolLastMove();
00033
00034 void addOracle(const SimpleState&,Move last_move, const CheckHashRecord*);
00035 const CheckHashRecord *findOracle(const SimpleState&, Move last_move,
00036 PieceStand black_stand,
00037 unsigned short& oracle_age) const;
00038 size_t size() const;
00039 };
00040
00041 }
00042 }
00043
00044 #endif
00045
00046
00047
00048