X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fposition.h;h=f3bb011274e04616809c4b82018047c19d17c4d8;hb=b7cb6180cf2a6fcab81dcd1b07f9dd4e650c8ea4;hp=aaed663b79209620a490d276bc6b86a34c879d2f;hpb=1dc27f3232d21e3d43df21f99a1ee22b72bb8ba0;p=stockfish diff --git a/src/position.h b/src/position.h index aaed663b..f3bb0112 100644 --- a/src/position.h +++ b/src/position.h @@ -315,10 +315,12 @@ private: Key compute_material_key() const; // Computing incremental evaluation scores and material counts - Value mg_pst(Color c, PieceType pt, Square s) const; - Value eg_pst(Color c, PieceType pt, Square s) const; - Value compute_mg_value() const; - Value compute_eg_value() const; + enum GamePhase { + MidGame, + EndGame + }; + template Value pst(Color c, PieceType pt, Square s) const; + template Value compute_value() const; Value compute_non_pawn_material(Color c) const; // Bitboards @@ -630,8 +632,10 @@ inline Key Position::get_material_key() const { return materialKey; } -inline Value Position::mg_pst(Color c, PieceType pt, Square s) const { - return MgPieceSquareTable[piece_of_color_and_type(c, pt)][s]; +template +inline Value Position::pst(Color c, PieceType pt, Square s) const { + return (Phase == MidGame ? MgPieceSquareTable[piece_of_color_and_type(c, pt)][s] + : EgPieceSquareTable[piece_of_color_and_type(c, pt)][s]); } inline Value Position::mg_pst_delta(Move m) const { @@ -639,10 +643,6 @@ inline Value Position::mg_pst_delta(Move m) const { -MgPieceSquareTable[piece_on(move_from(m))][move_from(m)]; } -inline Value Position::eg_pst(Color c, PieceType pt, Square s) const { - return EgPieceSquareTable[piece_of_color_and_type(c, pt)][s]; -} - inline Value Position::mg_value() const { return mgValue; }