X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=826fa13bfa85233cfe7931e4606e237ffa6bede8;hp=cc816910a3d0320f8e866f12b041dca0d5549ce4;hb=6e06db93fde225eeae75dc8b3d5d1432c5cd14a8;hpb=6716337f407ad6586b636aca72ee673655822137 diff --git a/src/position.h b/src/position.h index cc816910..826fa13b 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 @@ -68,7 +68,7 @@ const int MaxGameLength = 220; struct CheckInfo { - CheckInfo(const Position&); + explicit CheckInfo(const Position&); Bitboard dcCandidates; Bitboard checkSq[8]; @@ -100,7 +100,7 @@ enum Phase { struct StateInfo { Key pawnKey, materialKey; - int castleRights, rule50, ply, pliesFromNull; + int castleRights, rule50, gamePly, pliesFromNull; Square epSquare; Score value; Value npMaterial[2]; @@ -139,6 +139,9 @@ class Position { friend class MaterialInfo; friend class EndgameFunctions; + Position(); // No default or copy c'tor allowed + Position(const Position& pos); + public: enum GamePhase { MidGame, @@ -146,9 +149,9 @@ public: }; // Constructors - Position(); - explicit Position(const Position& pos); - explicit Position(const std::string& fen); + explicit Position(int threadID); + Position(const Position& pos, int threadID); + Position(const std::string& fen, int threadID); // Text input/output void from_fen(const std::string& fen); @@ -255,7 +258,7 @@ public: // Incremental evaluation Score value() const; Value non_pawn_material(Color c) const; - Score pst_delta(Piece piece, Square from, Square to) const; + static Score pst_delta(Piece piece, Square from, Square to); // Game termination checks bool is_mate() const; @@ -271,9 +274,11 @@ public: bool opposite_colored_bishops() const; bool has_pawn_on_7th(Color c) const; - // Game ply information - int ply() const; - void reset_ply(); + // Current thread ID searching on the position + int thread() const; + + // Reset the gamePly variable to 0 + void reset_game_ply(); // Position consistency check, for debugging bool is_ok(int* failedStep = NULL) const; @@ -305,7 +310,7 @@ private: Key compute_material_key() const; // Computing incremental evaluation scores and material counts - Score pst(Color c, PieceType pt, Square s) const; + static Score pst(Color c, PieceType pt, Square s); Score compute_value() const; Value compute_non_pawn_material(Color c) const; @@ -328,6 +333,7 @@ private: int castleRightsMask[64]; StateInfo startState; File initialKFile, initialKRFile, initialQRFile; + int threadID; StateInfo* st; // Static variables @@ -501,11 +507,11 @@ inline Key Position::get_material_key() const { return st->materialKey; } -inline Score Position::pst(Color c, PieceType pt, Square s) const { +inline Score Position::pst(Color c, PieceType pt, Square s) { return PieceSquareTable[piece_of_color_and_type(c, pt)][s]; } -inline Score Position::pst_delta(Piece piece, Square from, Square to) const { +inline Score Position::pst_delta(Piece piece, Square from, Square to) { return PieceSquareTable[piece][to] - PieceSquareTable[piece][from]; } @@ -557,8 +563,8 @@ inline PieceType Position::captured_piece() const { return st->capture; } -inline int Position::ply() const { - return st->ply; +inline int Position::thread() const { + return threadID; } #endif // !defined(POSITION_H_INCLUDED)