Chrysalis - Pattern
Loading...
Searching...
No Matches
Parameter.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_PARAMETER_H
2#define CHRYSALIS_PARAMETER_H
3
4#include "BaseNamedElement.h"
8
9namespace Chrysalis {
10 class Parameter: public BaseNamedElement, public BaseObservable<ParameterObserver> {
12 SERIALIZE_DERIVED_FROM(BaseNamedElement, value_, defaultValue_)
13 public:
14 explicit Parameter(const std::string& name);
15
16 static Parameter* create(const std::string& name, double value);
17 static Parameter* createDefault(const std::string& name, double defaultValue);
18
19 [[nodiscard]] bool isValid() const;
20 [[nodiscard]] bool hasValue() const;
21 [[nodiscard]] bool hasDefaultValue() const;
22
23 [[nodiscard]] double getValue() const;
24 [[nodiscard]] double getDefaultValue() const;
25
26 void setValue(double value);
27 void setDefaultValue(double defaultValue);
28 private:
29 boost::optional<double> value_;
30 boost::optional<double> defaultValue_;
31 };
33}
34
35#endif //CHRYSALIS_PARAMETER_H
Definition NamedElementsContainer.h:12
static Parameter * create(const std::string &name, double value)
Definition Parameter.cpp:8
void setValue(double value)
Definition Parameter.cpp:40
double getDefaultValue() const
Definition Parameter.cpp:36
static Parameter * createDefault(const std::string &name, double defaultValue)
Definition Parameter.cpp:14
double getValue() const
Definition Parameter.cpp:32
bool isValid() const
Definition Parameter.cpp:20
void setDefaultValue(double defaultValue)
Definition Parameter.cpp:45
bool hasValue() const
Definition Parameter.cpp:24
bool hasDefaultValue() const
Definition Parameter.cpp:28
Definition Argument.h:9
NamedElementsContainer< Parameter > ParametersContainer
Definition Parameter.h:32
#define PROVIDE_DEFAULT_SERIALIZATION_ACCESS(Class)
Definition serialization.h:45
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition serialization.h:71