#ifndef CHESS_ENGINE_PRINCIPALVARIATION_HPP #define CHESS_ENGINE_PRINCIPALVARIATION_HPP #include "Move.hpp" #include "Piece.hpp" #include "Board.hpp" #include #include #include class PrincipalVariation { public: using MoveIter = std::vector::const_iterator; PrincipalVariation() = default; PrincipalVariation(const std::vector &v, bool isMate); PrincipalVariation(const std::vector &v, Board &board); bool isMate() const; int score() const; std::size_t length() const; MoveIter begin() const; MoveIter end() const; private: std::vector mMoves; bool mIsMate = false; int mScore = 0; }; std::ostream &operator<<(std::ostream &os, const PrincipalVariation &pv); #endif