#include #include #include #include #include #include namespace pgnp { typedef struct HalfMove { } HalfMove; class PGN { private: std::unordered_map tags; HalfMove moves; std::string pgn_content; public: void FromFile(std::string); void FromString(std::string); private: /// @brief Populate @a tags with by parsing the one starting at location in argument int ParseNextTag(int); /// @brief Get the next non-blank char location starting from location in argument int NextNonBlank(int); }; struct UnexpectedEOF : public std::exception { const char * what () const throw () { return "Unexpected end of pgn file"; } }; }