X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=9976eacb21826dafd57eed8d372fa22436e079c3;hp=be43c2e41e2bf13c2926f2a163f54725726f9cae;hb=d6904157aab50f7b2a53843f681b232247e866e2;hpb=35782079749c8f16560a13b9740d1a76654c6fe2 diff --git a/src/position.h b/src/position.h index be43c2e4..9976eacb 100644 --- a/src/position.h +++ b/src/position.h @@ -51,7 +51,7 @@ //// /// FEN string for the initial position -const std::string StartPosition = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; +const std::string StartPositionFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; /// Maximum number of plies per game (220 should be enough, because the /// maximum search depth is 100, and during position setup we reset the @@ -270,6 +270,8 @@ public: // Number of plies since the last non-reversible move int rule_50_counter() const; + int startpos_ply_counter() const; + // Other properties of the position bool opposite_colored_bishops() const; bool has_pawn_on_7th(Color c) const; @@ -280,6 +282,8 @@ public: // Reset the gamePly variable to 0 void reset_game_ply(); + void inc_startpos_ply_counter(); + // Position consistency check, for debugging bool is_ok(int* failedStep = NULL) const; @@ -294,6 +298,7 @@ private: void put_piece(Piece p, Square s); void allow_oo(Color c); void allow_ooo(Color c); + bool set_castling_rights(char token); // Helper functions for doing and undoing moves void do_capture_move(Key& key, PieceType capture, Color them, Square to, bool ep); @@ -333,6 +338,7 @@ private: int castleRightsMask[64]; StateInfo startState; File initialKFile, initialKRFile, initialQRFile; + int startPosPlyCounter; int threadID; StateInfo* st; @@ -363,7 +369,7 @@ inline PieceType Position::type_of_piece_on(Square s) const { } inline bool Position::square_is_empty(Square s) const { - return piece_on(s) == EMPTY; + return piece_on(s) == NO_PIECE; } inline bool Position::square_is_occupied(Square s) const { @@ -535,11 +541,16 @@ inline int Position::rule_50_counter() const { return st->rule50; } +inline int Position::startpos_ply_counter() const { + + return startPosPlyCounter; +} + inline bool Position::opposite_colored_bishops() const { return piece_count(WHITE, BISHOP) == 1 && piece_count(BLACK, BISHOP) == 1 - && square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0)); + && !same_color_squares(piece_list(WHITE, BISHOP, 0), piece_list(BLACK, BISHOP, 0)); } inline bool Position::has_pawn_on_7th(Color c) const {