-/// 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.
+ explicit RootMove(Move m) : pv(1, m) {}
+
+ bool operator<(const RootMove& m) const { return score > m.score; } // Ascending sort
+ bool operator==(const Move& m) const { return pv[0] == m; }
+ void insert_pv_in_tt(Position& pos);
+ bool extract_ponder_from_tt(Position& pos);
+
+ Value score = -VALUE_INFINITE;
+ Value previousScore = -VALUE_INFINITE;
+ std::vector<Move> pv;
+};
+
+typedef std::vector<RootMove> RootMoveVector;
+
+/// LimitsType 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 it's our opponent's turn to move.