X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=8934cc4833bcd5755e9f72746cd785af9c4c23c2;hp=40a2baa0099e2da6ac006cc6bc6b86c225169374;hb=628808a11382a3ac;hpb=764d3f44b68c01eeb9e7759e75aebe18488322c1 diff --git a/src/types.h b/src/types.h index 40a2baa0..8934cc48 100644 --- a/src/types.h +++ b/src/types.h @@ -119,15 +119,13 @@ enum Move { MOVE_NULL = 65 }; -struct MoveStack { - Move move; - int score; +enum MoveType { + NORMAL = 0, + PROMOTION = 1 << 14, + ENPASSANT = 2 << 14, + CASTLE = 3 << 14 }; -inline bool operator<(const MoveStack& f, const MoveStack& s) { - return f.score < s.score; -} - enum CastleRight { // Defined as in PolyGlot book hash key CASTLES_NONE = 0, WHITE_OO = 1, @@ -327,6 +325,15 @@ extern const Value PieceValueMidgame[17]; // Indexed by Piece or PieceType extern const Value PieceValueEndgame[17]; extern int SquareDistance[64][64]; +struct MoveStack { + Move move; + int score; +}; + +inline bool operator<(const MoveStack& f, const MoveStack& s) { + return f.score < s.score; +} + inline Color operator~(Color c) { return Color(c ^ 1); } @@ -335,6 +342,10 @@ inline Square operator~(Square s) { return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8 } +inline Square operator|(File f, Rank r) { + return Square((r << 3) | f); +} + inline Value mate_in(int ply) { return VALUE_MATE - ply; } @@ -359,10 +370,6 @@ inline Color color_of(Piece p) { return Color(p >> 3); } -inline Square make_square(File f, Rank r) { - return Square((r << 3) | f); -} - inline bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } @@ -408,10 +415,6 @@ inline int square_distance(Square s1, Square s2) { return SquareDistance[s1][s2]; } -inline char piece_type_to_char(PieceType pt) { - return " PNBRQK"[pt]; -} - inline char file_to_char(File f) { return char(f - FILE_A + int('a')); } @@ -432,20 +435,8 @@ inline Square to_sq(Move m) { return Square(m & 0x3F); } -inline bool is_special(Move m) { - return m & (3 << 14); -} - -inline bool is_promotion(Move m) { - return (m & (3 << 14)) == (1 << 14); -} - -inline int is_enpassant(Move m) { - return (m & (3 << 14)) == (2 << 14); -} - -inline int is_castle(Move m) { - return (m & (3 << 14)) == (3 << 14); +inline MoveType type_of(Move m) { + return MoveType(m & (3 << 14)); } inline PieceType promotion_type(Move m) {