#include #include #include #include "settings.hpp" #include "available_settings.hpp" Option::Callback::Callback(fcn_type func_ptr, void *opaque) : func_ptr(func_ptr), opaque(opaque) { } void Option::Callback::operator()(Option& opt, bool suboption) const{ func_ptr(opt, suboption, opaque); } bool Option::Callback::operator==(const Callback& o) const{ return func_ptr == o.func_ptr && opaque == o.opaque; } std::string Option::getName() const{ return name; } std::string Option::getValue() const{ return value; } std::string Option::getParam() const{ return param; } std::string Option::getSubVals() const{ std::string out; for(const auto &sub : suboptions){ if(sub.first.empty() || sub.first == value){ out += sub.second->getLaunchOption(); } } return out; } std::string Option::getLaunchOption() const{ if(type == OptType::BoolOpt){ return enabled ? param : ""; } std::string out = ""; if(enabled && !value.empty() && type != OptType::SilentOpt) out = param + value; out += getSubVals(); return out; } void Option::changed(){ for(const auto &callback : onChangeCallbacks){ callback(*this, false); } } void Option::suboptionChanged(Option &opt, bool, void *opaque){ Option *obj = static_cast