From f8edfd22cb45b554a573d2722900196758e9e958 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 10 Dec 2009 09:47:29 +0200 Subject: 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. --- cli/options.hxx | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'cli/options.hxx') 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_; -- cgit v1.1