CASTLING_RIGHT_NB = 16
};
-template<Color C, CastlingSide S> struct MakeCastling {
- static constexpr CastlingRight
- right = C == WHITE ? S == QUEEN_SIDE ? WHITE_OOO : WHITE_OO
- : S == QUEEN_SIDE ? BLACK_OOO : BLACK_OO;
-};
-
enum Phase {
PHASE_ENDGAME,
PHASE_MIDGAME = 128,
VALUE_MATE_IN_MAX_PLY = VALUE_MATE - 2 * MAX_PLY,
VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + 2 * MAX_PLY,
- PawnValueMg = 171, PawnValueEg = 240,
- KnightValueMg = 764, KnightValueEg = 848,
- BishopValueMg = 826, BishopValueEg = 891,
- RookValueMg = 1282, RookValueEg = 1373,
- QueenValueMg = 2500, QueenValueEg = 2670,
+ PawnValueMg = 142, PawnValueEg = 207,
+ KnightValueMg = 784, KnightValueEg = 868,
+ BishopValueMg = 828, BishopValueEg = 916,
+ RookValueMg = 1286, RookValueEg = 1378,
+ QueenValueMg = 2529, QueenValueEg = 2687,
MidgameLimit = 15258, EndgameLimit = 3915
};
inline Value& operator-=(Value& v, int i) { return v = v - i; }
/// Additional operators to add a Direction to a Square
-inline Square operator+(Square s, Direction d) { return Square(int(s) + int(d)); }
-inline Square operator-(Square s, Direction d) { return Square(int(s) - int(d)); }
-inline Square& operator+=(Square &s, Direction d) { return s = s + d; }
-inline Square& operator-=(Square &s, Direction d) { return s = s - d; }
+constexpr Square operator+(Square s, Direction d) { return Square(int(s) + int(d)); }
+constexpr Square operator-(Square s, Direction d) { return Square(int(s) - int(d)); }
+inline Square& operator+=(Square& s, Direction d) { return s = s + d; }
+inline Square& operator-=(Square& s, Direction d) { return s = s - d; }
/// Only declared but not defined. We don't want to multiply two scores due to
/// a very high risk of overflow. So user should explicitly convert to integer.
assert(eg_value(result) == (i * eg_value(s)));
assert(mg_value(result) == (i * mg_value(s)));
- assert((i == 0) || (result / i) == s );
+ assert((i == 0) || (result / i) == s);
return result;
}
return PieceType(((m >> 12) & 3) + KNIGHT);
}
-inline Move make_move(Square from, Square to) {
+constexpr Move make_move(Square from, Square to) {
return Move((from << 6) + to);
}