Use a Thread instead of an array index
[stockfish] / src / position.h
index b51002eb5eb929253188db27072bc36101638539..4713094d537ea0f89b3ac44bc7cd3fe7e0f2ac21 100644 (file)
@@ -29,6 +29,7 @@
 /// The checkInfo struct is initialized at c'tor time and keeps info used
 /// to detect if a move gives check.
 class Position;
+class Thread;
 
 struct CheckInfo {
 
@@ -90,12 +91,12 @@ class Position {
 
 public:
   Position() {}
-  Position(const Position& pos, int th) { copy(pos, th); }
-  Position(const std::string& fen, bool isChess960, int th);
+  Position(const Position& p, Thread* t) { copy(p, t); }
+  Position(const std::string& f, bool c960, Thread* t) { from_fen(f, c960, t); }
 
   // Text input/output
-  void copy(const Position& pos, int th);
-  void from_fen(const std::string& fen, bool isChess960);
+  void copy(const Position& pos, Thread* th);
+  void from_fen(const std::string& fen, bool isChess960, Thread* th);
   const std::string to_fen() const;
   void print(Move m = MOVE_NONE) const;
 
@@ -175,7 +176,7 @@ public:
   Color side_to_move() const;
   int startpos_ply_counter() const;
   bool is_chess960() const;
-  int this_thread() const;
+  Thread& this_thread() const;
   int64_t nodes_searched() const;
   void set_nodes_searched(int64_t n);
   template<bool SkipRepetition> bool is_draw() const;
@@ -223,7 +224,7 @@ private:
   int64_t nodes;
   int startPosPly;
   Color sideToMove;
-  int threadID;
+  Thread* thisThread;
   StateInfo* st;
   int chess960;
 
@@ -433,8 +434,8 @@ inline PieceType Position::captured_piece_type() const {
   return st->capturedType;
 }
 
-inline int Position::this_thread() const {
-  return threadID;
+inline Thread& Position::this_thread() const {
+  return *thisThread;
 }
 
 #endif // !defined(POSITION_H_INCLUDED)