-// King and pawns vs king:
-class KPsKScalingFunction : public ScalingFunction {
-public:
- KPsKScalingFunction(Color c);
- ScaleFactor apply(const Position &pos);
-};
-
-// KBP vs KB:
-class KBPKBScalingFunction : public ScalingFunction {
-public:
- KBPKBScalingFunction(Color c);
- ScaleFactor apply(const Position &pos);
-};
-
-// KBP vs KN:
-class KBPKNScalingFunction : public ScalingFunction {
-public:
- KBPKNScalingFunction(Color c);
- ScaleFactor apply(const Position &pos);
-};
-
-// KNP vs K:
-class KNPKScalingFunction : public ScalingFunction {
-public:
- KNPKScalingFunction(Color c);
- ScaleFactor apply(const Position &pos);
-};
-
-// KP vs KP:
-class KPKPScalingFunction : public ScalingFunction {
-public:
- KPKPScalingFunction(Color c);
- ScaleFactor apply(const Position &pos);
-};
-
-
-////
-//// Constants and variables
-////
-
-extern EvaluationFunction<KXK> EvaluateKXK, EvaluateKKX; // Generic "mate lone king" eval
-extern EvaluationFunction<KBNK> EvaluateKBNK, EvaluateKKBN; // KBN vs K
-extern EvaluationFunction<KPK> EvaluateKPK, EvaluateKKP; // KP vs K
-extern EvaluationFunction<KRKP> EvaluateKRKP, EvaluateKPKR; // KR vs KP
-extern EvaluationFunction<KRKB> EvaluateKRKB, EvaluateKBKR; // KR vs KB
-extern EvaluationFunction<KRKN> EvaluateKRKN, EvaluateKNKR; // KR vs KN
-extern EvaluationFunction<KQKR> EvaluateKQKR, EvaluateKRKQ; // KQ vs KR
-extern EvaluationFunction<KBBKN> EvaluateKBBKN, EvaluateKNKBB; // KBB vs KN
-extern EvaluationFunction<KmmKm> EvaluateKmmKm; // K and two minors vs K and one or two minors:
-
-// KBP vs K:
-extern KBPKScalingFunction ScaleKBPK, ScaleKKBP;
-
-// KQ vs KRP:
-extern KQKRPScalingFunction ScaleKQKRP, ScaleKRPKQ;
-
-// KRP vs KR:
-extern KRPKRScalingFunction ScaleKRPKR, ScaleKRKRP;
-
-// KRPP vs KRP:
-extern KRPPKRPScalingFunction ScaleKRPPKRP, ScaleKRPKRPP;