summaryrefslogtreecommitdiff
path: root/cli/options.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-12-10 09:47:29 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-12-10 09:47:29 +0200
commitf8edfd22cb45b554a573d2722900196758e9e958 (patch)
treeb2c800c8793f08be287a67ed72517f9cc2831fda /cli/options.hxx
parenteddefea6ea39e64e9eb5adf74a279a230a63cf5b (diff)
Scanner-based parsing with support for element erasing
Also implement argv_file_scanner which provides support for reading command line arguments from the argv array as well as files specified with command line options. New examples: file. New tests: ctor, erase, file.
Diffstat (limited to 'cli/options.hxx')
-rw-r--r--cli/options.hxx30
1 files changed, 22 insertions, 8 deletions
diff --git a/cli/options.hxx b/cli/options.hxx
index 2be8e91..54143b9 100644
--- a/cli/options.hxx
+++ b/cli/options.hxx
@@ -166,8 +166,8 @@ namespace cli
class argv_scanner: public scanner
{
public:
- argv_scanner (int argc, char** argv);
- argv_scanner (int start, int argc, char** argv);
+ argv_scanner (int& argc, char** argv, bool erase = false);
+ argv_scanner (int start, int& argc, char** argv, bool erase = false);
int
end () const;
@@ -184,9 +184,11 @@ namespace cli
virtual void
skip ();
- private:int i_;
- int argc_;
+ private:
+ int i_;
+ int& argc_;
char** argv_;
+ bool erase_;
};
}
@@ -202,27 +204,35 @@ class options
{
public:
- options (int argc,
+ options (int& argc,
char** argv,
+ bool erase = false,
::cli::unknown_mode option = ::cli::unknown_mode::fail,
::cli::unknown_mode argument = ::cli::unknown_mode::stop);
options (int start,
- int argc,
+ int& argc,
char** argv,
+ bool erase = false,
::cli::unknown_mode option = ::cli::unknown_mode::fail,
::cli::unknown_mode argument = ::cli::unknown_mode::stop);
- options (int argc,
+ options (int& argc,
char** argv,
int& end,
+ bool erase = false,
::cli::unknown_mode option = ::cli::unknown_mode::fail,
::cli::unknown_mode argument = ::cli::unknown_mode::stop);
options (int start,
- int argc,
+ int& argc,
char** argv,
int& end,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ options (::cli::scanner&,
::cli::unknown_mode option = ::cli::unknown_mode::fail,
::cli::unknown_mode argument = ::cli::unknown_mode::stop);
@@ -242,6 +252,9 @@ class options
generate_modifier () const;
const bool&
+ generate_file_scanner () const;
+
+ const bool&
suppress_inline () const;
const bool&
@@ -329,6 +342,7 @@ class options
bool version_;
std::string output_dir_;
bool generate_modifier_;
+ bool generate_file_scanner_;
bool suppress_inline_;
bool suppress_usage_;
bool long_usage_;