X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fgetopt.h;h=59c810c5e4a5ff4182cd42d9736f8af9d708eae9;hb=HEAD;hp=5c21ccb97bb7142aeb2b968ebd0e8e23e1303676;hpb=99b9121e2158603372c7313400283b622e6754d8;p=libs%2Fcore.git diff --git a/source/core/getopt.h b/source/core/getopt.h index 5c21ccb..59c810c 100644 --- a/source/core/getopt.h +++ b/source/core/getopt.h @@ -6,20 +6,20 @@ #include #include #include +#include "mspcore_api.h" #include "noncopyable.h" namespace Msp { -class usage_error: public std::runtime_error +class MSPCORE_API usage_error: public std::runtime_error { private: - std::string help_; + std::string m_help; public: - usage_error(const std::string &w, const std::string &h = std::string()): std::runtime_error(w), help_(h) { } - virtual ~usage_error() throw() = default; + usage_error(const std::string &w, const std::string &h = std::string()): std::runtime_error(w), m_help(h) { } - const char *help() const throw() { return help_.c_str(); } + const char *help() const noexcept { return m_help.c_str(); } }; @@ -59,7 +59,7 @@ A built-in --help option is provided and will output a list of options, arguments and their associated help texts. An application may override this by providing its own option with the same name. */ -class GetOpt: private NonCopyable +class MSPCORE_API GetOpt: private NonCopyable { public: enum ArgType @@ -69,7 +69,7 @@ public: REQUIRED_ARG }; - class Option + class MSPCORE_API Option { protected: Option() = default; @@ -89,7 +89,7 @@ public: virtual unsigned get_seen_count() const = 0; }; - class Argument + class MSPCORE_API Argument { protected: Argument() = default; @@ -121,24 +121,24 @@ private: std::string lng; ArgType arg_type = NO_ARG; unsigned seen_count = 0; - unsigned *ext_seen_count = 0; + unsigned *ext_seen_count = nullptr; std::string help; std::string metavar = "ARG"; - Store *store = 0; + Store *store = nullptr; public: OptionImpl(char, const std::string &, const Store &, ArgType); - virtual ~OptionImpl(); + ~OptionImpl() override; - virtual OptionImpl &set_help(const std::string &); - virtual OptionImpl &set_help(const std::string &, const std::string &); - virtual OptionImpl &bind_seen_count(unsigned &); + OptionImpl &set_help(const std::string &) override; + OptionImpl &set_help(const std::string &, const std::string &) override; + OptionImpl &bind_seen_count(unsigned &) override; char get_short() const { return shrt; } const std::string &get_long() const { return lng; } ArgType get_arg_type() const { return arg_type; } const std::string &get_help() const { return help; } const std::string &get_metavar() const { return metavar; } - virtual unsigned get_seen_count() const { return seen_count; } + unsigned get_seen_count() const override { return seen_count; } void process(); void process(const std::string &); }; @@ -149,13 +149,13 @@ private: std::string name; ArgType type = REQUIRED_ARG; std::string help; - Store *store = 0; + Store *store = nullptr; public: ArgumentImpl(const std::string &, const Store &, ArgType); - virtual ~ArgumentImpl(); + ~ArgumentImpl() override; - virtual ArgumentImpl &set_help(const std::string &); + ArgumentImpl &set_help(const std::string &) override; const std::string &get_name() const { return name; } ArgType get_type() const { return type; } const std::string &get_help() const { return help; } @@ -172,14 +172,14 @@ private: public: SimpleStore(T &d): data(d) { } - virtual SimpleStore *clone() const + SimpleStore *clone() const override { return new SimpleStore(data); } - virtual bool is_list() const { return false; } + bool is_list() const override { return false; } - virtual void store() { } + void store() override { } - virtual void store(const std::string &a) + void store(const std::string &a) override { data = lexical_cast(a); } }; @@ -192,14 +192,14 @@ private: public: ListStore(T &d): data(d) { } - virtual ListStore *clone() const + ListStore *clone() const override { return new ListStore(data); } - virtual bool is_list() const { return true; } + bool is_list() const override { return true; } - virtual void store() { } + void store() override { } - virtual void store(const std::string &a) + void store(const std::string &a) override { data.push_back(lexical_cast(a)); } };