X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.h;h=88090ad2227232394e9a5ce81cbb6fb6fe9535d8;hp=234da26dbf72fa2d63f39ac66b9a10f8002e6c67;hb=21de03fad7f70c90d883d21d27983a5fe15f2c49;hpb=0c9c5032e8a4aa360844202b338b1558441199a4 diff --git a/src/position.h b/src/position.h index 234da26d..88090ad2 100644 --- a/src/position.h +++ b/src/position.h @@ -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, 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); @@ -271,6 +274,9 @@ public: bool opposite_colored_bishops() const; bool has_pawn_on_7th(Color c) const; + // Current thread ID searching on the position + int thread() const; + // Reset the gamePly variable to 0 void reset_game_ply(); @@ -290,7 +296,7 @@ private: void allow_ooo(Color c); // Helper functions for doing and undoing moves - void do_capture_move(Bitboard& key, PieceType capture, Color them, Square to, bool ep); + void do_capture_move(Key& key, PieceType capture, Color them, Square to, bool ep); void do_castle_move(Move m); void undo_castle_move(Move m); void find_checkers(); @@ -323,18 +329,17 @@ private: // Other info Color sideToMove; - int gamePly; Key history[MaxGameLength]; int castleRightsMask[64]; StateInfo startState; File initialKFile, initialKRFile, initialQRFile; + int threadID; StateInfo* st; // Static variables static Key zobrist[2][8][64]; static Key zobEp[64]; static Key zobCastle[16]; - static Key zobMaterial[2][8][16]; static Key zobSideToMove; static Score PieceSquareTable[16][64]; static Key zobExclusion; @@ -558,4 +563,8 @@ inline PieceType Position::captured_piece() const { return st->capture; } +inline int Position::thread() const { + return threadID; +} + #endif // !defined(POSITION_H_INCLUDED)