X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.h;h=53e7444c8ad205c5bb6cc34ce22e4b2009621d1f;hb=81cd417b4584b0e3830940c5cb122c898afde08a;hp=3262c757cbe05aa4ff50e07ad3711ac3ec453aab;hpb=ed04c010eb4a569532f322f5030d468380b3ab57;p=stockfish diff --git a/src/search.h b/src/search.h index 3262c757..53e7444c 100644 --- a/src/search.h +++ b/src/search.h @@ -20,11 +20,11 @@ #if !defined(SEARCH_H_INCLUDED) #define SEARCH_H_INCLUDED -#include "move.h" -#include "types.h" - +#include #include +#include "types.h" + class Position; struct SplitPoint; @@ -46,26 +46,35 @@ struct SearchStack { int skipNullMove; }; +namespace Search { /// The SearchLimits struct stores information sent by GUI about available time /// to search the current move, maximum depth/time, if we are in analysis mode /// or if we have to ponder while is our opponent's side to move. -struct SearchLimits { +struct LimitsType { + LimitsType() { memset(this, 0, sizeof(LimitsType)); } bool useTimeManagement() const { return !(maxTime | maxDepth | maxNodes | infinite); } int time, increment, movesToGo, maxTime, maxDepth, maxNodes, infinite, ponder; }; -extern SearchLimits Limits; -extern std::vector SearchMoves; -extern Position* RootPosition; +struct SignalsType { + bool stopOnPonderhit, firstRootMove, stop, failedLowAtRoot; +}; + +extern volatile SignalsType Signals; +extern LimitsType Limits; +extern std::vector RootMoves; +extern Position RootPosition; -extern void init_search(); +extern void init(); extern int64_t perft(Position& pos, Depth depth); extern void think(); -extern void uci_async_command(const std::string& cmd); + +} // namespace + extern void do_timer_event(); #endif // !defined(SEARCH_H_INCLUDED)