diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2009-12-10 09:47:29 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2009-12-10 09:47:29 +0200 |
commit | f8edfd22cb45b554a573d2722900196758e9e958 (patch) | |
tree | b2c800c8793f08be287a67ed72517f9cc2831fda /cli/options.hxx | |
parent | eddefea6ea39e64e9eb5adf74a279a230a63cf5b (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.hxx | 30 |
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_; |