diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2023-01-15 08:26:49 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2023-01-15 08:26:49 +0100 |
| commit | 52c2fd4521d33616514dc2a43ad1ee432ce16275 (patch) | |
| tree | b8a59aeab25285a4547d393e58675981cc212960 /src | |
| parent | ef75681956ae842cbf1b2b357374aa34e3361448 (diff) | |
Debug PGN parsing from a string. Add the ParseSANMoves() function. Add a new tests set
Diffstat (limited to 'src')
| -rw-r--r-- | src/LargeFileStream.cpp | 3 | ||||
| -rw-r--r-- | src/PGN.cpp | 9 | ||||
| -rw-r--r-- | src/PGN.hpp | 8 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/LargeFileStream.cpp b/src/LargeFileStream.cpp index 3ae1ce2..099c013 100644 --- a/src/LargeFileStream.cpp +++ b/src/LargeFileStream.cpp @@ -37,8 +37,9 @@ char LargeFileStream::operator[](loctype loc) { if (use_string) { if (loc >= content.size()) { eof = true; + return ('?'); } - return ('?'); + return (content[loc]); } // Goto the right memory chuck diff --git a/src/PGN.cpp b/src/PGN.cpp index 96346e8..c0c80e3 100644 --- a/src/PGN.cpp +++ b/src/PGN.cpp @@ -410,4 +410,13 @@ loctype PGN::GotoEOL(loctype loc) { } } +void ParseSANMoves(const std::string &sequence,HalfMove *moves) { + PGN parser; + // Note that PGN need a results (* at the end) + // Otherwise an InvalidGameResult exception is raised + parser.FromString(sequence+" *"); + parser.ParseNextGame(); + parser.GetMoves(moves); +} + } // namespace pgnp
\ No newline at end of file diff --git a/src/PGN.hpp b/src/PGN.hpp index d313f91..d7bc429 100644 --- a/src/PGN.hpp +++ b/src/PGN.hpp @@ -102,4 +102,12 @@ struct STRCheckFailed : public std::exception { } }; +/** + * @brief Parse a simple sequence of SAN moves + * + * @param sequence e.g: 1.e4 e5 2.Nf3 + * @param moves Returned moves sequence + */ +void ParseSANMoves(const std::string &sequence,HalfMove *moves); + } // namespace pgnp |
