14   : 
book(b), searcher(s), book_limit(-1), current_moves(0), valid_initial_position(true)
 
   32   book_limit = new_limit;
 
   40   if (
book->isVerbose() && !valid_initial_position)
 
   41     std::cerr << 
"book: end" << 
"\n";
 
   48   if (valid_initial_position)
 
   50   searcher->pushMove(m);
 
   56   if (valid_initial_position)
 
   64   return valid_initial_position 
 
   65     && (! 
book->isOutOfBook())
 
   66     && (book_limit < 0 || current_moves < book_limit);
 
   74     const Move best_move = 
book->selectMove();
 
   85   const Move move = moveByBook(state);
 
   87     return MoveWithComment(move);
 
   88   return searcher->selectBestMove(state, limit, elapsed, byoyomi);
 
   94   const Move move = moveByBook(state);
 
   96     return MoveWithComment(move);
 
   98       = dynamic_cast<ComputerPlayerSelectBestMoveInTime *>(searcher.get()))
 
   99     return p->selectBestMoveInTime(state, msec);
 
  100   throw std::runtime_error(
"type error in BookPlayer::selectBestMoveInTime");
 
  107   searcher->allowSpeculativeSearch(value);
 
  114   searcher->setRootIgnoreMoves(rim, prediction);
 
  120   return searcher->stopSearchNow();