6#ifndef ACTIVE_SERIALISE_DOC_OBJECT
7#define ACTIVE_SERIALISE_DOC_OBJECT
9#include "Active/Serialise/Document/Handler.h"
10#include "Active/Serialise/Package/Package.h"
11#include "Active/Setting/ValueSetting.h"
37 using Unique = std::unique_ptr<Object>;
39 using Shared = std::shared_ptr<Object>;
41 using Option = std::optional<Object>;
43 using base = std::vector<Object>;
45 using Values = std::vector<setting::ValueSetting>;
86 objects.emplace_back(std::move(
object));
95 objects.emplace_back(std::move(
object));
126 if (
const auto* source =
object(
tag); source !=
nullptr) {
127 return source->object<T>();
131 return std::unique_ptr<T>{m_handler->reconstruct<T>(*this)};
144 virtual bool fillInventory(serialise::Inventory& inventory)
const override;
196 mutable std::shared_ptr<Handler> m_handler;
std::unique_ptr< Cargo > Unique
Unique pointer.
Definition Cargo.h:23
value Item
An inventory item pairing an entry with its ID/name.
Definition Inventory.h:35
utility::String tag
A serialisation tag (identifying the object role)
Definition Object.h:70
Object()
Definition Object.h:52
Object & withType(const utility::String &newType)
Definition Object.h:181
Values values
Child values of this object, i.e. single-value variables in the original object.
Definition Object.h:74
std::optional< Object > Option
Optional.
Definition Object.h:41
static utility::String defaultTag
The Object tag.
Definition Object.h:32
Object & withTag(const utility::String &newTag)
Definition Object.h:190
std::unique_ptr< Object > Unique
Unique pointer.
Definition Object.h:37
std::vector< Object > objects
Child objects of this object.
Definition Object.h:72
Object(const Object &source)=default
Use the default copy.
utility::String docType
The document object type - can be used to reconstruct the original object.
Definition Object.h:68
Object(Object &&source) noexcept=default
Use the default rvalue copy.
Object & operator=(Object &&source)=default
Use default assignment.
virtual bool fillInventory(serialise::Inventory &inventory) const override
Definition Object.cpp:87
std::vector< Object > base
Base container - supports an document object hierarchy.
Definition Object.h:43
const Object & usingHandler(std::shared_ptr< Handler > handler) const
Definition Object.cpp:138
std::shared_ptr< Object > Shared
Shared pointer.
Definition Object.h:39
Object & operator<<(Object &&object)
Definition Object.h:94
Object & operator<<(Object &object)
Definition Object.h:85
std::vector< setting::ValueSetting > Values
Values container - holds all single-value variables from the original class.
Definition Object.h:45
virtual void setDefault() override
Definition Object.cpp:149
virtual bool validate() override
Definition Object.cpp:162
virtual bool insert(Cargo::Unique &&cargo, const serialise::Inventory::Item &item) override
Definition Object.cpp:175
virtual serialise::Cargo::Unique getCargo(const serialise::Inventory::Item &item) const override
Definition Object.cpp:108
const setting::ValueSetting::Option value(const utility::String &name) const
Definition Object.cpp:73
Object & operator<<(setting::ValueSetting &&value)
Definition Object.h:103
std::unique_ptr< T > object(const utility::String &tag=utility::String{}) const
Definition Object.h:122
const Object * object(const utility::String &tag) const
Definition Object.cpp:59
Setting containing any number of values, e.g. bool, string etc.
Definition ValueSetting.h:19
std::optional< ValueSetting > Option
Optional.
Definition ValueSetting.h:31
A Unicode-aware string class.
Definition String.h:51
std::optional< String > Option
Optional.
Definition String.h:63
bool empty() const
Definition String.h:409