14 #include "configuration.h" 15 #include "rawconfig.h" 19 OptionBase::OptionBase(Configuration *parent, std::string path,
20 std::string description)
21 : parent_(parent), path_(
std::move(path)),
22 description_(
std::move(description)) {
26 if (path_.find(
'/') != std::string::npos) {
27 throw std::invalid_argument(
28 "/ is not allowed in option, option path is " + path_);
30 parent_->addOption(
this);
33 OptionBase::~OptionBase() {}
35 bool OptionBase::isDefault()
const {
return false; }
37 const std::string &OptionBase::path()
const {
return path_; }
39 const std::string &OptionBase::description()
const {
return description_; }
41 void OptionBase::dumpDescription(RawConfig &config)
const {
42 config.setValueByPath(
"Type", typeString());
43 config.setValueByPath(
"Description", description_);
46 OptionBaseV3::~OptionBaseV3() {}
48 ExternalOption::ExternalOption(Configuration *parent, std::string path,
49 std::string description, std::string uri)
50 : OptionBase(parent,
std::move(path),
std::move(description)),
51 externalUri_(
std::move(uri)) {}
53 std::string ExternalOption::typeString()
const {
return "External"; }
55 void ExternalOption::reset() {}
56 bool ExternalOption::isDefault()
const {
return false; }
58 void ExternalOption::marshall(RawConfig & )
const {}
59 bool ExternalOption::unmarshall(
const RawConfig & ,
63 std::unique_ptr<Configuration> ExternalOption::subConfigSkeleton()
const {
67 bool ExternalOption::equalTo(
const OptionBase & )
const {
70 void ExternalOption::copyFrom(
const OptionBase & ) {}
72 bool ExternalOption::skipDescription()
const {
return false; }
73 bool ExternalOption::skipSave()
const {
return true; }
74 void ExternalOption::dumpDescription(RawConfig &config)
const {
75 OptionBase::dumpDescription(config);
76 config.setValueByPath(
"External", externalUri_);
78 config.setValueByPath(
"DefaultValue",
"");
81 void SubConfigOption::dumpDescription(RawConfig &config)
const {
82 ExternalOption::dumpDescription(config);
83 config.setValueByPath(
"LaunchSubConfig",
"True");
86 bool RegexConstrain::check(
const std::string &value)
const {
89 }
catch (
const std::regex_error &) {
95 void RegexConstrain::dumpDescription(RawConfig &config)
const {
96 config.setValueByPath(
"IsRegex",
"True");