X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftypes.h;h=cf0677799c6ea34b5bcf6271715ecd71bf90ca27;hb=500b9b0eb3b20ef58ff1280a089ab2ef1e3c6436;hp=86a86d195ccf25b4e6f1f5ce3e6295c856bafa5d;hpb=f45eee318bbe0fe1465bda80bf62bc8b3bc7d07c;p=stockfish diff --git a/src/types.h b/src/types.h index 86a86d19..cf067779 100644 --- a/src/types.h +++ b/src/types.h @@ -88,7 +88,7 @@ const bool Is64Bit = false; typedef uint64_t Key; typedef uint64_t Bitboard; -const int MAX_MOVES = 192; +const int MAX_MOVES = 256; const int MAX_PLY = 100; const int MAX_PLY_PLUS_6 = MAX_PLY + 6; @@ -97,7 +97,7 @@ const int MAX_PLY_PLUS_6 = MAX_PLY + 6; /// bit 0- 5: destination square (from 0 to 63) /// bit 6-11: origin square (from 0 to 63) /// bit 12-13: promotion piece type - 2 (from KNIGHT-2 to QUEEN-2) -/// bit 14-15: special move flag: promotion (1), en passant (2), castle (3) +/// bit 14-15: special move flag: promotion (1), en passant (2), castling (3) /// /// Special cases are MOVE_NONE and MOVE_NULL. We can sneak these in because in /// any normal move destination square is always different from origin square @@ -112,17 +112,17 @@ enum MoveType { NORMAL, PROMOTION = 1 << 14, ENPASSANT = 2 << 14, - CASTLE = 3 << 14 + CASTLING = 3 << 14 }; -enum CastleRight { // Defined as in PolyGlot book hash key - CASTLES_NONE, +enum CastlingFlag { // Defined as in PolyGlot book hash key + NO_CASTLING, WHITE_OO, WHITE_OOO = WHITE_OO << 1, BLACK_OO = WHITE_OO << 2, BLACK_OOO = WHITE_OO << 3, - ALL_CASTLES = WHITE_OO | WHITE_OOO | BLACK_OO | BLACK_OOO, - CASTLE_RIGHT_NB = 16 + ANY_CASTLING = WHITE_OO | WHITE_OOO | BLACK_OO | BLACK_OOO, + CASTLING_FLAG_NB = 16 }; enum CastlingSide { @@ -194,9 +194,9 @@ enum Depth { ONE_PLY = 2, DEPTH_ZERO = 0 * ONE_PLY, - DEPTH_QS_CHECKS = -1 * ONE_PLY, - DEPTH_QS_NO_CHECKS = -2 * ONE_PLY, - DEPTH_QS_RECAPTURES = -7 * ONE_PLY, + DEPTH_QS_CHECKS = 0 * ONE_PLY, + DEPTH_QS_NO_CHECKS = -1 * ONE_PLY, + DEPTH_QS_RECAPTURES = -5 * ONE_PLY, DEPTH_NONE = -127 * ONE_PLY }; @@ -274,15 +274,15 @@ inline T operator-(const T d1, const T d2) { return T(int(d1) - int(d2)); } \ inline T operator*(int i, const T d) { return T(i * int(d)); } \ inline T operator*(const T d, int i) { return T(int(d) * i); } \ inline T operator-(const T d) { return T(-int(d)); } \ -inline T& operator+=(T& d1, const T d2) { d1 = d1 + d2; return d1; } \ -inline T& operator-=(T& d1, const T d2) { d1 = d1 - d2; return d1; } \ -inline T& operator*=(T& d, int i) { d = T(int(d) * i); return d; } +inline T& operator+=(T& d1, const T d2) { return d1 = d1 + d2; } \ +inline T& operator-=(T& d1, const T d2) { return d1 = d1 - d2; } \ +inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } #define ENABLE_OPERATORS_ON(T) ENABLE_SAFE_OPERATORS_ON(T) \ -inline T operator++(T& d, int) { d = T(int(d) + 1); return d; } \ -inline T operator--(T& d, int) { d = T(int(d) - 1); return d; } \ +inline T& operator++(T& d) { return d = T(int(d) + 1); } \ +inline T& operator--(T& d) { return d = T(int(d) - 1); } \ inline T operator/(const T d, int i) { return T(int(d) / i); } \ -inline T& operator/=(T& d, int i) { d = T(int(d) / i); return d; } +inline T& operator/=(T& d, int i) { return d = T(int(d) / i); } ENABLE_OPERATORS_ON(Value) ENABLE_OPERATORS_ON(PieceType) @@ -323,11 +323,11 @@ inline bool operator<(const ExtMove& f, const ExtMove& s) { } inline Color operator~(Color c) { - return Color(c ^ 1); + return Color(c ^ BLACK); } inline Square operator~(Square s) { - return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8 + return Square(s ^ SQ_A8); // Vertical flip SQ_A1 -> SQ_A8 } inline Square operator|(File f, Rank r) { @@ -346,8 +346,8 @@ inline Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) | pt); } -inline CastleRight make_castle_right(Color c, CastlingSide s) { - return CastleRight(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); +inline CastlingFlag make_castling_flag(Color c, CastlingSide s) { + return CastlingFlag(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); } inline PieceType type_of(Piece p) { @@ -371,10 +371,6 @@ inline Rank rank_of(Square s) { return Rank(s >> 3); } -inline Square mirror(Square s) { - return Square(s ^ 7); // Horizontal flip SQ_A1 -> SQ_H1 -} - inline Square relative_square(Color c, Square s) { return Square(s ^ (c * 56)); }