ActiveLib
Loading...
Searching...
No Matches
ItemWrap.h
1
6#ifndef ACTIVE_SERIALISE_ITEM_WRAP
7#define ACTIVE_SERIALISE_ITEM_WRAP
8
9#include "Active/Serialise/Item/Item.h"
10
11namespace active::serialise {
12
16 class ItemWrap : public Item, public std::reference_wrapper<Item> {
17 public:
18
19 // MARK: - Types
20
22 using base = std::reference_wrapper<Item>;
23
24 // MARK: - Constructors
25
30 ItemWrap(Item& source) : base(source) {}
35 //NB: Value is only mutated within import processes, in which case the object must be mutable (i.e. const discard is safe)
36 ItemWrap(const Item& source) : base(const_cast<Item&>(source)) {}
41 ItemWrap(const ItemWrap& source) : base(source.get()) {}
45 virtual ~ItemWrap() = default;
46
47 // MARK: - Functions (const)
48
54 virtual bool fillInventory(Inventory& inventory) const override { return base::get().fillInventory(inventory); }
55
61 virtual Cargo::Unique getCargo(const Inventory::Item& item) const override { return base::get().getCargo(item); }
67 virtual bool write(utility::String& dest) const override { return base::get().write(dest); }
68
69 // MARK: - Functions (mutating)
70
74 virtual void clear() override { base::get().clear(); }
78 virtual void setDefault() override { base::get().setDefault(); }
83 virtual bool validate() override { return base::get().validate(); }
89 virtual bool read(const utility::String& source) override { return base::get().read(source); }
90 };
91
92}
93
94#endif //ACTIVE_SERIALISE_ITEM_WRAP
std::unique_ptr< Cargo > Unique
Unique pointer.
Definition Cargo.h:23
Definition Inventory.h:19
Definition Item.h:23
Definition ItemWrap.h:16
virtual void clear() override
Definition ItemWrap.h:74
virtual ~ItemWrap()=default
ItemWrap(Item &source)
Definition ItemWrap.h:30
std::reference_wrapper< Item > base
Item reference base.
Definition ItemWrap.h:22
ItemWrap(const ItemWrap &source)
Definition ItemWrap.h:41
virtual bool validate() override
Definition ItemWrap.h:83
ItemWrap(const Item &source)
Definition ItemWrap.h:36
virtual Cargo::Unique getCargo(const Inventory::Item &item) const override
Definition ItemWrap.h:61
virtual void setDefault() override
Definition ItemWrap.h:78
virtual bool write(utility::String &dest) const override
Definition ItemWrap.h:67
virtual bool read(const utility::String &source) override
Definition ItemWrap.h:89
virtual bool fillInventory(Inventory &inventory) const override
Definition ItemWrap.h:54
A Unicode-aware string class.
Definition String.h:51
Definition Cargo.h:12
Definition Entry.h:20