summaryrefslogtreecommitdiffstats
path: root/arg_parser.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2020-07-03 17:56:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2020-07-03 17:56:10 +0000
commit19bf9bf2f2650cfb1bc9528a8d6f50a33b55d145 (patch)
treeae5b3c81a1ce60a1440569e8f0227e575642404b /arg_parser.h
parentAdding upstream version 1.8. (diff)
downloadzutils-19bf9bf2f2650cfb1bc9528a8d6f50a33b55d145.tar.xz
zutils-19bf9bf2f2650cfb1bc9528a8d6f50a33b55d145.zip
Adding upstream version 1.9.upstream/1.9
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'arg_parser.h')
-rw-r--r--arg_parser.h69
1 files changed, 35 insertions, 34 deletions
diff --git a/arg_parser.h b/arg_parser.h
index ceb9933..d9a4af0 100644
--- a/arg_parser.h
+++ b/arg_parser.h
@@ -1,43 +1,43 @@
-/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
- Copyright (C) 2006-2019 Antonio Diaz Diaz.
+/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
+ Copyright (C) 2006-2020 Antonio Diaz Diaz.
- This library is free software. Redistribution and use in source and
- binary forms, with or without modification, are permitted provided
- that the following conditions are met:
+ This library is free software. Redistribution and use in source and
+ binary forms, with or without modification, are permitted provided
+ that the following conditions are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions, and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* Arg_parser reads the arguments in 'argv' and creates a number of
- option codes, option arguments and non-option arguments.
+/* Arg_parser reads the arguments in 'argv' and creates a number of
+ option codes, option arguments, and non-option arguments.
- In case of error, 'error' returns a non-empty error message.
+ In case of error, 'error' returns a non-empty error message.
- 'options' is an array of 'struct Option' terminated by an element
- containing a code which is zero. A null name means a short-only
- option. A code value outside the unsigned char range means a
- long-only option.
+ 'options' is an array of 'struct Option' terminated by an element
+ containing a code which is zero. A null name means a short-only
+ option. A code value outside the unsigned char range means a
+ long-only option.
- Arg_parser normally makes it appear as if all the option arguments
- were specified before all the non-option arguments for the purposes
- of parsing, even if the user of your program intermixed option and
- non-option arguments. If you want the arguments in the exact order
- the user typed them, call 'Arg_parser' with 'in_order' = true.
+ Arg_parser normally makes it appear as if all the option arguments
+ were specified before all the non-option arguments for the purposes
+ of parsing, even if the user of your program intermixed option and
+ non-option arguments. If you want the arguments in the exact order
+ the user typed them, call 'Arg_parser' with 'in_order' = true.
- The argument '--' terminates all options; any following arguments are
- treated as non-option arguments, even if they begin with a hyphen.
+ The argument '--' terminates all options; any following arguments are
+ treated as non-option arguments, even if they begin with a hyphen.
- The syntax for optional option arguments is '-<short_option><argument>'
- (without whitespace), or '--<long_option>=<argument>'.
+ The syntax for optional option arguments is '-<short_option><argument>'
+ (without whitespace), or '--<long_option>=<argument>'.
*/
class Arg_parser
@@ -61,6 +61,7 @@ private:
explicit Record( const char * const arg ) : code( 0 ), argument( arg ) {}
};
+ const std::string empty_arg;
std::string error_;
std::vector< Record > data;
@@ -73,17 +74,17 @@ public:
Arg_parser( const int argc, const char * const argv[],
const Option options[], const bool in_order = false );
- // Restricted constructor. Parses a single token and argument (if any)
+ // Restricted constructor. Parses a single token and argument (if any).
Arg_parser( const char * const opt, const char * const arg,
const Option options[] );
const std::string & error() const { return error_; }
- // The number of arguments parsed (may be different from argc)
+ // The number of arguments parsed. May be different from argc.
int arguments() const { return data.size(); }
- // If code( i ) is 0, argument( i ) is a non-option.
- // Else argument( i ) is the option's argument (or empty).
+ /* If code( i ) is 0, argument( i ) is a non-option.
+ Else argument( i ) is the option's argument (or empty). */
int code( const int i ) const
{
if( i >= 0 && i < arguments() ) return data[i].code;
@@ -93,6 +94,6 @@ public:
const std::string & argument( const int i ) const
{
if( i >= 0 && i < arguments() ) return data[i].argument;
- else return error_;
+ else return empty_arg;
}
};