ActiveLib
Loading...
Searching...
No Matches
XMLValueSetting.h
1
6#ifndef ACTIVE_SERIALISE_XML_XML_VALUE_SETTING
7#define ACTIVE_SERIALISE_XML_XML_VALUE_SETTING
8
9#include "Active/Serialise/Package/Package.h"
10#include "Active/Setting/ValueSetting.h"
11#include "Active/Utility/String.h"
12
13namespace active::serialise::xml {
14
18 class XMLValueSetting : public Package, public std::reference_wrapper<setting::ValueSetting> {
19 public:
20
21 // MARK: - Types
22
25 name,
26 valGuid,
27 columns,
28 type,
29 className,
30 value,
31 };
32
33 //Base class type
34 using base = std::reference_wrapper<setting::ValueSetting>;
35
36 // MARK: - Static variables
37
39 static inline utility::String tag = "setting";
40
41 // MARK: - Constructor
42
49 XMLValueSetting(setting::ValueSetting& setting, bool isTyped = false, std::optional<utility::String> className = std::nullopt);
56 XMLValueSetting(const setting::ValueSetting& setting, bool isTyped = false, std::optional<utility::String> className = std::nullopt) :
57 //NB: const_cast only used for export, which never mutates the data
58 XMLValueSetting(const_cast<setting::ValueSetting&>(setting), isTyped, className) {}
66 XMLValueSetting(setting::ValueSetting& setting, const utility::String& customTag,
67 bool isTyped = false, std::optional<utility::String> className = std::nullopt);
75 XMLValueSetting(const setting::ValueSetting& setting, const utility::String& customTag,
76 bool isTyped = false, std::optional<utility::String> className = std::nullopt) :
77 //NB: const_cast only used for export, which never mutates the data
78 XMLValueSetting(const_cast<setting::ValueSetting&>(setting), customTag, isTyped, className) {}
79
80 // MARK: - Functions (const)
81
87 virtual bool fillInventory(Inventory& inventory) const override;
93 virtual Cargo::Unique getCargo(const Inventory::Item& item) const override;
94
95 // MARK: - Functions (mutating)
96
100 virtual void setDefault() override;
105 virtual bool validate() override;
112 virtual bool insert(Cargo::Unique&& cargo, const Inventory::Item& item) override;
113
114 private:
118 mutable utility::String m_name;
120 mutable utility::String m_id;
122 mutable int32_t m_columns = 1;
124 mutable utility::String m_value;
126 mutable utility::String m_typeName;
128 mutable utility::String m_className;
130 bool m_isTyped = false;
131 };
132
133}
134
135#endif //ACTIVE_SERIALISE_XML_XML_VALUE_SETTING
std::unique_ptr< Cargo > Unique
Unique pointer.
Definition Cargo.h:23
Definition Inventory.h:19
Definition Package.h:17
Definition XMLValueSetting.h:18
virtual bool insert(Cargo::Unique &&cargo, const Inventory::Item &item) override
Definition XMLValueSetting.cpp:165
FieldIndex
Serialisaton fields.
Definition XMLValueSetting.h:24
XMLValueSetting(const setting::ValueSetting &setting, const utility::String &customTag, bool isTyped=false, std::optional< utility::String > className=std::nullopt)
Definition XMLValueSetting.h:75
static utility::String tag
The default element tag.
Definition XMLValueSetting.h:39
virtual bool validate() override
Definition XMLValueSetting.cpp:147
virtual bool fillInventory(Inventory &inventory) const override
Definition XMLValueSetting.cpp:82
XMLValueSetting(setting::ValueSetting &setting, bool isTyped=false, std::optional< utility::String > className=std::nullopt)
Definition XMLValueSetting.cpp:40
virtual Cargo::Unique getCargo(const Inventory::Item &item) const override
Definition XMLValueSetting.cpp:105
virtual void setDefault() override
Definition XMLValueSetting.cpp:132
XMLValueSetting(const setting::ValueSetting &setting, bool isTyped=false, std::optional< utility::String > className=std::nullopt)
Definition XMLValueSetting.h:56
Setting containing any number of values, e.g. bool, string etc.
Definition ValueSetting.h:19
A Unicode-aware string class.
Definition String.h:51
std::optional< String > Option
Optional.
Definition String.h:63
Definition XMLDateTime.h:12
Definition Entry.h:20