13 #include "configuration.h" 14 #include "rawconfig.h" 18 OptionBase::OptionBase(Configuration *parent, std::string path,
19 std::string description)
20 : parent_(parent), path_(
std::move(path)),
21 description_(
std::move(description)) {
25 if (path_.find(
'/') != std::string::npos) {
26 throw std::invalid_argument(
27 "/ is not allowed in option, option path is " + path_);
29 parent_->addOption(
this);
32 OptionBase::~OptionBase() {}
34 bool OptionBase::isDefault()
const {
return false; }
36 const std::string &OptionBase::path()
const {
return path_; }
38 const std::string &OptionBase::description()
const {
return description_; }
40 void OptionBase::dumpDescription(RawConfig &config)
const {
41 config.setValueByPath(
"Type", typeString());
42 config.setValueByPath(
"Description", description_);
45 OptionBaseV3::~OptionBaseV3() {}
47 ExternalOption::ExternalOption(Configuration *parent, std::string path,
48 std::string description, std::string uri)
49 : OptionBase(parent,
std::move(path),
std::move(description)),
50 externalUri_(
std::move(uri)) {}
52 std::string ExternalOption::typeString()
const {
return "External"; }
54 void ExternalOption::reset() {}
55 bool ExternalOption::isDefault()
const {
return false; }
57 void ExternalOption::marshall(RawConfig & )
const {}
58 bool ExternalOption::unmarshall(
const RawConfig & ,
62 std::unique_ptr<Configuration> ExternalOption::subConfigSkeleton()
const {
66 bool ExternalOption::equalTo(
const OptionBase & )
const {
69 void ExternalOption::copyFrom(
const OptionBase & ) {}
71 bool ExternalOption::skipDescription()
const {
return false; }
72 bool ExternalOption::skipSave()
const {
return true; }
73 void ExternalOption::dumpDescription(RawConfig &config)
const {
74 OptionBase::dumpDescription(config);
75 config.setValueByPath(
"External", externalUri_);
77 config.setValueByPath(
"DefaultValue",
"");
80 void SubConfigOption::dumpDescription(RawConfig &config)
const {
81 ExternalOption::dumpDescription(config);
82 config.setValueByPath(
"LaunchSubConfig",
"True");