aboutsummaryrefslogtreecommitdiff
path: root/src/CMI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CMI.cpp')
-rw-r--r--src/CMI.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/CMI.cpp b/src/CMI.cpp
index dfca22d..ae963a1 100644
--- a/src/CMI.cpp
+++ b/src/CMI.cpp
@@ -1,6 +1,73 @@
#include "CMI.hpp"
namespace CMI{
+
+ HalfMove::HalfMove(): number(1), isBlack(false){
+ }
+
+ HalfMove::~HalfMove() {
+ if(mainline!=nullptr)
+ delete mainline;
+ for(HalfMove *v:variations)
+ delete v;
+ }
+
+ void HalfMove::SetParent(CMI::HalfMove* m){
+ parent=static_cast<HalfMove*>(m);
+ }
+
+
+ std::vector<CMI::HalfMove*> HalfMove::GetVariations() const {
+ std::vector<CMI::HalfMove*> vars;
+ for(HalfMove *v:variations){
+ vars.push_back(static_cast<CMI::HalfMove*>(v));
+ }
+ return vars;
+ }
+ void HalfMove::SetVariations(std::vector<CMI::HalfMove*> vars){
+ variations.clear();
+ for(auto *v: vars){
+ variations.push_back(static_cast<HalfMove*>(v));
+ }
+ }
+
+
+ void HalfMove::SetMainline(CMI::HalfMove* m) {
+ mainline = static_cast<HalfMove*>(m);
+ if(m!=nullptr){
+ if (!this->isBlack) {
+ m->SetIsBlack(true);
+ m->SetNumber(this->number);
+ } else {
+ m->SetIsBlack(false);
+ m->SetNumber(this->number + 1);
+ }
+ m->SetParent(static_cast<CMI::HalfMove*>(this));
+ }
+ }
+
+
+
+ CMI::HalfMove* HalfMove::GetMainline() const {return mainline;};
+ CMI::HalfMove* HalfMove::GetParent() const {return parent;};
+ std::string HalfMove::GetSAN() const {return SAN;};
+ void HalfMove::SetSAN(std::string newSAN) {SAN=newSAN;};
+ std::uint16_t HalfMove::GetNumber() const {return number;};
+ void HalfMove::SetNumber(std::uint16_t n) {number=n;};
+ std::uint8_t HalfMove::GetNAG() const {return NAG;};
+ void HalfMove::SetNAG(std::uint8_t n) {NAG=n;};
+ std::string HalfMove::GetComment() const {return comment;};
+ void HalfMove::SetComment(std::string c) { comment=c;};
+ bool HalfMove::IsBlack() const {return isBlack;};
+ void HalfMove::SetIsBlack(bool b) {isBlack=b;};
+
+
+
+
+
+
+ // ---------- Implementation of various common operations ----------
+
void HalfMove::Promote(){
HalfMove *broot=GetBranchRoot();
if(broot!=nullptr){