aboutsummaryrefslogtreecommitdiff
path: root/src/pgnp.cpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-01-24 21:03:30 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-01-24 21:03:30 +0100
commite817ac6bed46737839b592b4308c6d525d70aa2d (patch)
tree276749dbe6017a6052dd6985e15ee7610a49ec0e /src/pgnp.cpp
parentbdd879586efd906e10f07663e99b20027f7bb8ad (diff)
Improve PGNP API
Diffstat (limited to 'src/pgnp.cpp')
-rw-r--r--src/pgnp.cpp24
1 files changed, 22 insertions, 2 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; }