X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fendgame.h;h=e35c7b0a1036d8f359e21084a008930036ff61ce;hp=e40b4050756fee4b2fb8489b1a599ae6004aba43;hb=c2a4856f9e9aad8122f2386acdacf7aa385cfc1b;hpb=b5d5646c840d63710552fdaf2521a054dd3b8a18 diff --git a/src/endgame.h b/src/endgame.h index e40b4050..e35c7b0a 100644 --- a/src/endgame.h +++ b/src/endgame.h @@ -32,6 +32,7 @@ enum EndgameType { // Evaluation functions + KXK, // Generic "mate lone king" eval KBNK, // KBN vs K KPK, // KP vs K @@ -43,7 +44,9 @@ enum EndgameType { KNNK, // KNN vs K KmmKm, // K and two minors vs K and one or two minors + // Scaling functions + KBPsK, // KB+pawns vs K KQKRPs, // KQ vs KR+pawns KRPKR, // KRP vs KR @@ -57,28 +60,28 @@ enum EndgameType { }; -/// Base and derived template class for endgame evaluation and scaling functions +/// Base and derived templates for endgame evaluation and scaling functions template struct EndgameBase { typedef EndgameBase Base; - EndgameBase(Color c) : strongerSide(c), weakerSide(opposite_color(c)) {} virtual ~EndgameBase() {} + virtual Color color() const = 0; virtual T apply(const Position&) const = 0; - Color color() const { return strongerSide; } - -protected: - Color strongerSide, weakerSide; }; template struct Endgame : public EndgameBase { - explicit Endgame(Color c): EndgameBase(c) {} + explicit Endgame(Color c) : strongerSide(c), weakerSide(opposite_color(c)) {} + Color color() const { return strongerSide; } T apply(const Position&) const; + +private: + Color strongerSide, weakerSide; }; @@ -88,8 +91,8 @@ struct Endgame : public EndgameBase { class Endgames { - typedef std::map*> EFMap; - typedef std::map*> SFMap; + typedef std::map* > EFMap; + typedef std::map* > SFMap; public: Endgames();