summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-05-04 22:55:53 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2017-05-05 10:40:44 +0200
commitd222c443123d39ac6092f6778846d574194c3e93 (patch)
treee2e1c84c84f141ab8465a67ee93c45619184ac50 /staging_vespalib
parent1464c20e9a2f6c287fb91961cfefa8b7950e6113 (diff)
hide and deinline template instantiations.
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions.cpp104
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions.h110
2 files changed, 104 insertions, 110 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
index 356d86a1dee..41ff561011b 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
@@ -567,7 +567,7 @@ ProgramOptions::writeSyntaxPage(std::ostream& out, bool showDefaults)
}
ProgramOptions::OptionParser&
-ProgramOptions::addOption(OptionParser::SP opt)
+ProgramOptions::addOption(OptionParser::SP && opt)
{
for (uint32_t i=0; i<opt->_names.size(); ++i) {
std::map<std::string, OptionParser::SP>::const_iterator it(
@@ -683,6 +683,108 @@ ProgramOptions::MapOptionParser::MapOptionParser(
{
}
+#define VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(type, parsertype) \
+template<> \
+ProgramOptions::OptionParser& \
+ProgramOptions::addOption(const std::string& optionNameList, \
+ type& value, const std::string& desc) \
+{ \
+ return addOption(OptionParser::SP( \
+ new parsertype(optionNameList, value, desc))); \
+}
+
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(bool, FlagOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(std::string, StringOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(int32_t, NumberOptionParser<int32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(uint32_t, NumberOptionParser<uint32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(int64_t, NumberOptionParser<int64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(uint64_t, NumberOptionParser<uint64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(float, NumberOptionParser<float>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(double, NumberOptionParser<double>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(MapOptionParser::MapType, MapOptionParser);
+
+#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(type, parsertype) \
+template<> \
+ProgramOptions::OptionParser& \
+ProgramOptions::addOption(const std::string& optionNameList, \
+ type& value, const type& defVal, \
+ const std::string& desc) \
+{ \
+ return addOption(OptionParser::SP( \
+ new parsertype(optionNameList, value, defVal, desc))); \
+}
+
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(bool, FlagOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(std::string, StringOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(int32_t, NumberOptionParser<int32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(uint32_t, NumberOptionParser<uint32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(int64_t, NumberOptionParser<int64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(uint64_t, NumberOptionParser<uint64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(float, NumberOptionParser<float>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(double, NumberOptionParser<double>);
+
+#define VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(type, parsertype) \
+template<> \
+ProgramOptions::OptionParser& \
+ProgramOptions::addArgument(const std::string& name, \
+ type& value, \
+ const std::string& desc) \
+{ \
+ return addArgument(OptionParser::SP( \
+ new parsertype(name, value, desc))); \
+}
+
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(bool, BoolOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(std::string, StringOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(int32_t, NumberOptionParser<int32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(int64_t, NumberOptionParser<int64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(float, NumberOptionParser<float>);
+VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(double, NumberOptionParser<double>);
+
+#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(type, parsertype) \
+template<> \
+ProgramOptions::OptionParser& \
+ProgramOptions::addArgument(const std::string& name, \
+ type& value, const type& defVal, \
+ const std::string& desc) \
+{ \
+ return addArgument(OptionParser::SP( \
+ new parsertype(name, value, defVal, desc))); \
+}
+
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(std::string, StringOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(int32_t, NumberOptionParser<int32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(int64_t, NumberOptionParser<int64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(float, NumberOptionParser<float>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(double, NumberOptionParser<double>);
+
+#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(type, parsertype) \
+template<> \
+ProgramOptions::OptionParser& \
+ProgramOptions::addListArgument(const std::string& name, \
+ std::vector<type>& value, \
+ const std::string& desc) \
+{ \
+ ListOptionParser<type>* listParser( \
+ new ListOptionParser<type>(name, value, desc)); \
+ OptionParser::UP entryParser( \
+ new parsertype(name, listParser->getSingleValue(), desc)); \
+ listParser->setEntryParser(std::move(entryParser)); \
+ return addArgument(OptionParser::SP(listParser)); \
+}
+
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(std::string, StringOptionParser);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(int32_t, NumberOptionParser<int32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(int64_t, NumberOptionParser<int64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(float, NumberOptionParser<float>);
+VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(double, NumberOptionParser<double>);
+
template class ProgramOptions::NumberOptionParser<int32_t>;
template class ProgramOptions::NumberOptionParser<uint32_t>;
template class ProgramOptions::NumberOptionParser<int64_t>;
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.h b/staging_vespalib/src/vespa/vespalib/util/programoptions.h
index 9e25f960af7..00009a96fca 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions.h
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.h
@@ -171,7 +171,7 @@ public:
private:
void parseOption(const std::string& id, OptionParser&, uint32_t& argPos);
void parseArgument(OptionParser& opt, uint32_t& pos);
- OptionParser& addOption(std::shared_ptr<OptionParser> opt);
+ OptionParser& addOption(std::shared_ptr<OptionParser> && opt);
OptionParser& addArgument(std::shared_ptr<OptionParser> arg);
void setDefaults(bool failUnsetRequired);
@@ -355,113 +355,5 @@ struct ProgramOptions::ListOptionParser : public OptionParser {
}
};
-#define VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(type, parsertype) \
-template<> \
-inline \
-ProgramOptions::OptionParser& \
-ProgramOptions::addOption(const std::string& optionNameList, \
- type& value, const std::string& desc) \
-{ \
- return addOption(OptionParser::SP( \
- new parsertype(optionNameList, value, desc))); \
-}
-
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(bool, FlagOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(std::string, StringOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(int32_t, NumberOptionParser<int32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(uint32_t, NumberOptionParser<uint32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(int64_t, NumberOptionParser<int64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(uint64_t, NumberOptionParser<uint64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(float, NumberOptionParser<float>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(double, NumberOptionParser<double>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDOPTION(MapOptionParser::MapType,
- MapOptionParser);
-
-#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(type, parsertype) \
-template<> \
-inline \
-ProgramOptions::OptionParser& \
-ProgramOptions::addOption(const std::string& optionNameList, \
- type& value, const type& defVal, \
- const std::string& desc) \
-{ \
- return addOption(OptionParser::SP( \
- new parsertype(optionNameList, value, defVal, desc))); \
-}
-
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(bool, FlagOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(std::string, StringOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(int32_t, NumberOptionParser<int32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(uint32_t, NumberOptionParser<uint32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(int64_t, NumberOptionParser<int64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(uint64_t, NumberOptionParser<uint64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(float, NumberOptionParser<float>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDOPTION(double, NumberOptionParser<double>);
-
-#define VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(type, parsertype) \
-template<> \
-inline \
-ProgramOptions::OptionParser& \
-ProgramOptions::addArgument(const std::string& name, \
- type& value, \
- const std::string& desc) \
-{ \
- return addArgument(OptionParser::SP( \
- new parsertype(name, value, desc))); \
-}
-
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(bool, BoolOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(std::string, StringOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(int32_t, NumberOptionParser<int32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(int64_t, NumberOptionParser<int64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(float, NumberOptionParser<float>);
-VESPALIB_PROGRAMOPTIONS_IMPL_NODEF_ADDARGUMENT(double, NumberOptionParser<double>);
-
-#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(type, parsertype) \
-template<> \
-inline \
-ProgramOptions::OptionParser& \
-ProgramOptions::addArgument(const std::string& name, \
- type& value, const type& defVal, \
- const std::string& desc) \
-{ \
- return addArgument(OptionParser::SP( \
- new parsertype(name, value, defVal, desc))); \
-}
-
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(std::string, StringOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(int32_t, NumberOptionParser<int32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(int64_t, NumberOptionParser<int64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(float, NumberOptionParser<float>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDARGUMENT(double, NumberOptionParser<double>);
-
-#define VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(type, parsertype) \
-template<> \
-inline \
-ProgramOptions::OptionParser& \
-ProgramOptions::addListArgument(const std::string& name, \
- std::vector<type>& value, \
- const std::string& desc) \
-{ \
- ListOptionParser<type>* listParser( \
- new ListOptionParser<type>(name, value, desc)); \
- OptionParser::UP entryParser( \
- new parsertype(name, listParser->getSingleValue(), desc)); \
- listParser->setEntryParser(std::move(entryParser)); \
- return addArgument(OptionParser::SP(listParser)); \
-}
-
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(std::string, StringOptionParser);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(int32_t, NumberOptionParser<int32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(uint32_t, NumberOptionParser<uint32_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(int64_t, NumberOptionParser<int64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(uint64_t, NumberOptionParser<uint64_t>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(float, NumberOptionParser<float>);
-VESPALIB_PROGRAMOPTIONS_IMPL_ADDLISTARGUMENT(double, NumberOptionParser<double>);
-
} // vespalib