summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-21 23:53:17 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-11-22 00:27:06 +0000
commit53749f10b873d23fd997949c5a664df1cedd3ff5 (patch)
tree0551eab0058e6e3c7c9083f4a0188b12a29154b7 /staging_vespalib
parent84b04793f98cd6af2a7ca48e344bb48bbcf79727 (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.cpp20
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions.h13
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;