diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2023-01-19 10:09:07 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2023-01-19 10:09:07 +0100 |
| commit | f3e3ab4911e896572ad51e895c2d021eaaedaf12 (patch) | |
| tree | 0727cac0332de0574980f42f6b1cf1e8b3fb1896 /src/CMI.hpp | |
| parent | 8fd85102ab8e80d8327b4cf95592dd84579ac492 (diff) | |
Add tests and improve interface
Diffstat (limited to 'src/CMI.hpp')
| -rw-r--r-- | src/CMI.hpp | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/src/CMI.hpp b/src/CMI.hpp index 46d8aa4..283ffd0 100644 --- a/src/CMI.hpp +++ b/src/CMI.hpp @@ -14,56 +14,64 @@ namespace CMI { * to the CMI::HalfMove remains in the move tree. */ class HalfMove { + HalfMove *parent = nullptr; + HalfMove *mainline = nullptr; + std::vector<HalfMove *> variations; + std::string SAN,comment; + std::uint16_t number; + std::uint8_t NAG; + bool isBlack; public: + HalfMove(); /// @brief Ensure that the destructor of the child class is called - virtual ~HalfMove() {}; + virtual ~HalfMove(); /** * @brief Return a pointer to the next CMI::HalfMove * * @return HalfMove* if any and nullptr otherwise */ - virtual HalfMove* GetMainline() const = 0; + virtual HalfMove* GetMainline() const; /** * @brief Set the next CMI::HalfMove * Existing main line pointer will be overriten (NOT DELETED) and the internal state (Number, IsBlack) of the new move * must be ajusted in the implementation of this method. */ - virtual void SetMainline(HalfMove*) = 0; + virtual void SetMainline(HalfMove*); /** * @brief Get the previous CMI::HalfMove * * @return HalfMove* if any and nullptr otherwise */ - virtual HalfMove* GetParent() const = 0; + virtual HalfMove* GetParent() const; /** * @brief Set the parent of current CMI::HalfMove * */ - virtual void SetParent(HalfMove*) = 0; + virtual void SetParent(HalfMove*); /// @brief Return the current move using the SAN notation e.g: "Qxc5+" or "a4" - virtual std::string GetSAN() const = 0; + virtual std::string GetSAN() const; /// @brief Setter to replace current SAN - virtual void SetSAN(std::string) = 0; + virtual void SetSAN(std::string); /// @brief Return the HalfMove move number e.g 1 for the first white's and black's move - virtual std::uint16_t GetNumber() const = 0; + virtual std::uint16_t GetNumber() const; /// @brief Setter to replace current Number - virtual void SetNumber(std::uint16_t) = 0; + virtual void SetNumber(std::uint16_t); /// @brief Return the Numeric Annotation Glyphs code - virtual std::uint8_t GetNAG() const = 0; + virtual std::uint8_t GetNAG() const; /// @brief Setter to replace current NAG - virtual void SetNAG(std::uint8_t) = 0; + virtual void SetNAG(std::uint8_t); /// @brief Return the comment linked to the current move or empty string - virtual std::string GetComment() const = 0; + virtual std::string GetComment() const; /// @brief Setter to replace current comment - virtual void SetComment(std::string) = 0; + virtual void SetComment(std::string); /// @brief Return true if the current HalfMove was played by black - virtual bool IsBlack() const = 0; + virtual bool IsBlack() const; /// @brief Setter to replace that determined the return values of HalfMove::IsBlack() - virtual void SetIsBlack(bool) = 0; + virtual void SetIsBlack(bool); /// @brief All the variations of the current move - virtual std::vector<HalfMove*> GetVariations() const = 0; + virtual std::vector<HalfMove*> GetVariations() const; /// @brief Setter to replace current variations - virtual void SetVariations(std::vector<HalfMove*>) = 0; + virtual void SetVariations(std::vector<HalfMove*>); // ---------- Implementation of various common operations ---------- |
