diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-01-24 21:03:30 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-01-24 21:03:30 +0100 |
| commit | e817ac6bed46737839b592b4308c6d525d70aa2d (patch) | |
| tree | 276749dbe6017a6052dd6985e15ee7610a49ec0e /src | |
| parent | bdd879586efd906e10f07663e99b20027f7bb8ad (diff) | |
Improve PGNP API
Diffstat (limited to 'src')
| -rw-r--r-- | src/pgnp.cpp | 24 | ||||
| -rw-r--r-- | src/pgnp.hpp | 3 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/pgnp.cpp b/src/pgnp.cpp index 7f9c450..3262a5e 100644 --- a/src/pgnp.cpp +++ b/src/pgnp.cpp @@ -16,7 +16,7 @@ namespace pgnp { -HalfMove::HalfMove() : isBlack(false), MainLine(NULL) {} +HalfMove::HalfMove() : count(-1), isBlack(false), MainLine(NULL) {} HalfMove::~HalfMove() { for (auto *move : variations) { @@ -55,6 +55,26 @@ int HalfMove::GetLength() { return length; } +void HalfMove::Copy(HalfMove* copy){ + copy->count=count; + copy->isBlack=isBlack; + copy->move=move; + copy->comment=comment; + + // Copy MainLine + if(MainLine!=NULL){ + copy->MainLine=new HalfMove(); + MainLine->Copy(copy->MainLine); + } + + // Copy variation + for(HalfMove *var:variations){ + HalfMove *new_var=new HalfMove(); + copy->variations.push_back(new_var); + var->Copy(new_var); + } +} + PGN::~PGN() { if (moves != NULL) delete moves; @@ -265,7 +285,7 @@ int PGN::ParseNextTag(int start_loc) { return (valueloc + 1); // +1 For the last char of the tag which is ']' } -HalfMove *PGN::GetMoves() { return (moves); } +void PGN::GetMoves(HalfMove* copy) { moves->Copy(copy); } std::vector<std::string> PGN::GetTagList() { return tagkeys; } diff --git a/src/pgnp.hpp b/src/pgnp.hpp index 53a7a59..492dfc0 100644 --- a/src/pgnp.hpp +++ b/src/pgnp.hpp @@ -29,6 +29,7 @@ public: int GetLength(); /// @brief Dump move and all its variations void Dump(); + void Copy(HalfMove* copy); }; class PGN { @@ -52,7 +53,7 @@ public: std::vector<std::string> GetTagList(); std::string GetTagValue(std::string); std::string GetResult(); - HalfMove *GetMoves(); + void GetMoves(HalfMove*); private: /// @brief Populate @a tags with by parsing the one starting at location in |
