]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/getopt.h
Use nullptr instead of 0 for pointers
[libs/core.git] / source / core / getopt.h
index 64a946c80f1b4bd9ee35509c8f297fde0bdf6671..ade620bf94d5c46bc2b6c36197a807a4b4edb986 100644 (file)
@@ -6,7 +6,6 @@
 #include <string>
 #include <vector>
 #include <msp/strings/lexicalcast.h>
-#include "attributes.h"
 #include "noncopyable.h"
 
 namespace Msp {
@@ -14,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) { }
+       virtual ~usage_error() throw() = default;
 
-       const char *help() const throw() { return help_.c_str(); }
+       const char *help() const throw() { return m_help.c_str(); }
 };
 
 
@@ -73,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;
@@ -93,9 +92,9 @@ public:
        class Argument
        {
        protected:
-               Argument() { }
+               Argument() = default;
        public:
-               virtual ~Argument() { }
+               virtual ~Argument() = default;
 
                virtual Argument &set_help(const std::string &) = 0;
        };
@@ -104,9 +103,9 @@ private:
        class Store
        {
        protected:
-               Store() { }
+               Store() = default;
        public:
-               virtual ~Store() { }
+               virtual ~Store() = default;
 
                virtual Store *clone() const = 0;
 
@@ -118,14 +117,14 @@ 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);
@@ -148,9 +147,9 @@ 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);
@@ -204,22 +203,15 @@ private:
                { data.push_back(lexical_cast<typename T::value_type>(a)); }
        };
 
-       typedef std::list<OptionImpl *> OptionList;
-       typedef std::list<ArgumentImpl *> ArgumentList;
-
-       bool help;
-       OptionList opts;
-       ArgumentList args;
+       bool help = false;
+       std::vector<OptionImpl *> opts;
+       std::vector<ArgumentImpl *> args;
        std::vector<std::string> args_raw;
 
 public:
        GetOpt();
        ~GetOpt();
 
-       /** Returns any non-option arguments encountered during processing.
-       Deprecated; use add_argument instead. */
-       DEPRECATED const std::vector<std::string> &get_args() const { return args_raw; }
-
        /** Adds an option with both short and long forms.  Processing depends on
        the type of the destination variable and whether an argument is taken or
        not.  With an argument, the value is lexical_cast to the appropriate type