aboutsummaryrefslogtreecommitdiff
path: root/src/CMI.hpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-01-19 10:09:07 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2023-01-19 10:09:07 +0100
commitf3e3ab4911e896572ad51e895c2d021eaaedaf12 (patch)
tree0727cac0332de0574980f42f6b1cf1e8b3fb1896 /src/CMI.hpp
parent8fd85102ab8e80d8327b4cf95592dd84579ac492 (diff)
Add tests and improve interface
Diffstat (limited to 'src/CMI.hpp')
-rw-r--r--src/CMI.hpp42
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 ----------