3 #ifndef OSL_ALPHA_BETA2_H 
    4 #define OSL_ALPHA_BETA2_H 
   20 #include <boost/scoped_array.hpp> 
   21 #include <boost/noncopyable.hpp> 
   28     class SimpleHashRecord;
 
   29     class SimpleHashTable;
 
   31     struct MoveWithComment;
 
   66     template <
class EvalT>
 
   78         static int value = 300 + rootLimitBias();
 
   97         : eval(s), root_ignore_moves(0), prediction_for_speculative_search(false),
 
  141     template <
class EvalT>
 
  143       : 
public SearchBase<EvalT,SimpleHashTable,CountRecorder,RealizationProbability>,
 
  156       boost::shared_ptr<AlphaBeta2Parallel<EvalT> > 
shared;
 
  192       void showPV(std::ostream&, 
int, 
Move, 
char stable) 
const;
 
  257       template <Player P> 
struct SearchJob;
 
  258       struct SearchJobData;
 
  260       friend struct Shared;
 
  261       friend struct SearchJob<
BLACK>;
 
  262       friend struct SearchJob<
WHITE>;
 
  265       void examineMovesRootPar(
const MoveLogProbVector&, 
size_t, 
Window,
 
  267       void examineMovesRootPar(
int tree_id);
 
  269       void testMoveRoot(
int tree_id, 
const MoveLogProb&);
 
  274       void examineMovesOther(
int tree_id);
 
  276       bool testMoveOther(
int tree_id, 
const MoveLogProb&, 
size_t index, 
bool in_pv);
 
  283     template <
class EvalT>
 
  313           return alphaBetaSearchRoot<BLACK>(window, best_move, 
limit);
 
  315           return alphaBetaSearchRoot<WHITE>(window, best_move, 
limit);
 
  324                                       int initialLimit=600,
 
  325                                       size_t nodeLimit=1600000,
 
  331         assert(!prediction || rim);