diff options
Diffstat (limited to 'src/CMI.cpp')
| -rw-r--r-- | src/CMI.cpp | 67 |
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){ |
