ActiveLib
Loading...
Searching...
No Matches
Pair.h
1
6#ifndef ACTIVE_SERIALISE_PAIR
7#define ACTIVE_SERIALISE_PAIR
8
9#include "Active/Serialise/Package/Package.h"
10
11namespace active::serialise {
12
20 class Pair : public Package {
21 public:
22
23 // MARK: - Types
24
27 key,
28 value,
29 };
30
31 // MARK: - Constants
32
37
44 Pair(Cargo::Unique key, Cargo::Unique value, utility::String::Option name = std::nullopt);
46 Pair(const Pair& source) = delete;
48 virtual ~Pair() = default;
49
50 // MARK: - Functions (const)
51
56 Cargo* getKey() const { return m_key.get(); }
61 Cargo* getValue() const { return m_value.get(); }
67 virtual bool fillInventory(Inventory& inventory) const;
72 virtual const Inventory::Item& keyItem() const { return keyEntry; }
77 virtual const Inventory::Item& valueItem() const { return valueEntry; }
83 virtual Cargo::Unique getCargo(const Inventory::Item& item) const;
84
85 // MARK: - Functions (mutating)
86
90 virtual void setDefault();
95 virtual bool validate();
100 auto releaseKey() { return std::move(m_key); }
105 auto releaseData() { return std::move(m_value); }
106
107 private:
109 Cargo::Unique m_key;
111 Cargo::Unique m_value;
114 };
115
116}
117
118#endif //ACTIVE_SERIALISE_PAIR
Definition Cargo.h:17
std::unique_ptr< Cargo > Unique
Unique pointer.
Definition Cargo.h:23
Definition Inventory.h:19
Definition Package.h:17
Definition Pair.h:20
virtual Cargo::Unique getCargo(const Inventory::Item &item) const
Definition Pair.cpp:70
static Inventory::Item keyEntry
The default inventory item for the pair key.
Definition Pair.h:34
Cargo * getKey() const
Definition Pair.h:56
virtual const Inventory::Item & keyItem() const
Definition Pair.h:72
Pair(Cargo::Unique key, Cargo::Unique value, utility::String::Option name=std::nullopt)
Definition Pair.cpp:40
virtual ~Pair()=default
Destructor.
virtual void setDefault()
Definition Pair.cpp:102
static Inventory::Item valueEntry
The default inventory item for the pair value.
Definition Pair.h:36
Pair(const Pair &source)=delete
No copy constructor.
virtual const Inventory::Item & valueItem() const
Definition Pair.h:77
Cargo * getValue() const
Definition Pair.h:61
FieldIndex
The indices of the default package items.
Definition Pair.h:26
virtual bool validate()
Definition Pair.cpp:115
auto releaseData()
Definition Pair.h:105
auto releaseKey()
Definition Pair.h:100
virtual bool fillInventory(Inventory &inventory) const
Definition Pair.cpp:51
std::optional< String > Option
Optional.
Definition String.h:63
Definition Cargo.h:12
Definition Entry.h:20