X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=ded55d7b80d99b6ee56267b3ce7237b6ed0aa74a;hp=8d3393faaa18b20c0fdbcafba1a7a3cee8c25fb5;hb=1e032ece92da0085000cfdde28cab05029dedce3;hpb=64a71c3c02bdadfa80bed50fe5ba96984328627a diff --git a/src/position.h b/src/position.h index 8d3393fa..ded55d7b 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,10 @@ 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 compute_keys(StateInfo* si) const; + void compute_non_pawn_material(StateInfo* si) const; + Score compute_psq_score() const; // Helper functions void do_castling(Square kfrom, Square kto, Square rfrom, Square rto); @@ -179,15 +182,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,9 +191,9 @@ 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; @@ -273,26 +267,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]; }