#include "PGNGameBase.hpp" PGNGameBase::PGNGameBase(std::string pgn_file) : pgn(new pgnp::PGN()), hasNextGame(false) { pgn->FromFile(pgn_file); ParseNextGame(); } bool PGNGameBase::HasNextGame() { return (hasNextGame); } void PGNGameBase::ParseNextGame() { try { pgn->ParseNextGame(); hasNextGame = true; } catch (...) { hasNextGame = false; } } Game *PGNGameBase::GetNextGame() { pgnp::HalfMove *pgnp_moves = new pgnp::HalfMove(); pgn->GetMoves(pgnp_moves); std::string fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; if (pgn->HasTag("FEN")) { fen = pgn->GetTagValue("FEN"); } HalfMove *m = new HalfMove(pgnp_moves, fen); Game *g = new Game(m, fen); for (std::string &s : pgn->GetTagList()) { g->SetTag(s, pgn->GetTagValue(s)); } ParseNextGame(); return (g); }