X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fendgame.h;h=43a685572aa710f15c5a9da2b037ddb23309d175;hp=011299ac6493c012f353102b1e34c0301c666308;hb=aa925a0e2905042a978860a75798398cb79b2600;hpb=d3c4618b3ac0e444ce3b9dd894b87f86a50863c5;ds=sidebyside diff --git a/src/endgame.h b/src/endgame.h index 011299ac..43a68557 100644 --- a/src/endgame.h +++ b/src/endgame.h @@ -45,6 +45,7 @@ enum EndgameType { KRKN, // KR vs KN KQKR, // KQ vs KR KBBKN, // KBB vs KN + KNNK, // KNN vs K KmmKm, // K and two minors vs K and one or two minors // Scaling functions @@ -68,6 +69,7 @@ public: EndgameFunctionBase(Color c) : strongerSide(c), weakerSide(opposite_color(c)) {} virtual ~EndgameFunctionBase() {} virtual T apply(const Position&) = 0; + Color color() const { return strongerSide; } protected: Color strongerSide, weakerSide; @@ -81,42 +83,19 @@ typedef EndgameFunctionBase EndgameScalingFunctionBase; template struct EvaluationFunction : public EndgameEvaluationFunctionBase { + typedef EndgameEvaluationFunctionBase Base; explicit EvaluationFunction(Color c): EndgameEvaluationFunctionBase(c) {} Value apply(const Position&); }; template struct ScalingFunction : public EndgameScalingFunctionBase { + typedef EndgameScalingFunctionBase Base; explicit ScalingFunction(Color c) : EndgameScalingFunctionBase(c) {} ScaleFactor apply(const Position&); }; -//// -//// Constants and variables -//// - -extern EvaluationFunction EvaluateKXK, EvaluateKKX; // Generic "mate lone king" eval -extern EvaluationFunction EvaluateKBNK, EvaluateKKBN; // KBN vs K -extern EvaluationFunction EvaluateKPK, EvaluateKKP; // KP vs K -extern EvaluationFunction EvaluateKRKP, EvaluateKPKR; // KR vs KP -extern EvaluationFunction EvaluateKRKB, EvaluateKBKR; // KR vs KB -extern EvaluationFunction EvaluateKRKN, EvaluateKNKR; // KR vs KN -extern EvaluationFunction EvaluateKQKR, EvaluateKRKQ; // KQ vs KR -extern EvaluationFunction EvaluateKBBKN, EvaluateKNKBB; // KBB vs KN -extern EvaluationFunction EvaluateKmmKm; // K and two minors vs K and one or two minors: - -extern ScalingFunction ScaleKBPK, ScaleKKBP; // KBP vs K -extern ScalingFunction ScaleKQKRP, ScaleKRPKQ; // KQ vs KRP -extern ScalingFunction ScaleKRPKR, ScaleKRKRP; // KRP vs KR -extern ScalingFunction ScaleKRPPKRP, ScaleKRPKRPP; // KRPP vs KRP -extern ScalingFunction ScaleKPsK, ScaleKKPs; // King and pawns vs king -extern ScalingFunction ScaleKBPKB, ScaleKBKBP; // KBP vs KB -extern ScalingFunction ScaleKBPPKB, ScaleKBKBPP; // KBPP vs KB -extern ScalingFunction ScaleKBPKN, ScaleKNKBP; // KBP vs KN -extern ScalingFunction ScaleKNPK, ScaleKKNP; // KNP vs K -extern ScalingFunction ScaleKPKPw, ScaleKPKPb; // KP vs KP - //// //// Prototypes ////