Documentation improvements.
[command.git] / include / option.h
index 426942bf41cb7cd4616af64ab655a99cee41a8d3..516fce016eb80c6d6e350c6e050fc498e9d3c497 100644 (file)
 namespace command {
     /**
      * Class responsible for handling commandline options.
-     * Options are non-required, named parameters of program.
+     * Options are named parameters of program.
      *
      * Example:
-     *  ./myprog OptionName=OptionValue
-     *  ./myprog -f=/some/file
-     *  ./myprog --level=15
+     *  ./myprog OptionName=OptionValue
+     *  ./myprog -f=/some/file
+     *  ./myprog --level=15
      */
-    template<typename OptionType>
+    template<typename ParameterType>
     class Option
-        : public Parameter, public Callable<OptionType>  {
+        : public Parameter, public Callable<ParameterType>  {
     public:
         typedef std::string OptionName;
     protected:
@@ -31,10 +31,7 @@ namespace command {
         /**
          * Current Option value
          */
-        OptionType value;
-
-        /** Variable indicating if current Option was already used or not */
-        bool used = false;
+        ParameterType value;
 
     public:
         /**
@@ -44,8 +41,8 @@ namespace command {
          * @param description Description of current Option
          * @param function Function used to handle current Option.
          */
-        Option(const std::string & name, const std::string & description, void (*function)(OptionType))
-            : Parameter(description), Callable<OptionType>(function), name(name) {
+        Option(const std::string & name, const std::string & description, void (*function)(ParameterType))
+            : Parameter(description), Callable<ParameterType>(function), name(name) {
         }
 
         /**
@@ -54,7 +51,7 @@ namespace command {
         virtual ~Option() { }
 
         /**
-         *
+         * \inheritdoc
          */
         virtual void handle() {
             this->call(value);
@@ -71,7 +68,7 @@ namespace command {
          * If no equal sign is after OptionName part,
          * std::invalid_argument exception with appropriate message is thrown
          *
-         * If conversion of OptionValue part to OptionType failed,
+         * If conversion of OptionValue part to ParameterType failed,
          * std::invalid_argument exception with appropriate message is thrown
          *
          * @param argv command line value against which test will be made.
@@ -79,18 +76,18 @@ namespace command {
          *
          * @return If passed argv succesfully detected OptionName part as a
          *  current option and its OptionValue part has been succesfully
-         *  converted to OptionType, returns true and Option is set as used one.
+         *  converted to ParameterType, returns true and Option is set as used one.
          *  Otherwise returns false and can be used to check against next value.
          *
          * @throw std::invalid_argument when OptionName part has no equal sign
          *  after itself
          * @throw std::invalid_argument when OptionValue part failed conversion
-         *  to OptionType
+         *  to ParameterType
          */
         virtual bool understand(const std::string & argv)
             throw(std::invalid_argument) {
 
-            if ((!used) && (argv.find(name) == 0)) {
+            if ((!isUsed()) && (argv.find(name) == 0)) {
                 std::size_t pos = argv.find("=");
 
                 if (pos != name.size()) {
@@ -136,10 +133,6 @@ namespace command {
          * Current Option name
          */
         const OptionName name;
-
-        /** Variable indicating if current Option was already used or not */
-        bool used = false;
-
     public:
         /**
          * Default constructor.
@@ -175,7 +168,7 @@ namespace command {
          *  used to check against next value.
          */
         virtual bool understand(const std::string & argv) {
-            if ((!used) &&
+            if ((!isUsed()) &&
                 (argv == name)) {
                 used = true;
                 return true;