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