6#ifndef ACTIVE_SETTING_VALUE_SETTING
7#define ACTIVE_SETTING_VALUE_SETTING
9#include "Active/Container/Vector.h"
10#include "Active/Setting/Setting.h"
11#include "Active/Setting/Values/Value.h"
12#include "Active/Setting/Values/ValueBase.h"
27 using Unique = std::unique_ptr<ValueSetting>;
29 using Shared = std::shared_ptr<ValueSetting>;
31 using Option = std::optional<ValueSetting>;
65 for (
auto& value: values)
76 for (
auto& value: values)
189 operator bool()
const {
return getValue<bool>(); }
194 operator int32_t()
const {
return getValue<int32_t>(); }
199 operator uint32_t()
const {
return getValue<uint32_t>(); }
204 operator int64_t()
const {
return getValue<int64_t>(); }
209 operator double()
const {
return getValue<double>(); }
231 operator std::vector<T>()
const {
232 std::vector<T> result;
233 for (
const auto& value : *
this)
234 result.push_back(*value);
252 bool empty()
const override {
return base::empty(); }
271 bool boolVal(
size_t row = 0,
size_t col = 0)
const {
return getValue<bool>(row, col); }
276 int32_t
int32Val(
size_t row = 0,
size_t col = 0)
const {
return getValue<int32_t>(row, col); }
281 uint32_t
uint32Val(
size_t row = 0,
size_t col = 0)
const {
return getValue<uint32_t>(row, col); }
286 int64_t
int64Val(
size_t row = 0,
size_t col = 0)
const {
return getValue<int64_t>(row, col); }
291 double doubleVal(
size_t row = 0,
size_t col = 0)
const {
return getValue<double>(row, col); }
314 void setDefaultType(std::optional<Value::Type> type = std::nullopt) { m_type = type; }
319 void setColumnSize(
size_t size) { m_columns = std::max(base::size(), std::min(
size_t(1), size)); }
324 void clear()
override { base::clear(); }
333 auto result = row * m_columns + col;
334 if (result >= base::size())
335 throw std::out_of_range(
"");
346 std::optional<Value::Type> m_type;
348 size_t m_columns = 1;
void emplace_back(Value &&item)
Definition Vector.h:109
Base class for an identified setting for interprocess communication.
Definition Setting.h:15
Definition ValueBase.h:21
Status
The value status (defines whether a value has been explicitly set and (if so) if it's meaningful.
Definition Value.h:44
Setting containing any number of values, e.g. bool, string etc.
Definition ValueSetting.h:19
bool isGood(size_t row=0, size_t col=0) const
Definition ValueSetting.h:259
virtual Setting & operator=(const Setting &source) override
Definition ValueSetting.cpp:192
Value & operator()(size_t row=0, size_t col=0)
Definition ValueSetting.h:174
ValueSetting(const std::vector< T > &values, const utility::NameID::Option nameID=std::nullopt)
Definition ValueSetting.h:63
std::optional< Value::Type > getDefaultType() const
Definition ValueSetting.h:244
size_t getColumnSize() const
Definition ValueSetting.h:249
bool empty() const override
True if the setting is empty.
Definition ValueSetting.h:252
std::optional< ValueSetting > Option
Optional.
Definition ValueSetting.h:31
const Value & operator()(size_t row=0, size_t col=0) const
Definition ValueSetting.h:152
active::utility::String stringVal(size_t row=0, size_t col=0) const
Definition ValueSetting.h:296
virtual ~ValueSetting()=default
Value::Status status(size_t row=0, size_t col=0) const
Definition ValueSetting.h:266
size_t getValueIndex(size_t row=0, size_t col=0) const
Get the index of a value at a specified row/column (NB: index must be in range or an exception will b...
Definition ValueSetting.h:332
ValueSetting()
Definition ValueSetting.h:38
bool boolVal(size_t row=0, size_t col=0) const
Definition ValueSetting.h:271
std::unique_ptr< ValueSetting > Unique
Unique pointer.
Definition ValueSetting.h:27
ValueSetting(const utility::NameID &nameID)
Definition ValueSetting.h:43
T getValue(size_t row=0, size_t col=0) const
Get the value at a specified row/column (NB: index must be in range or an exception will be thrown)
Definition ValueSetting.h:340
void setDefault() override
Definition ValueSetting.cpp:205
virtual bool operator==(const Setting &ref) const override
Definition ValueSetting.cpp:148
active::utility::Guid guidVal(size_t row=0, size_t col=0) const
Definition ValueSetting.h:301
void setColumnSize(size_t size)
Definition ValueSetting.h:319
active::utility::Time timeVal(size_t row=0, size_t col=0) const
Definition ValueSetting.h:306
ValueSetting(const std::set< T > &values, const utility::NameID::Option nameID=std::nullopt)
Definition ValueSetting.h:74
ValueSetting(const ValueSetting &source)=default
Use default copy constructor.
int64_t int64Val(size_t row=0, size_t col=0) const
Definition ValueSetting.h:286
virtual bool operator<(const Setting &ref) const override
Definition ValueSetting.cpp:170
void clear() override
Definition ValueSetting.h:324
void setDefaultType(std::optional< Value::Type > type=std::nullopt)
Definition ValueSetting.h:314
uint32_t uint32Val(size_t row=0, size_t col=0) const
Definition ValueSetting.h:281
std::shared_ptr< ValueSetting > Shared
Shared pointer.
Definition ValueSetting.h:29
double doubleVal(size_t row=0, size_t col=0) const
Definition ValueSetting.h:291
int32_t int32Val(size_t row=0, size_t col=0) const
Definition ValueSetting.h:276
virtual ValueSetting * clonePtr() const override
Definition ValueSetting.h:142
std::optional< NameID > Option
Optional.
Definition NameID.h:27
A Unicode-aware string class.
Definition String.h:51
A class to represent a date/time.
Definition Time.h:19
Definition Transportable.h:13