ActiveLib
Loading...
Searching...
No Matches
SettingList.h
1
6#ifndef ACTIVE_SETTING_SETTING_LIST
7#define ACTIVE_SETTING_SETTING_LIST
8
9#include "Active/Container/List.h"
10#include "Active/Setting/ValueSetting.h"
11
12namespace active::setting {
13
15 class SettingList : public container::List<Setting>, public utility::Cloner {
16 public:
17
18 // MARK: - Types
19
23 using iterator = typename base::iterator;
27 using Shared = std::shared_ptr<SettingList>;
29 using Option = std::optional<SettingList>;
30
31 // MARK: - Constructors
32
41 SettingList(const std::initializer_list<ValueSetting>& settings);
46 SettingList(const SettingList& source) : base(source) {}
51 SettingList(SettingList&& source) : base(std::move(source)) {}
52
57 virtual SettingList* clonePtr() const { return new SettingList{*this}; }
58
59 // MARK: Operators
60
66 virtual SettingList& operator=(const SettingList& source);
72 virtual bool operator==(const SettingList& ref) const;
73
74 // MARK: - Functions (const)
75
81 bool contains(const utility::NameID& nameID) const { return find(nameID) != end(); }
82 /*
83 Find a match for a specified setting
84 @param setting The setting to match (same ID and content)
85 @return An iterator pointing to the first matching entry (end on failure)
86 */
87 SettingList::const_iterator find(const Setting& setting) const;
93 const_iterator find(const utility::NameID& nameID) const;
99 ValueSetting* findValue(const utility::NameID& nameID) const;
100
101 // MARK: Functions (mutating)
102
108 iterator find(const utility::NameID& nameID);
109 /*
110 Find a match for a specified setting
111 @param setting The setting to match (same ID and content)
112 @return An iterator pointing to the first matching entry (end on failure)
113 */
114 SettingList::iterator find(const Setting& setting);
115 };
116
117}
118
119#endif //ACTIVE_SETTING_SETTING_LIST
Definition List.h:27
typename base::const_iterator const_iterator
Container const iterator type.
Definition List.h:41
typename base::iterator iterator
Container iterator type.
Definition List.h:39
Base class for an identified setting for interprocess communication.
Definition Setting.h:15
A list of settings.
Definition SettingList.h:15
SettingList(SettingList &&source)
Definition SettingList.h:51
SettingList()
Definition SettingList.h:36
virtual SettingList * clonePtr() const
Definition SettingList.h:57
ValueSetting * findValue(const utility::NameID &nameID) const
Definition SettingList.cpp:97
std::shared_ptr< SettingList > Shared
Shared pointer.
Definition SettingList.h:27
SettingList(const SettingList &source)
Definition SettingList.h:46
virtual bool operator==(const SettingList &ref) const
Definition SettingList.cpp:47
typename base::const_iterator const_iterator
Storage iterator.
Definition SettingList.h:25
bool contains(const utility::NameID &nameID) const
Definition SettingList.h:81
std::optional< SettingList > Option
Optional.
Definition SettingList.h:29
typename base::iterator iterator
Storage iterator.
Definition SettingList.h:23
virtual SettingList & operator=(const SettingList &source)
Definition SettingList.cpp:32
Setting containing any number of values, e.g. bool, string etc.
Definition ValueSetting.h:19
Definition Cloner.h:17
Definition NameID.h:21
Definition Transportable.h:13