+ Value staticEval;
+ bool skipEarlyPruning;
+};
+
+/// RootMove struct is used for moves at the root of the tree. For each root move
+/// we store a score and a PV (really a refutation in the case of moves which
+/// fail low). Score is normally set at -VALUE_INFINITE for all non-pv moves.
+
+struct RootMove {
+
+ 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;