VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + MAX_PLY,
VALUE_ENSURE_INTEGER_SIZE_P = INT_MAX,
- VALUE_ENSURE_INTEGER_SIZE_N = INT_MIN
+ VALUE_ENSURE_INTEGER_SIZE_N = INT_MIN,
+
+ PawnValueMidgame = 198,
+ PawnValueEndgame = 258,
+ KnightValueMidgame = 817,
+ KnightValueEndgame = 846,
+ BishopValueMidgame = 836,
+ BishopValueEndgame = 857,
+ RookValueMidgame = 1270,
+ RookValueEndgame = 1278,
+ QueenValueMidgame = 2521,
+ QueenValueEndgame = 2558
};
enum PieceType {
#undef ENABLE_OPERATORS_ON
#undef ENABLE_SAFE_OPERATORS_ON
-const Value PawnValueMidgame = Value(198);
-const Value PawnValueEndgame = Value(258);
-const Value KnightValueMidgame = Value(817);
-const Value KnightValueEndgame = Value(846);
-const Value BishopValueMidgame = Value(836);
-const Value BishopValueEndgame = Value(857);
-const Value RookValueMidgame = Value(1270);
-const Value RookValueEndgame = Value(1278);
-const Value QueenValueMidgame = Value(2521);
-const Value QueenValueEndgame = Value(2558);
-
extern const Value PieceValueMidgame[17]; // Indexed by Piece or PieceType
extern const Value PieceValueEndgame[17];
extern int SquareDistance[64][64];
return Move(to | (from << 6));
}
-inline Move make_promotion(Square from, Square to, PieceType pt) {
- return Move(to | (from << 6) | (1 << 14) | ((pt - 2) << 12)) ;
-}
-
-inline Move make_enpassant(Square from, Square to) {
- return Move(to | (from << 6) | (2 << 14));
-}
-
-inline Move make_castle(Square from, Square to) {
- return Move(to | (from << 6) | (3 << 14));
+template<MoveType T>
+inline Move make(Square from, Square to, PieceType pt = KNIGHT) {
+ return Move(to | (from << 6) | T | ((pt - KNIGHT) << 12)) ;
}
inline bool is_ok(Move m) {