VALUE StoreValueOfPosition(POSITION position, VALUE value) { showStatus(Update); if(gSymmetries) position = gCanonicalPosition(position); AnalyzePosition(position,value); return db_functions->put_value(position,value); }
UINT64 SetSlot( UINT64 position, UINT8 index, UINT64 value ) { if(gSymmetries) position = gCanonicalPosition(position); if(index == gValueSlot) AnalyzePosition(position, value); return db_functions->set_slice_slot(position, index, value); }
// preconditions: computer has no book void CalcMPCStats(CPlayerComputer* computer, int height) { FILE* cpFile; CBitBoard bb; int nbbs[60], i, iPos; const int iPosMin=159; // start at this line, useful if stopping and restarting CQPosition pos; CCalcParams *cpOld=computer->pcp; CHeightInfo hi(height, 0, false); CCalcParamsFixedHeight cp(hi); computer->pcp=&cp; computer->cd.fsPrint=0; // header info std::cout << 3 << " " << height << " " << kStoneValue << "\n"; // clear computer's and params //computer->cd.iPruneMidgame=computer->cd.iPruneEndgame=0; // clear position counts and init for (i=0; i<60; i++) nbbs[i]=0; iPos=0; // read positions from file; analyze if we should std::string fn(fnBaseDir); fn+="captured.pos"; if ((cpFile=fopen(fn.c_str(),"rb"))) { while (bb.Read(cpFile)) { pos.Initialize(bb, true); if (nbbs[bb.NEmpty()]++ < kMaxPositions) if (iPos++>=iPosMin) AnalyzePosition(computer, pos); } fclose(cpFile); } // restore computer's book and params computer->pcp=cpOld; }