X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=9737d7614981756382ab2fc150f149fa24f95c2b;hp=ed9b8edcc6ff0ac7c20e8ce951060b0be0c83ab9;hb=48c95706c857152c72c01e144875b88ce177a4ff;hpb=20c2a314642b8fb911a8e00895544581d4ee2dda diff --git a/src/position.h b/src/position.h index ed9b8edc..9737d761 100644 --- a/src/position.h +++ b/src/position.h @@ -91,6 +91,7 @@ struct StateInfo { int castleRights, rule50; Square epSquare; Value mgValue, egValue; + Value npMaterial[2]; PieceType capture; Bitboard checkersBB; @@ -137,8 +138,8 @@ public: void print(Move m = MOVE_NONE) const; // Copying - void copy(const Position &pos); - void flipped_copy(const Position &pos); + void copy(const Position& pos); + void flipped_copy(const Position& pos); // The piece on a given square Piece piece_on(Square s) const; @@ -249,7 +250,7 @@ public: bool square_is_weak(Square s, Color c) const; // Doing and undoing moves - void setStartState(const StateInfo& st); + void saveState(); void do_move(Move m, StateInfo& st); void do_move(Move m, StateInfo& st, Bitboard dcCandidates); void undo_move(Move m); @@ -353,7 +354,6 @@ private: Color sideToMove; int gamePly; Key history[MaxGameLength]; - Value npMaterial[2]; File initialKFile, initialKRFile, initialQRFile; StateInfo startState; StateInfo* st; @@ -494,10 +494,6 @@ inline Bitboard Position::bishops_and_queens(Color c) const { return bishops_and_queens() & pieces_of_color(c); } -inline Bitboard Position::sliders_of_color(Color c) const { - return sliders() & pieces_of_color(c); -} - inline int Position::piece_count(Color c, PieceType pt) const { return pieceCount[c][pt]; } @@ -538,14 +534,14 @@ inline Bitboard Position::pawn_attacks(Color c, Square s) const { return StepAttackBB[piece_of_color_and_type(c, PAWN)][s]; } -template<> -inline Bitboard Position::piece_attacks(Square s) const { - return StepAttackBB[piece_of_color_and_type(opposite_color(sideToMove), PAWN)][s]; +template // Knight and King +inline Bitboard Position::piece_attacks(Square s) const { + return StepAttackBB[Piece][s]; } template<> -inline Bitboard Position::piece_attacks(Square s) const { - return StepAttackBB[KNIGHT][s]; +inline Bitboard Position::piece_attacks(Square s) const { + return StepAttackBB[piece_of_color_and_type(opposite_color(sideToMove), PAWN)][s]; } template<> @@ -563,11 +559,6 @@ inline Bitboard Position::piece_attacks(Square s) const { return piece_attacks(s) | piece_attacks(s); } -template<> -inline Bitboard Position::piece_attacks(Square s) const { - return StepAttackBB[KING][s]; -} - inline Bitboard Position::checkers() const { return st->checkersBB; } @@ -651,7 +642,7 @@ inline Value Position::eg_value() const { } inline Value Position::non_pawn_material(Color c) const { - return npMaterial[c]; + return st->npMaterial[c]; } inline Phase Position::game_phase() const {