ActiveLib
Loading...
Searching...
No Matches
AnyValueWrap.h
1
6#ifndef ACTIVE_SERIALISE_ANY_VALUE_WRAP
7#define ACTIVE_SERIALISE_ANY_VALUE_WRAP
8
9#include "Active/Serialise/Item/Item.h"
10#include "Active/Setting/Values/NullValue.h"
11
12#include <functional>
13
14namespace active::serialise {
15
24 class AnyValueWrap : public Item {
25 public:
26
27 // MARK: - Constructors
28
32 AnyValueWrap() : Item(), m_value(m_placeholder) {}
37 //NB: Value is only mutated within import processes, in which case the object must be mutable (i.e. const discard is safe)
38 AnyValueWrap(const setting::Value& val) : Item(), m_value(const_cast<setting::Value&>(val)) {}
39
40 // MARK: - Functions (const)
41
47 virtual bool write(utility::String& dest) const override;
48
49 // MARK: - Functions (mutating)
50
55 setting::Value::Unique releaseIncoming() { return std::move(m_incoming); }
61 virtual bool read(const utility::String& source) override;
67 virtual bool read(const setting::Value& source) override;
71 virtual void setDefault() override;
76 virtual std::optional<Item::Type> type() const override;
77
78 private:
83 const setting::Value& getTargetValue() const;
84
86 std::reference_wrapper<setting::Value> m_value;
88 setting::NullValue m_placeholder;
90 setting::Value::Unique m_incoming;
91 };
92
93}
94
95#endif //ACTIVE_SERIALISE_ANY_VALUE_WRAP
Definition AnyValueWrap.h:24
AnyValueWrap()
Definition AnyValueWrap.h:32
AnyValueWrap(const setting::Value &val)
Definition AnyValueWrap.h:38
virtual bool read(const utility::String &source) override
Definition AnyValueWrap.cpp:32
virtual bool write(utility::String &dest) const override
Definition AnyValueWrap.cpp:19
setting::Value::Unique releaseIncoming()
Definition AnyValueWrap.h:55
virtual void setDefault() override
Definition AnyValueWrap.cpp:56
virtual std::optional< Item::Type > type() const override
Definition AnyValueWrap.cpp:67
Definition Item.h:23
Definition NullValue.h:19
Definition Value.h:31
std::unique_ptr< Value > Unique
Unique pointer.
Definition Value.h:37
A Unicode-aware string class.
Definition String.h:51
Definition Cargo.h:12