- bool is_available_to(int master) const;
- void idle_loop(SplitPoint* sp);
- void main_loop();
- void timer_loop();
-
- SplitPoint splitPoints[MAX_ACTIVE_SPLIT_POINTS];
- MaterialInfoTable materialTable;
- PawnInfoTable pawnTable;
- int threadID;
+ bool is_available_to(const Thread* master) const;
+ ExtMove* get_moves_array() { return &movePages[curPage += MAX_MOVES]; }
+ void free_moves_array() { curPage -= MAX_MOVES; }
+
+ template <bool Fake>
+ void split(Position& pos, const Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove,
+ Depth depth, Move threatMove, int moveCount, MovePicker* movePicker, int nodeType, bool cutNode);
+
+ SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
+ Material::Table materialTable;
+ Endgames endgames;
+ Pawns::Table pawnsTable;
+ Position* activePosition;
+ std::vector<ExtMove> movePages;
+ int curPage;
+ size_t idx;