diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-21 23:53:17 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-22 00:27:06 +0000 |
commit | 53749f10b873d23fd997949c5a664df1cedd3ff5 (patch) | |
tree | 0551eab0058e6e3c7c9083f4a0188b12a29154b7 /staging_vespalib | |
parent | 84b04793f98cd6af2a7ca48e344bb48bbcf79727 (diff) |
Further ensure that we do not generate code for expensive methods more than once.
Diffstat (limited to 'staging_vespalib')
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/programoptions.cpp | 20 | ||||
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/programoptions.h | 13 |
2 files changed, 18 insertions, 15 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp index a108c9ad151..cda2f6409b9 100644 --- a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp @@ -82,8 +82,9 @@ ProgramOptions::OptionParser::OptionParser( _invalidDefault(false), _defaultString(defString), _description(desc) -{ -} +{ } + +ProgramOptions::OptionParser::~OptionParser() { } void ProgramOptions::OptionParser::setInvalidDefault() @@ -114,8 +115,7 @@ ProgramOptions::ProgramOptions() _syntaxMessage(), _maxLeftColumnSize(30), _defaultsSet(false) -{ -} +{ } ProgramOptions::ProgramOptions(int argc, const char* const* argv) : _argc(argc), @@ -126,7 +126,17 @@ ProgramOptions::ProgramOptions(int argc, const char* const* argv) _syntaxMessage(), _maxLeftColumnSize(30), _defaultsSet(false) -{ +{ } + +ProgramOptions::~ProgramOptions() { } + +void +ProgramOptions::clear() { + _configurables.clear(); + _options.clear(); + _optionMap.clear(); + _setOptions.clear(); + _arguments.clear(); } void diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.h b/staging_vespalib/src/vespa/vespalib/util/programoptions.h index fa41f85fec8..d809a44e26f 100644 --- a/staging_vespalib/src/vespa/vespalib/util/programoptions.h +++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.h @@ -34,8 +34,6 @@ namespace vespalib { VESPA_DEFINE_EXCEPTION(InvalidCommandLineArgumentsException, Exception); - - struct ProgramOptions { /** Utility class used by command line configurable utility. */ class LifetimeToken { @@ -90,6 +88,7 @@ public: */ ProgramOptions(); ProgramOptions(int argc, const char* const* argv); + virtual ~ProgramOptions(); void addConfigurable(Configurable& c) { _configurables.push_back(&c); @@ -169,13 +168,7 @@ public: * Useful to clear out all options before shutdown if this class outlives * a class defining options. */ - void clear() { - _configurables.clear(); - _options.clear(); - _optionMap.clear(); - _setOptions.clear(); - _arguments.clear(); - } + void clear(); private: void parseOption(const std::string& id, OptionParser&, uint32_t& argPos); @@ -224,7 +217,7 @@ struct ProgramOptions::OptionParser { const std::string& desc); OptionParser(const std::string& nameList, uint32_t argCount, const std::string& defString, const std::string& desc); - virtual ~OptionParser() {} + virtual ~OptionParser(); virtual bool isRequired() const { return !_hasDefault; } virtual void set(const std::vector<std::string>& arguments) = 0; |