X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fgetopt.h;h=575184f3400b2699cf3ba078a90633550ffd9e6d;hp=27ce4cf2fdb05824b3834eb0d972a7192ec3a1fd;hb=991fabc1956b73a4007859058fb44171000b452e;hpb=f24e7b96e76b63c9b9b8a6bce4c7a9db64276ea8 diff --git a/source/core/getopt.h b/source/core/getopt.h index 27ce4cf..575184f 100644 --- a/source/core/getopt.h +++ b/source/core/getopt.h @@ -13,13 +13,13 @@ namespace Msp { class 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) { } - ~usage_error() throw() { } + usage_error(const std::string &w, const std::string &h = std::string()): std::runtime_error(w), m_help(h) { } + ~usage_error() throw() override = default; - const char *help() const throw() { return help_.c_str(); } + const char *help() const throw() { return m_help.c_str(); } }; @@ -72,9 +72,9 @@ public: class Option { protected: - Option() { } + Option() = default; public: - virtual ~Option() { } + virtual ~Option() = default; /// Sets help text for the option. virtual Option &set_help(const std::string &) = 0; @@ -92,9 +92,9 @@ public: class Argument { protected: - Argument() { } + Argument() = default; public: - virtual ~Argument() { } + virtual ~Argument() = default; virtual Argument &set_help(const std::string &) = 0; }; @@ -103,9 +103,9 @@ private: class Store { protected: - Store() { } + Store() = default; public: - virtual ~Store() { } + virtual ~Store() = default; virtual Store *clone() const = 0; @@ -117,28 +117,28 @@ private: class OptionImpl: public Option { protected: - char shrt; + char shrt = 0; std::string lng; - ArgType arg_type; - unsigned seen_count; - unsigned *ext_seen_count; + ArgType arg_type = NO_ARG; + unsigned seen_count = 0; + unsigned *ext_seen_count = nullptr; std::string help; - std::string metavar; - Store *store; + std::string metavar = "ARG"; + 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 &); }; @@ -147,15 +147,15 @@ private: { private: std::string name; - ArgType type; + ArgType type = REQUIRED_ARG; std::string help; - Store *store; + 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,20 +192,20 @@ 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)); } }; - bool help; - std::list opts; - std::list args; + bool help = false; + std::vector opts; + std::vector args; std::vector args_raw; public: