X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=f85ad9a92c9e2c8be9ff0f718ff5552b8fe8f1c5;hp=8093a713f5148204359b51aa7dd242748e310b44;hb=48e39c5c8e671a37f09732d4a55d93d5e2d38550;hpb=ff9e49bac958956d30dd8afbc5f191689141874d diff --git a/src/types.h b/src/types.h index 8093a713..f85ad9a9 100644 --- a/src/types.h +++ b/src/types.h @@ -201,9 +201,10 @@ enum Depth { ONE_PLY = 2, - DEPTH_ZERO = 0 * ONE_PLY, - DEPTH_QS_CHECKS = -1 * ONE_PLY, - DEPTH_QS_NO_CHECKS = -2 * ONE_PLY, + DEPTH_ZERO = 0 * ONE_PLY, + DEPTH_QS_CHECKS = -1 * ONE_PLY, + DEPTH_QS_NO_CHECKS = -2 * ONE_PLY, + DEPTH_QS_RECAPTURES = -4 * ONE_PLY, DEPTH_NONE = -127 * ONE_PLY }; @@ -251,6 +252,15 @@ enum ScaleFactor { SCALE_FACTOR_NONE = 255 }; +enum CastleRight { + CASTLES_NONE = 0, + WHITE_OO = 1, + BLACK_OO = 2, + WHITE_OOO = 4, + BLACK_OOO = 8, + ALL_CASTLES = 15 +}; + /// Score enum keeps a midgame and an endgame value in a single /// integer (enum), first LSB 16 bits are used to store endgame @@ -336,6 +346,17 @@ const Value RookValueEndgame = Value(0x4FE); const Value QueenValueMidgame = Value(0x9D9); const Value QueenValueEndgame = Value(0x9FE); +extern const Value PieceValueMidgame[17]; +extern const Value PieceValueEndgame[17]; + +inline Value piece_value_midgame(Piece p) { + return PieceValueMidgame[p]; +} + +inline Value piece_value_endgame(Piece p) { + return PieceValueEndgame[p]; +} + inline Value value_mate_in(int ply) { return VALUE_MATE - ply; } @@ -348,11 +369,11 @@ inline Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) | pt); } -inline PieceType type_of_piece(Piece p) { +inline PieceType piece_type(Piece p) { return PieceType(p & 7); } -inline Color color_of_piece(Piece p) { +inline Color piece_color(Piece p) { return Color(p >> 3); } @@ -360,18 +381,6 @@ inline Color opposite_color(Color c) { return Color(c ^ 1); } -inline bool color_is_ok(Color c) { - return c == WHITE || c == BLACK; -} - -inline bool piece_type_is_ok(PieceType pt) { - return pt >= PAWN && pt <= KING; -} - -inline bool piece_is_ok(Piece p) { - return piece_type_is_ok(type_of_piece(p)) && color_is_ok(color_of_piece(p)); -} - inline char piece_type_to_char(PieceType pt) { static const char ch[] = " PNBRQK"; return ch[pt]; @@ -381,6 +390,10 @@ inline Square make_square(File f, Rank r) { return Square((r << 3) | f); } +inline bool square_is_ok(Square s) { + return s >= SQ_A1 && s <= SQ_H8; +} + inline File square_file(Square s) { return File(s & 7); } @@ -430,18 +443,10 @@ inline int square_distance(Square s1, Square s2) { return Max(file_distance(s1, s2), rank_distance(s1, s2)); } -inline File file_from_char(char c) { - return File(c - 'a') + FILE_A; -} - inline char file_to_char(File f) { return char(f - FILE_A + int('a')); } -inline Rank rank_from_char(char c) { - return Rank(c - '1') + RANK_1; -} - inline char rank_to_char(Rank r) { return char(r - RANK_1 + int('1')); } @@ -451,18 +456,6 @@ inline const std::string square_to_string(Square s) { return std::string(ch); } -inline bool file_is_ok(File f) { - return f >= FILE_A && f <= FILE_H; -} - -inline bool rank_is_ok(Rank r) { - return r >= RANK_1 && r <= RANK_8; -} - -inline bool square_is_ok(Square s) { - return s >= SQ_A1 && s <= SQ_H8; -} - inline Square pawn_push(Color c) { return c == WHITE ? DELTA_N : DELTA_S; }