18 using namespace osl::misc;
 
   20 void qsearch(
const char *filename);
 
   22 void usage(
const char *program_name)
 
   24   std::cerr << program_name << 
" [-d depth] [-s skip] [-v] [-p] csafiles\n";
 
   32 void qsearch(
const char *filename);
 
   34 int main(
int argc, 
char **argv)
 
   36   const char *program_name = argv[0];
 
   37   bool error_flag = 
false;
 
   42   while ((c = getopt(argc, argv, 
"d:s:pvh")) != EOF)
 
   46     case 'd':   
depth = atoi(optarg);
 
   54     default:    error_flag = 
true;
 
   60   if (error_flag || (argc < 1))
 
   63   std::cerr << 
"using table record depth " << 
depth << 
"\n";
 
   68     for (
int i=0; i<argc; ++i)
 
   73   catch (std::exception& e)
 
   75     std::cerr << e.what() << 
"\n";
 
   87     std::cerr << filename;
 
   90   Record rec=CsaFile(filename).getRecord();
 
   91   NumEffectState state(rec.getInitialState());
 
   92   const vector<osl::Move> 
moves=rec.getMoves();
 
  100   Player initial_turn = state.turn();
 
  106       qsearch_t qs(core, table);
 
  109         std::cerr << i << 
" " << last_move << 
"\n";
 
  113         table.
allocate(HashKey(state), 1000);
 
  116       const int val = qs.search(state.turn(), ev, last_move, 4);
 
  117       total_cycles += clock.
stop();
 
  118       positions += qs.nodeCount();
 
  123         std::cout << 
"result ";
 
  126         std::cout << val << 
"\n";
 
  127         if (i < moves.size())
 
  133     const Move move = moves[i++];
 
  134     state.makeMove(move);
 
  137   const size_t checkmate_count = checkmate_searcher.
totalNodeCount();
 
  138   std::cerr << total_cycles << 
" / ( " << positions 
 
  139             << 
" + " << checkmate_count << 
" ) = "  
  140             << total_cycles/(double)(positions + checkmate_count) << 
"\n";