#pragma once #include "Model/Workflow/Value.hpp" #include #include #include class NumericValue : public BaseValue { private: double mValue; public: static bool IsInstance(const BaseValue* value); NumericValue(); NumericValue(const NumericValue&) = delete; NumericValue& operator=(const NumericValue&) = delete; NumericValue(NumericValue&&) = default; NumericValue& operator=(NumericValue&&) = default; std::string GetTruncatedString() const; std::string GetRoundedString() const; std::string GetString() const; int64_t GetInt() const; double GetValue() const; void SetValue(double value); }; class TextValue : public BaseValue { private: std::string mValue; public: static bool IsInstance(const BaseValue* value); TextValue(); TextValue(const TextValue&) = delete; TextValue& operator=(const TextValue&) = delete; TextValue(TextValue&&) = default; TextValue& operator=(TextValue&&) = default; const std::string& GetValue() const; void SetValue(const std::string& value); }; class DateTimeValue : public BaseValue { private: std::chrono::time_point mValue; public: static bool IsInstance(const BaseValue* value); DateTimeValue(); DateTimeValue(const DateTimeValue&) = delete; DateTimeValue& operator=(const DateTimeValue&) = delete; DateTimeValue(DateTimeValue&&) = default; DateTimeValue& operator=(DateTimeValue&&) = default; std::string GetString() const; const std::chrono::time_point& GetValue() const; void SetValue(const std::chrono::time_point& value); };