- // update_pv() is called whenever a search returns a value > alpha.
- // It updates the PV in the SearchStack object corresponding to the
- // current node.
-
- void update_pv(SearchStack* ss, int ply) {
-
- assert(ply >= 0 && ply < PLY_MAX);
-
- int p;
-
- ss->pv[ply] = ss->currentMove;
-
- for (p = ply + 1; (ss+1)->pv[p] != MOVE_NONE; p++)
- ss->pv[p] = (ss+1)->pv[p];
-
- ss->pv[p] = MOVE_NONE;
- }
-
-
- // sp_update_pv() is a variant of update_pv for use at split points. The
- // difference between the two functions is that sp_update_pv also updates
- // the PV at the parent node.
-
- void sp_update_pv(SearchStack* pss, SearchStack* ss, int ply) {
-
- assert(ply >= 0 && ply < PLY_MAX);
-
- int p;
-
- ss->pv[ply] = pss->pv[ply] = ss->currentMove;
-
- for (p = ply + 1; (ss+1)->pv[p] != MOVE_NONE; p++)
- ss->pv[p] = pss->pv[p] = (ss+1)->pv[p];
-
- ss->pv[p] = pss->pv[p] = MOVE_NONE;
- }
-