X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.h;h=84704b0dc5d5a29ef177cdbbc8ae65951bd6cab0;hb=a44c5cf4f77b05a03;hp=3262c757cbe05aa4ff50e07ad3711ac3ec453aab;hpb=ed04c010eb4a569532f322f5030d468380b3ab57;p=stockfish diff --git a/src/search.h b/src/search.h index 3262c757..84704b0d 100644 --- a/src/search.h +++ b/src/search.h @@ -20,11 +20,12 @@ #if !defined(SEARCH_H_INCLUDED) #define SEARCH_H_INCLUDED +#include +#include + #include "move.h" #include "types.h" -#include - class Position; struct SplitPoint; @@ -46,26 +47,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); + +} + extern void do_timer_event(); #endif // !defined(SEARCH_H_INCLUDED)