13 #include <boost/scoped_array.hpp> 
   14 #include <boost/scoped_ptr.hpp> 
   15 #include <boost/noncopyable.hpp> 
   25 #  include <boost/thread/mutex.hpp> 
   38       boost::scoped_array<Table> 
table;
 
   46       template <Player Attack>
 
   50       template <Player Attack>
 
   53       template <Player Attack>
 
   65       void store(
const HashKey& key, 
DfpnRecord& value, 
int leaving_thread_id=-1);
 
   87       mutable CArray<Mutex,DIVSIZE> mutex;
 
   91       LightMutex root_mutex;
 
   97         unsigned long val=key.signature();
 
  100       template <Player Attack>
 
  101       List *
find(
const HashKey& key, 
int subindex);
 
  102       template <Player Attack>
 
  103       const List *
find(
const HashKey& key, 
int subindex) 
const;
 
  104       const List *
find(
const HashKey& key, 
int subindex) 
const;
 
  111     class Dfpn : boost::noncopyable
 
  122       boost::scoped_ptr<Tree> 
tree;
 
  153                     size_t limit, 
Move last_move);
 
  158                    const NumEffectState& state, 
const vector<Move>& 
moves) 
const;
 
  162       template <Player P> 
void attack();
 
  163       template <Player P> 
void defense();
 
  177       template <
bool UseTable>
 
  179       tryProofMain(
const NumEffectState& state, 
const HashKey& key,
 
  184       tryProof(
const NumEffectState& state, 
const HashKey& key,
 
  188       tryProofLight(
const NumEffectState& state, 
const HashKey& key,
 
  199       static void generateEscape(
const NumEffectState&, 
bool need_full_width, 
 
  203       template <Player Turn>
 
  224     assert(P == move.
player());
 
  230     assert(P == move.
player());
 
  234       if (key.blackStand().get(move.
ptype()) == 0)