- void evaluate_knight(const Position &p, Square s, Color us, EvalInfo &ei);
- void evaluate_bishop(const Position &p, Square s, Color us, EvalInfo &ei);
- void evaluate_rook(const Position &p, Square s, Color us, EvalInfo &ei);
- void evaluate_queen(const Position &p, Square s, Color us, EvalInfo &ei);
- void evaluate_king(const Position &p, Square s, Color us, EvalInfo &ei);
-
- void evaluate_passed_pawns(const Position &pos, EvalInfo &ei);
- void evaluate_trapped_bishop_a7h7(const Position &pos, Square s, Color us,
- EvalInfo &ei);
- void evaluate_trapped_bishop_a1h1(const Position &pos, Square s, Color us,
- EvalInfo &ei);
-
- void evaluate_space(const Position &p, Color us, EvalInfo &ei);
- inline Value apply_weight(Value v, int w);
- Value scale_by_game_phase(Value mv, Value ev, Phase ph, const ScaleFactor sf[]);
+ template<bool HasPopCnt>
+ Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID);
+
+ template<Color Us, bool HasPopCnt>
+ void evaluate_pieces_of_color(const Position& pos, EvalInfo& ei);