diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/configuration.h | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/src/configuration.h b/src/configuration.h index c9223eb..5038a4d 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -37,7 +37,20 @@ public:  #endif          if constexpr(std::is_same_v<T, std::string>) { -            std::string r = vm[path].as<std::string>(); +            std::string r; +            try { +                r = vm[path].as<std::string>(); +            } catch (boost::bad_any_cast &) { +                // try int +                try { +                    r = std::to_string(vm[path].as<int>()); +                } catch (boost::bad_any_cast &) { + +                    // try bool, and crash if not that either +                    r = vm[path].as<bool>() ? "true" : "false"; +                } + +            }              // check if it's a path              if(r.front() == '~') { @@ -49,6 +62,10 @@ public:              return std::optional<T>(vm[path].as<T>());      } +    const std::vector<boost::shared_ptr<boost::program_options::option_description>> & options() { +        return desc.options(); +    } +  private:      boost::program_options::options_description desc;      boost::program_options::variables_map vm; | 
