ActiveLib
Loading...
Searching...
No Matches
Setting.h
1
6#ifndef ACTIVE_SETTING_SETTING
7#define ACTIVE_SETTING_SETTING
8
9#include "Active/Utility/Cloner.h"
10#include "Active/Utility/NameID.h"
11
12namespace active::setting {
13
15 class Setting : public utility::Cloner {
16 public:
17
18 // MARK: - Types
19
21 using Unique = std::unique_ptr<Setting>;
23 using Shared = std::shared_ptr<Setting>;
25 using Option = std::optional<Setting>;
26
27 // MARK: - Constructors
28
33 Setting(utility::NameID::Option identifier = std::nullopt) : identity{identifier} {}
40 if (name || guid)
41 identity = std::make_optional(utility::NameID{name.value_or(utility::String{}), guid.value_or(utility::Guid{})});
42 }
47 Setting(const Setting& source) {
48 if (source.identity)
49 identity = std::make_optional<utility::NameID>(*source.identity);
50 }
51
55 virtual ~Setting() = default;
56
61 virtual Setting* clonePtr() const = 0;
62
63 // MARK: - Public variables
64
67
68 // MARK: Operators
69
75 virtual bool operator==(const Setting& ref) const = 0;
81 virtual bool operator<(const Setting& ref) const = 0;
87 virtual Setting& operator=(const Setting& source) = 0;
88
89 // MARK: - Functions (const)
90
92 virtual bool empty() const = 0;
93
95 virtual utility::String name() const { return identity.has_value() ? identity->name : utility::String{}; }
96
97 // MARK: Functions (mutating)
98
102 virtual void clear() {}
106 virtual void setDefault() = 0;
107 };
108
109}
110
111#endif //ACTIVE_SETTING_SETTING
Base class for an identified setting for interprocess communication.
Definition Setting.h:15
Setting(utility::NameID::Option identifier=std::nullopt)
Definition Setting.h:33
std::unique_ptr< Setting > Unique
Unique pointer.
Definition Setting.h:21
virtual bool operator<(const Setting &ref) const =0
std::shared_ptr< Setting > Shared
Shared pointer.
Definition Setting.h:23
virtual Setting * clonePtr() const =0
virtual ~Setting()=default
virtual bool empty() const =0
True if the setting is empty.
virtual Setting & operator=(const Setting &source)=0
std::optional< Setting > Option
Optional.
Definition Setting.h:25
virtual utility::String name() const
True if the setting is empty.
Definition Setting.h:95
virtual void setDefault()=0
virtual bool operator==(const Setting &ref) const =0
utility::NameID::Option identity
Optional setting identity.
Definition Setting.h:66
virtual void clear()
Definition Setting.h:102
Setting(utility::String::Option name, utility::Guid::Option guid=std::nullopt)
Definition Setting.h:39
Setting(const Setting &source)
Definition Setting.h:47
Definition Cloner.h:17
Definition Guid.h:16
std::optional< Guid > Option
Optional.
Definition Guid.h:36
Definition NameID.h:21
std::optional< NameID > Option
Optional.
Definition NameID.h:27
A Unicode-aware string class.
Definition String.h:51
std::optional< String > Option
Optional.
Definition String.h:63
Definition Transportable.h:13