- MainThread* main() { return static_cast<MainThread*>(at(0)); }
- void read_uci_options();
- void start_thinking(const Position&, const Search::LimitsType&, Search::StateStackPtr&);
- int64_t nodes_searched();
+ MainThread* main() const { return static_cast<MainThread*>(front()); }
+ uint64_t nodes_searched() const { return accumulate(&Thread::nodes); }
+ uint64_t tb_hits() const { return accumulate(&Thread::tbHits); }
+ Thread* get_best_thread() const;
+ void start_searching();
+ void wait_for_search_finished() const;
+
+ std::atomic_bool stop, increaseDepth;
+
+private:
+ StateListPtr setupStates;
+
+ uint64_t accumulate(std::atomic<uint64_t> Thread::* member) const {
+
+ uint64_t sum = 0;
+ for (Thread* th : *this)
+ sum += (th->*member).load(std::memory_order_relaxed);
+ return sum;
+ }