18 #include <boost/foreach.hpp> 
   30   State(
const SimpleState& initial_state) 
 
   31     : state(initial_state), counter(state.state())
 
   33     move_history.reserve(1024);
 
   57   stack->move_history.push(m);
 
   61   stack->state.makeMove(m);
 
   62   stack->eval_stack.push_back(eval);
 
   69   if (! 
state().isValidMove(m, 
false))
 
   73   if (PawnDropCheckmate_t::isMember(
state(), m))
 
   76   stack->state.makeMove(m);
 
   77   const bool unsafe_king = 
state().inCheck(
alt(
state().turn()));
 
   78   stack->state.unmakeMove();
 
   91   stack->move_history.pop();
 
   93   stack->state.unmakeMove();
 
   94   stack->eval_stack.pop_back();
 
  101   return stack->state.state(); 
 
  107   return stack->move_history.size();
 
  113   return stack->move_history;
 
  119   return stack->counter.history();
 
  125   return stack->counter;
 
  131   return ! 
stack->state.empty();
 
  144   return stack->state.initialState();
 
  150   return stack->eval_stack;
 
  162   const HashKey key(
state());
 
  163   BOOST_FOREACH(
Move m, all) {
 
  185     copy.copyFrom(
state());
 
  187     if (! copy.inCheck()) {
 
  189           || EnterKing::canDeclareWin(copy)) {
 
  200                                   MoveVector& loss)
 const 
  202   MoveVector win, draw;
 
  204   normal_or_win_or_draw.push_back(win.begin(), win.end());
 
  205   normal_or_win_or_draw.push_back(draw.begin(), draw.end());
 
  213     return search::MoveStackRejections::probe<BLACK>
 
  217     return search::MoveStackRejections::probe<WHITE>