inline Move pick_best(ExtMove* begin, ExtMove* end)
{
std::swap(*begin, *std::max_element(begin, end));
- return begin->move;
+ return *begin;
}
} // namespace
cur = killers;
endMoves = cur + 2;
- killers[0].move = ss->killers[0];
- killers[1].move = ss->killers[1];
+ killers[0] = ss->killers[0];
+ killers[1] = ss->killers[1];
killers[2].move = killers[3].move = MOVE_NONE;
killers[4].move = killers[5].move = MOVE_NONE;
// Be sure countermoves and followupmoves are different from killers
for (int i = 0; i < 2; ++i)
- if ( countermoves[i] != killers[0].move
- && countermoves[i] != killers[1].move)
- (endMoves++)->move = countermoves[i];
+ if ( countermoves[i] != killers[0]
+ && countermoves[i] != killers[1])
+ *endMoves++ = countermoves[i];
for (int i = 0; i < 2; ++i)
- if ( followupmoves[i] != killers[0].move
- && followupmoves[i] != killers[1].move
- && followupmoves[i] != killers[2].move
- && followupmoves[i] != killers[3].move)
- (endMoves++)->move = followupmoves[i];
+ if ( followupmoves[i] != killers[0]
+ && followupmoves[i] != killers[1]
+ && followupmoves[i] != killers[2]
+ && followupmoves[i] != killers[3])
+ *endMoves++ = followupmoves[i];
break;
case QUIETS_1_S1:
/* Fall through */
case STOP:
- endMoves = cur + 1; // Avoid another next_phase() call
+ endMoves = cur + 1; // Avoid another generate_next_stage() call
break;
default:
return move;
// Losing capture, move it to the tail of the array
- (endBadCaptures--)->move = move;
+ *endBadCaptures-- = move;
}
break;
case QUIETS_1_S1: case QUIETS_2_S1:
move = *cur++;
if ( move != ttMove
- && move != killers[0].move
- && move != killers[1].move
- && move != killers[2].move
- && move != killers[3].move
- && move != killers[4].move
- && move != killers[5].move)
+ && move != killers[0]
+ && move != killers[1]
+ && move != killers[2]
+ && move != killers[3]
+ && move != killers[4]
+ && move != killers[5])
return move;
break;