X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=935d86b205c82ee2ff3e2ab81ca3b5edaafc053e;hp=03aa97d83a6cec9fccae25ddac607fbce14c6030;hb=6f3d78769257c9ef1678a35b0b7b48629e0aab1e;hpb=7b0a2f2a90b63d9e5e092786fbfb54cd8ad3d8e5 diff --git a/src/position.h b/src/position.h index 03aa97d8..935d86b2 100644 --- a/src/position.h +++ b/src/position.h @@ -51,7 +51,7 @@ struct CheckInfo { struct StateInfo { Key pawnKey, materialKey; Value npMaterial[COLOR_NB]; - int castlingFlags, rule50, pliesFromNull; + int castlingRights, rule50, pliesFromNull; Score psq; Square epSquare; @@ -100,10 +100,10 @@ public: template const Square* list(Color c) const; // Castling - int can_castle(CastlingFlag f) const; int can_castle(Color c) const; - bool castling_impeded(Color c, CastlingSide s) const; - Square castling_rook_square(Color c, CastlingSide s) const; + int can_castle(CastlingRight cr) const; + bool castling_impeded(CastlingRight cr) const; + Square castling_rook_square(CastlingRight cr) const; // Checking Bitboard checkers() const; @@ -170,7 +170,8 @@ public: private: // Initialization helpers (used while setting up a position) void clear(); - void set_castling_flag(Color c, Square rfrom); + void set_castling_right(Color c, Square rfrom); + void set_state(StateInfo* si) const; // Helper functions void do_castling(Square kfrom, Square kto, Square rfrom, Square rto); @@ -179,15 +180,6 @@ private: void remove_piece(Square s, Color c, PieceType pt); void move_piece(Square from, Square to, Color c, PieceType pt); - // Computing hash keys from scratch (for initialization and debugging) - Key compute_key() const; - Key compute_pawn_key() const; - Key compute_material_key() const; - - // Computing incremental evaluation scores and material counts - Score compute_psq_score() const; - Value compute_non_pawn_material(Color c) const; - // Board and pieces Piece board[SQUARE_NB]; Bitboard byTypeBB[PIECE_TYPE_NB]; @@ -197,16 +189,16 @@ private: int index[SQUARE_NB]; // Other info - int castlingFlagsMask[SQUARE_NB]; - Square castlingRookSquare[COLOR_NB][CASTLING_SIDE_NB]; - Bitboard castlingPath[COLOR_NB][CASTLING_SIDE_NB]; + int castlingRightsMask[SQUARE_NB]; + Square castlingRookSquare[CASTLING_RIGHT_NB]; + Bitboard castlingPath[CASTLING_RIGHT_NB]; StateInfo startState; uint64_t nodes; int gamePly; Color sideToMove; Thread* thisThread; StateInfo* st; - int chess960; + bool chess960; }; inline uint64_t Position::nodes_searched() const { @@ -273,26 +265,26 @@ inline Square Position::king_square(Color c) const { return pieceList[c][KING][0]; } -inline int Position::can_castle(CastlingFlag f) const { - return st->castlingFlags & f; +inline int Position::can_castle(CastlingRight cr) const { + return st->castlingRights & cr; } inline int Position::can_castle(Color c) const { - return st->castlingFlags & ((WHITE_OO | WHITE_OOO) << (2 * c)); + return st->castlingRights & ((WHITE_OO | WHITE_OOO) << (2 * c)); } -inline bool Position::castling_impeded(Color c, CastlingSide s) const { - return byTypeBB[ALL_PIECES] & castlingPath[c][s]; +inline bool Position::castling_impeded(CastlingRight cr) const { + return byTypeBB[ALL_PIECES] & castlingPath[cr]; } -inline Square Position::castling_rook_square(Color c, CastlingSide s) const { - return castlingRookSquare[c][s]; +inline Square Position::castling_rook_square(CastlingRight cr) const { + return castlingRookSquare[cr]; } template inline Bitboard Position::attacks_from(Square s) const { - return Pt == BISHOP || Pt == ROOK ? attacks_bb(s, pieces()) + return Pt == BISHOP || Pt == ROOK ? attacks_bb(s, byTypeBB[ALL_PIECES]) : Pt == QUEEN ? attacks_from(s) | attacks_from(s) : StepAttacksBB[Pt][s]; } @@ -403,7 +395,6 @@ inline void Position::put_piece(Square s, Color c, PieceType pt) { byTypeBB[ALL_PIECES] |= s; byTypeBB[pt] |= s; byColorBB[c] |= s; - pieceCount[c][ALL_PIECES]++; index[s] = pieceCount[c][pt]++; pieceList[c][pt][index[s]] = s; } @@ -432,7 +423,6 @@ inline void Position::remove_piece(Square s, Color c, PieceType pt) { byTypeBB[pt] ^= s; byColorBB[c] ^= s; /* board[s] = NO_PIECE; */ // Not needed, will be overwritten by capturing - pieceCount[c][ALL_PIECES]--; Square lastSquare = pieceList[c][pt][--pieceCount[c][pt]]; index[lastSquare] = index[s]; pieceList[c][pt][index[lastSquare]] = lastSquare;