summaryrefslogtreecommitdiff
path: root/cli/cli/bootstrap
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-06-06 22:42:16 +0300
committerBoris Kolpackov <boris@codesynthesis.com>2021-09-20 16:06:46 +0200
commit2181ec73117f2e18cc622ead6256c8104b631214 (patch)
treec9d1bb2a8d3140b6cc6dd162be8129f14e38a717 /cli/cli/bootstrap
parenta599248e9dfab9f5d57c06bed56f75941cb00047 (diff)
Use ad hoc recipe for parsing code and documentation generating
The overall approach is to store pre-generated bootstrap options.?xx and cli.{1,xhtml} and automatically update them in the development build (config.cli.develop=true). See README.md in the root of the repository for details.
Diffstat (limited to 'cli/cli/bootstrap')
-rw-r--r--cli/cli/bootstrap/cli/options.cxx2201
-rw-r--r--cli/cli/bootstrap/cli/options.hxx1673
-rw-r--r--cli/cli/bootstrap/cli/options.ixx2352
3 files changed, 6226 insertions, 0 deletions
diff --git a/cli/cli/bootstrap/cli/options.cxx b/cli/cli/bootstrap/cli/options.cxx
new file mode 100644
index 0000000..56dd24f
--- /dev/null
+++ b/cli/cli/bootstrap/cli/options.cxx
@@ -0,0 +1,2201 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cli/options.hxx>
+
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+#include <utility>
+#include <ostream>
+#include <sstream>
+#include <cstring>
+#include <fstream>
+
+namespace cli
+{
+ // unknown_option
+ //
+ unknown_option::
+ ~unknown_option () throw ()
+ {
+ }
+
+ void unknown_option::
+ print (::std::ostream& os) const
+ {
+ os << "unknown option '" << option ().c_str () << "'";
+ }
+
+ const char* unknown_option::
+ what () const throw ()
+ {
+ return "unknown option";
+ }
+
+ // unknown_argument
+ //
+ unknown_argument::
+ ~unknown_argument () throw ()
+ {
+ }
+
+ void unknown_argument::
+ print (::std::ostream& os) const
+ {
+ os << "unknown argument '" << argument ().c_str () << "'";
+ }
+
+ const char* unknown_argument::
+ what () const throw ()
+ {
+ return "unknown argument";
+ }
+
+ // missing_value
+ //
+ missing_value::
+ ~missing_value () throw ()
+ {
+ }
+
+ void missing_value::
+ print (::std::ostream& os) const
+ {
+ os << "missing value for option '" << option ().c_str () << "'";
+ }
+
+ const char* missing_value::
+ what () const throw ()
+ {
+ return "missing option value";
+ }
+
+ // invalid_value
+ //
+ invalid_value::
+ ~invalid_value () throw ()
+ {
+ }
+
+ void invalid_value::
+ print (::std::ostream& os) const
+ {
+ os << "invalid value '" << value ().c_str () << "' for option '"
+ << option ().c_str () << "'";
+
+ if (!message ().empty ())
+ os << ": " << message ().c_str ();
+ }
+
+ const char* invalid_value::
+ what () const throw ()
+ {
+ return "invalid option value";
+ }
+
+ // eos_reached
+ //
+ void eos_reached::
+ print (::std::ostream& os) const
+ {
+ os << what ();
+ }
+
+ const char* eos_reached::
+ what () const throw ()
+ {
+ return "end of argument stream reached";
+ }
+
+ // file_io_failure
+ //
+ file_io_failure::
+ ~file_io_failure () throw ()
+ {
+ }
+
+ void file_io_failure::
+ print (::std::ostream& os) const
+ {
+ os << "unable to open file '" << file ().c_str () << "' or read failure";
+ }
+
+ const char* file_io_failure::
+ what () const throw ()
+ {
+ return "unable to open file or read failure";
+ }
+
+ // unmatched_quote
+ //
+ unmatched_quote::
+ ~unmatched_quote () throw ()
+ {
+ }
+
+ void unmatched_quote::
+ print (::std::ostream& os) const
+ {
+ os << "unmatched quote in argument '" << argument ().c_str () << "'";
+ }
+
+ const char* unmatched_quote::
+ what () const throw ()
+ {
+ return "unmatched quote";
+ }
+
+ // scanner
+ //
+ scanner::
+ ~scanner ()
+ {
+ }
+
+ // argv_scanner
+ //
+ bool argv_scanner::
+ more ()
+ {
+ return i_ < argc_;
+ }
+
+ const char* argv_scanner::
+ peek ()
+ {
+ if (i_ < argc_)
+ return argv_[i_];
+ else
+ throw eos_reached ();
+ }
+
+ const char* argv_scanner::
+ next ()
+ {
+ if (i_ < argc_)
+ {
+ const char* r (argv_[i_]);
+
+ if (erase_)
+ {
+ for (int i (i_ + 1); i < argc_; ++i)
+ argv_[i - 1] = argv_[i];
+
+ --argc_;
+ argv_[argc_] = 0;
+ }
+ else
+ ++i_;
+
+ ++start_position_;
+ return r;
+ }
+ else
+ throw eos_reached ();
+ }
+
+ void argv_scanner::
+ skip ()
+ {
+ if (i_ < argc_)
+ {
+ ++i_;
+ ++start_position_;
+ }
+ else
+ throw eos_reached ();
+ }
+
+ std::size_t argv_scanner::
+ position ()
+ {
+ return start_position_;
+ }
+
+ // argv_file_scanner
+ //
+ int argv_file_scanner::zero_argc_ = 0;
+ std::string argv_file_scanner::empty_string_;
+
+ bool argv_file_scanner::
+ more ()
+ {
+ if (!args_.empty ())
+ return true;
+
+ while (base::more ())
+ {
+ // See if the next argument is the file option.
+ //
+ const char* a (base::peek ());
+ const option_info* oi = 0;
+ const char* ov = 0;
+
+ if (!skip_)
+ {
+ if ((oi = find (a)) != 0)
+ {
+ base::next ();
+
+ if (!base::more ())
+ throw missing_value (a);
+
+ ov = base::next ();
+ }
+ else if (std::strncmp (a, "-", 1) == 0)
+ {
+ if ((ov = std::strchr (a, '=')) != 0)
+ {
+ std::string o (a, 0, ov - a);
+ if ((oi = find (o.c_str ())) != 0)
+ {
+ base::next ();
+ ++ov;
+ }
+ }
+ }
+ }
+
+ if (oi != 0)
+ {
+ if (oi->search_func != 0)
+ {
+ std::string f (oi->search_func (ov, oi->arg));
+
+ if (!f.empty ())
+ load (f);
+ }
+ else
+ load (ov);
+
+ if (!args_.empty ())
+ return true;
+ }
+ else
+ {
+ if (!skip_)
+ skip_ = (std::strcmp (a, "--") == 0);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ const char* argv_file_scanner::
+ peek ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? base::peek () : args_.front ().value.c_str ();
+ }
+
+ const std::string& argv_file_scanner::
+ peek_file ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? empty_string_ : *args_.front ().file;
+ }
+
+ std::size_t argv_file_scanner::
+ peek_line ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ return args_.empty () ? 0 : args_.front ().line;
+ }
+
+ const char* argv_file_scanner::
+ next ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ if (args_.empty ())
+ return base::next ();
+ else
+ {
+ hold_[i_ == 0 ? ++i_ : --i_].swap (args_.front ().value);
+ args_.pop_front ();
+ ++start_position_;
+ return hold_[i_].c_str ();
+ }
+ }
+
+ void argv_file_scanner::
+ skip ()
+ {
+ if (!more ())
+ throw eos_reached ();
+
+ if (args_.empty ())
+ return base::skip ();
+ else
+ {
+ args_.pop_front ();
+ ++start_position_;
+ }
+ }
+
+ const argv_file_scanner::option_info* argv_file_scanner::
+ find (const char* a) const
+ {
+ for (std::size_t i (0); i < options_count_; ++i)
+ if (std::strcmp (a, options_[i].option) == 0)
+ return &options_[i];
+
+ return 0;
+ }
+
+ std::size_t argv_file_scanner::
+ position ()
+ {
+ return start_position_;
+ }
+
+ void argv_file_scanner::
+ load (const std::string& file)
+ {
+ using namespace std;
+
+ ifstream is (file.c_str ());
+
+ if (!is.is_open ())
+ throw file_io_failure (file);
+
+ files_.push_back (file);
+
+ arg a;
+ a.file = &*files_.rbegin ();
+
+ for (a.line = 1; !is.eof (); ++a.line)
+ {
+ string line;
+ getline (is, line);
+
+ if (is.fail () && !is.eof ())
+ throw file_io_failure (file);
+
+ string::size_type n (line.size ());
+
+ // Trim the line from leading and trailing whitespaces.
+ //
+ if (n != 0)
+ {
+ const char* f (line.c_str ());
+ const char* l (f + n);
+
+ const char* of (f);
+ while (f < l && (*f == ' ' || *f == '\t' || *f == '\r'))
+ ++f;
+
+ --l;
+
+ const char* ol (l);
+ while (l > f && (*l == ' ' || *l == '\t' || *l == '\r'))
+ --l;
+
+ if (f != of || l != ol)
+ line = f <= l ? string (f, l - f + 1) : string ();
+ }
+
+ // Ignore empty lines, those that start with #.
+ //
+ if (line.empty () || line[0] == '#')
+ continue;
+
+ string::size_type p (string::npos);
+ if (line.compare (0, 1, "-") == 0)
+ {
+ p = line.find (' ');
+
+ string::size_type q (line.find ('='));
+ if (q != string::npos && q < p)
+ p = q;
+ }
+
+ string s1;
+ if (p != string::npos)
+ {
+ s1.assign (line, 0, p);
+
+ // Skip leading whitespaces in the argument.
+ //
+ if (line[p] == '=')
+ ++p;
+ else
+ {
+ n = line.size ();
+ for (++p; p < n; ++p)
+ {
+ char c (line[p]);
+ if (c != ' ' && c != '\t' && c != '\r')
+ break;
+ }
+ }
+ }
+ else if (!skip_)
+ skip_ = (line == "--");
+
+ string s2 (line, p != string::npos ? p : 0);
+
+ // If the string (which is an option value or argument) is
+ // wrapped in quotes, remove them.
+ //
+ n = s2.size ();
+ char cf (s2[0]), cl (s2[n - 1]);
+
+ if (cf == '"' || cf == '\'' || cl == '"' || cl == '\'')
+ {
+ if (n == 1 || cf != cl)
+ throw unmatched_quote (s2);
+
+ s2 = string (s2, 1, n - 2);
+ }
+
+ if (!s1.empty ())
+ {
+ // See if this is another file option.
+ //
+ const option_info* oi;
+ if (!skip_ && (oi = find (s1.c_str ())))
+ {
+ if (s2.empty ())
+ throw missing_value (oi->option);
+
+ if (oi->search_func != 0)
+ {
+ string f (oi->search_func (s2.c_str (), oi->arg));
+ if (!f.empty ())
+ load (f);
+ }
+ else
+ {
+ // If the path of the file being parsed is not simple and the
+ // path of the file that needs to be loaded is relative, then
+ // complete the latter using the former as a base.
+ //
+#ifndef _WIN32
+ string::size_type p (file.find_last_of ('/'));
+ bool c (p != string::npos && s2[0] != '/');
+#else
+ string::size_type p (file.find_last_of ("/\\"));
+ bool c (p != string::npos && s2[1] != ':');
+#endif
+ if (c)
+ s2.insert (0, file, 0, p + 1);
+
+ load (s2);
+ }
+
+ continue;
+ }
+
+ a.value = s1;
+ args_.push_back (a);
+ }
+
+ a.value = s2;
+ args_.push_back (a);
+ }
+ }
+
+ template <typename X>
+ struct parser
+ {
+ static void
+ parse (X& x, bool& xs, scanner& s)
+ {
+ using namespace std;
+
+ const char* o (s.next ());
+ if (s.more ())
+ {
+ string v (s.next ());
+ istringstream is (v);
+ if (!(is >> x && is.peek () == istringstream::traits_type::eof ()))
+ throw invalid_value (o, v);
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <>
+ struct parser<bool>
+ {
+ static void
+ parse (bool& x, scanner& s)
+ {
+ s.next ();
+ x = true;
+ }
+ };
+
+ template <>
+ struct parser<std::string>
+ {
+ static void
+ parse (std::string& x, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ x = s.next ();
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X>
+ struct parser<std::pair<X, std::size_t> >
+ {
+ static void
+ parse (std::pair<X, std::size_t>& x, bool& xs, scanner& s)
+ {
+ x.second = s.position ();
+ parser<X>::parse (x.first, xs, s);
+ }
+ };
+
+ template <typename X>
+ struct parser<std::vector<X> >
+ {
+ static void
+ parse (std::vector<X>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.push_back (x);
+ xs = true;
+ }
+ };
+
+ template <typename X, typename C>
+ struct parser<std::set<X, C> >
+ {
+ static void
+ parse (std::set<X, C>& c, bool& xs, scanner& s)
+ {
+ X x;
+ bool dummy;
+ parser<X>::parse (x, dummy, s);
+ c.insert (x);
+ xs = true;
+ }
+ };
+
+ template <typename K, typename V, typename C>
+ struct parser<std::map<K, V, C> >
+ {
+ static void
+ parse (std::map<K, V, C>& m, bool& xs, scanner& s)
+ {
+ const char* o (s.next ());
+
+ if (s.more ())
+ {
+ std::size_t pos (s.position ());
+ std::string ov (s.next ());
+ std::string::size_type p = ov.find ('=');
+
+ K k = K ();
+ V v = V ();
+ std::string kstr (ov, 0, p);
+ std::string vstr (ov, (p != std::string::npos ? p + 1 : ov.size ()));
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (o),
+ 0
+ };
+
+ bool dummy;
+ if (!kstr.empty ())
+ {
+ av[1] = const_cast<char*> (kstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<K>::parse (k, dummy, s);
+ }
+
+ if (!vstr.empty ())
+ {
+ av[1] = const_cast<char*> (vstr.c_str ());
+ argv_scanner s (0, ac, av, false, pos);
+ parser<V>::parse (v, dummy, s);
+ }
+
+ m[k] = v;
+ }
+ else
+ throw missing_value (o);
+
+ xs = true;
+ }
+ };
+
+ template <typename X, typename T, T X::*M>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, s);
+ }
+
+ template <typename X, typename T, T X::*M, bool X::*S>
+ void
+ thunk (X& x, scanner& s)
+ {
+ parser<T>::parse (x.*M, x.*S, s);
+ }
+}
+
+#include <map>
+#include <cstring>
+
+// options
+//
+
+options::
+options ()
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+}
+
+options::
+options (int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+}
+
+options::
+options (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+}
+
+options::
+options (int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+ ::cli::argv_scanner s (argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+}
+
+options::
+options (int start,
+ int& argc,
+ char** argv,
+ int& end,
+ bool erase,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+ ::cli::argv_scanner s (start, argc, argv, erase);
+ _parse (s, opt, arg);
+ end = s.end ();
+}
+
+options::
+options (::cli::scanner& s,
+ ::cli::unknown_mode opt,
+ ::cli::unknown_mode arg)
+: build2_metadata_ (),
+ build2_metadata_specified_ (false),
+ help_ (),
+ version_ (),
+ include_path_ (),
+ include_path_specified_ (false),
+ output_dir_ (),
+ output_dir_specified_ (false),
+ std_ (cxx_version::cxx98),
+ std_specified_ (false),
+ generate_modifier_ (),
+ generate_specifier_ (),
+ generate_parse_ (),
+ generate_merge_ (),
+ generate_description_ (),
+ generate_file_scanner_ (),
+ generate_vector_scanner_ (),
+ generate_group_scanner_ (),
+ suppress_inline_ (),
+ suppress_cli_ (),
+ cli_namespace_ ("::cli"),
+ cli_namespace_specified_ (false),
+ ostream_type_ ("::std::ostream"),
+ ostream_type_specified_ (false),
+ generate_cxx_ (),
+ generate_man_ (),
+ generate_html_ (),
+ generate_txt_ (),
+ stdout__ (),
+ suppress_undocumented_ (),
+ suppress_usage_ (),
+ long_usage_ (),
+ short_usage_ (),
+ page_usage_ (),
+ page_usage_specified_ (false),
+ option_length_ (0),
+ option_length_specified_ (false),
+ ansi_color_ (),
+ exclude_base_ (),
+ include_base_last_ (),
+ class_doc_ (),
+ class_doc_specified_ (false),
+ class__ (),
+ class__specified_ (false),
+ docvar_ (),
+ docvar_specified_ (false),
+ link_regex_ (),
+ link_regex_specified_ (false),
+ link_regex_trace_ (),
+ html_heading_map_ (),
+ html_heading_map_specified_ (false),
+ omit_link_check_ (),
+ hxx_prologue_ (),
+ hxx_prologue_specified_ (false),
+ ixx_prologue_ (),
+ ixx_prologue_specified_ (false),
+ cxx_prologue_ (),
+ cxx_prologue_specified_ (false),
+ man_prologue_ (),
+ man_prologue_specified_ (false),
+ html_prologue_ (),
+ html_prologue_specified_ (false),
+ txt_prologue_ (),
+ txt_prologue_specified_ (false),
+ hxx_epilogue_ (),
+ hxx_epilogue_specified_ (false),
+ ixx_epilogue_ (),
+ ixx_epilogue_specified_ (false),
+ cxx_epilogue_ (),
+ cxx_epilogue_specified_ (false),
+ man_epilogue_ (),
+ man_epilogue_specified_ (false),
+ html_epilogue_ (),
+ html_epilogue_specified_ (false),
+ txt_epilogue_ (),
+ txt_epilogue_specified_ (false),
+ hxx_prologue_file_ (),
+ hxx_prologue_file_specified_ (false),
+ ixx_prologue_file_ (),
+ ixx_prologue_file_specified_ (false),
+ cxx_prologue_file_ (),
+ cxx_prologue_file_specified_ (false),
+ man_prologue_file_ (),
+ man_prologue_file_specified_ (false),
+ html_prologue_file_ (),
+ html_prologue_file_specified_ (false),
+ txt_prologue_file_ (),
+ txt_prologue_file_specified_ (false),
+ hxx_epilogue_file_ (),
+ hxx_epilogue_file_specified_ (false),
+ ixx_epilogue_file_ (),
+ ixx_epilogue_file_specified_ (false),
+ cxx_epilogue_file_ (),
+ cxx_epilogue_file_specified_ (false),
+ man_epilogue_file_ (),
+ man_epilogue_file_specified_ (false),
+ html_epilogue_file_ (),
+ html_epilogue_file_specified_ (false),
+ txt_epilogue_file_ (),
+ txt_epilogue_file_specified_ (false),
+ output_prefix_ (),
+ output_prefix_specified_ (false),
+ output_suffix_ (),
+ output_suffix_specified_ (false),
+ hxx_suffix_ (".hxx"),
+ hxx_suffix_specified_ (false),
+ ixx_suffix_ (".ixx"),
+ ixx_suffix_specified_ (false),
+ cxx_suffix_ (".cxx"),
+ cxx_suffix_specified_ (false),
+ man_suffix_ (".1"),
+ man_suffix_specified_ (false),
+ html_suffix_ (".html"),
+ html_suffix_specified_ (false),
+ txt_suffix_ (".txt"),
+ txt_suffix_specified_ (false),
+ option_prefix_ ("-"),
+ option_prefix_specified_ (false),
+ option_separator_ ("--"),
+ option_separator_specified_ (false),
+ keep_separator_ (),
+ no_combined_flags_ (),
+ no_combined_values_ (),
+ include_with_brackets_ (),
+ include_prefix_ (),
+ include_prefix_specified_ (false),
+ guard_prefix_ (),
+ guard_prefix_specified_ (false),
+ reserved_name_ (),
+ reserved_name_specified_ (false),
+ options_file_ (),
+ options_file_specified_ (false)
+{
+ _parse (s, opt, arg);
+}
+
+::cli::usage_para options::
+print_usage (::std::ostream& os, ::cli::usage_para p)
+{
+ CLI_POTENTIALLY_UNUSED (os);
+
+ if (p == ::cli::usage_para::text)
+ os << ::std::endl;
+
+ os << "--help Print usage information and exit." << ::std::endl;
+
+ os << "--version Print version and exit." << ::std::endl;
+
+ os << "--include-path|-I <dir> Search <dir> for bracket-included (<>) options" << ::std::endl
+ << " files." << ::std::endl;
+
+ os << "--output-dir|-o <dir> Write the generated files to <dir> instead of the" << ::std::endl
+ << " current directory." << ::std::endl;
+
+ os << "--std <version> Specify the C++ standard that should be used" << ::std::endl
+ << " during compilation." << ::std::endl;
+
+ os << "--generate-modifier Generate option value modifiers in addition to" << ::std::endl
+ << " accessors." << ::std::endl;
+
+ os << "--generate-specifier Generate functions for determining whether the" << ::std::endl
+ << " option was specified on the command line." << ::std::endl;
+
+ os << "--generate-parse Generate parse() functions instead of parsing" << ::std::endl
+ << " constructors." << ::std::endl;
+
+ os << "--generate-merge Generate merge() functions." << ::std::endl;
+
+ os << "--generate-description Generate the option description list that can be" << ::std::endl
+ << " examined at runtime." << ::std::endl;
+
+ os << "--generate-file-scanner Generate the argv_file_scanner implementation." << ::std::endl;
+
+ os << "--generate-vector-scanner Generate the vector_scanner implementation." << ::std::endl;
+
+ os << "--generate-group-scanner Generate the group_scanner implementation." << ::std::endl;
+
+ os << "--suppress-inline Generate all functions non-inline." << ::std::endl;
+
+ os << "--suppress-cli Do not generate the CLI support types (scanners," << ::std::endl
+ << " parser, etc)." << ::std::endl;
+
+ os << "--cli-namespace <ns> Generate the CLI support types in the <ns>" << ::std::endl
+ << " namespace (cli by default)." << ::std::endl;
+
+ os << "--ostream-type <type> Output stream type instead of the default" << ::std::endl
+ << " std::ostream that should be used to print usage" << ::std::endl
+ << " and exception information." << ::std::endl;
+
+ os << "--generate-cxx Generate C++ code." << ::std::endl;
+
+ os << "--generate-man Generate documentation in the man page format." << ::std::endl;
+
+ os << "--generate-html Generate documentation in the HTML format." << ::std::endl;
+
+ os << "--generate-txt Generate documentation in the plain text format," << ::std::endl
+ << " similar to usage." << ::std::endl;
+
+ os << "--stdout Write output to STDOUT instead of a file." << ::std::endl;
+
+ os << "--suppress-undocumented Suppress the generation of documentation entries" << ::std::endl
+ << " for undocumented options." << ::std::endl;
+
+ os << "--suppress-usage Suppress the generation of the usage printing" << ::std::endl
+ << " code." << ::std::endl;
+
+ os << "--long-usage If no short documentation string is provided, use" << ::std::endl
+ << " the complete long documentation string in usage." << ::std::endl;
+
+ os << "--short-usage If specified together with --long-usage, generate" << ::std::endl
+ << " both short and long usage versions." << ::std::endl;
+
+ os << "--page-usage <name> Generate the combined usage printing code for the" << ::std::endl
+ << " entire page." << ::std::endl;
+
+ os << "--option-length <len> Indent option descriptions <len> characters when" << ::std::endl
+ << " printing usage." << ::std::endl;
+
+ os << "--ansi-color Use ANSI color escape sequences when printing" << ::std::endl
+ << " usage." << ::std::endl;
+
+ os << "--exclude-base Exclude base class information from usage and" << ::std::endl
+ << " documentation." << ::std::endl;
+
+ os << "--include-base-last Include base class information after derived for" << ::std::endl
+ << " usage and documentation." << ::std::endl;
+
+ os << "--class-doc <name>=<kind> Specify the documentation <kind> that should be" << ::std::endl
+ << " used for the options class <name>." << ::std::endl;
+
+ os << "--class <name> Generate the man page, HTML, or text documentation" << ::std::endl
+ << " only for the options class <name>." << ::std::endl;
+
+ os << "--docvar|-v <name>=<val> Set documentation variable <name> to the value" << ::std::endl
+ << " <val>." << ::std::endl;
+
+ os << "--link-regex <regex> Add <regex> to the list of regular expressions" << ::std::endl
+ << " used to transform link targets in the generated" << ::std::endl
+ << " documentation." << ::std::endl;
+
+ os << "--link-regex-trace Trace the process of applying regular expressions" << ::std::endl
+ << " specified with the --link-regex option." << ::std::endl;
+
+ os << "--html-heading-map <c>=<h> Map CLI heading <c> (valid values: 'H', '0', '1'," << ::std::endl
+ << " 'h', and '2') to HTML heading <h> (for example," << ::std::endl
+ << " 'h1', 'h2', etc)." << ::std::endl;
+
+ os << "--omit-link-check Don't check that local fragment link references" << ::std::endl
+ << " (\\l{#ref ...}) resolve to ids." << ::std::endl;
+
+ os << "--hxx-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " C++ header file." << ::std::endl;
+
+ os << "--ixx-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " C++ inline file." << ::std::endl;
+
+ os << "--cxx-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " C++ source file." << ::std::endl;
+
+ os << "--man-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " man page file." << ::std::endl;
+
+ os << "--html-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " HTML file." << ::std::endl;
+
+ os << "--txt-prologue <text> Insert <text> at the beginning of the generated" << ::std::endl
+ << " text file." << ::std::endl;
+
+ os << "--hxx-epilogue <text> Insert <text> at the end of the generated C++" << ::std::endl
+ << " header file." << ::std::endl;
+
+ os << "--ixx-epilogue <text> Insert <text> at the end of the generated C++" << ::std::endl
+ << " inline file." << ::std::endl;
+
+ os << "--cxx-epilogue <text> Insert <text> at the end of the generated C++" << ::std::endl
+ << " source file." << ::std::endl;
+
+ os << "--man-epilogue <text> Insert <text> at the end of the generated man page" << ::std::endl
+ << " file." << ::std::endl;
+
+ os << "--html-epilogue <text> Insert <text> at the end of the generated HTML" << ::std::endl
+ << " file." << ::std::endl;
+
+ os << "--txt-epilogue <text> Insert <text> at the end of the generated text" << ::std::endl
+ << " file." << ::std::endl;
+
+ os << "--hxx-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated C++ header file." << ::std::endl;
+
+ os << "--ixx-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated C++ inline file." << ::std::endl;
+
+ os << "--cxx-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated C++ source file." << ::std::endl;
+
+ os << "--man-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated man page file." << ::std::endl;
+
+ os << "--html-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated HTML file." << ::std::endl;
+
+ os << "--txt-prologue-file <file> Insert the content of <file> at the beginning of" << ::std::endl
+ << " the generated text file." << ::std::endl;
+
+ os << "--hxx-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated C++ header file." << ::std::endl;
+
+ os << "--ixx-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated C++ inline file." << ::std::endl;
+
+ os << "--cxx-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated C++ source file." << ::std::endl;
+
+ os << "--man-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated man page file." << ::std::endl;
+
+ os << "--html-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated HTML file." << ::std::endl;
+
+ os << "--txt-epilogue-file <file> Insert the content of <file> at the end of the" << ::std::endl
+ << " generated text file." << ::std::endl;
+
+ os << "--output-prefix <prefix> Add <prefix> at the beginning of the generated" << ::std::endl
+ << " output file name(s)." << ::std::endl;
+
+ os << "--output-suffix <suffix> Add <suffix> at the end of the generated output" << ::std::endl
+ << " file name(s)." << ::std::endl;
+
+ os << "--hxx-suffix <suffix> Use <suffix> instead of the default .hxx to" << ::std::endl
+ << " construct the name of the generated header file." << ::std::endl;
+
+ os << "--ixx-suffix <suffix> Use <suffix> instead of the default .ixx to" << ::std::endl
+ << " construct the name of the generated inline file." << ::std::endl;
+
+ os << "--cxx-suffix <suffix> Use <suffix> instead of the default .cxx to" << ::std::endl
+ << " construct the name of the generated source file." << ::std::endl;
+
+ os << "--man-suffix <suffix> Use <suffix> instead of the default .1 to" << ::std::endl
+ << " construct the name of the generated man page file." << ::std::endl;
+
+ os << "--html-suffix <suffix> Use <suffix> instead of the default .html to" << ::std::endl
+ << " construct the name of the generated HTML file." << ::std::endl;
+
+ os << "--txt-suffix <suffix> Use <suffix> instead of the default .txt to" << ::std::endl
+ << " construct the name of the generated text file." << ::std::endl;
+
+ os << "--option-prefix <prefix> Use <prefix> instead of the default '-' as an" << ::std::endl
+ << " option prefix." << ::std::endl;
+
+ os << "--option-separator <sep> Use <sep> instead of the default '--' as an" << ::std::endl
+ << " optional separator between options and arguments." << ::std::endl;
+
+ os << "--keep-separator Leave the option separator in the scanner." << ::std::endl;
+
+ os << "--no-combined-flags Disable support for combining multiple" << ::std::endl
+ << " single-character flags into a single argument (the" << ::std::endl
+ << " -xyz form that is equivalent to -x -y -z)." << ::std::endl;
+
+ os << "--no-combined-values Disable support for combining an option and its" << ::std::endl
+ << " value into a single argument with the assignment" << ::std::endl
+ << " sign (the option=value form)." << ::std::endl;
+
+ os << "--include-with-brackets Use angle brackets (<>) instead of quotes (\"\") in" << ::std::endl
+ << " the generated #include directives." << ::std::endl;
+
+ os << "--include-prefix <prefix> Add <prefix> to the generated #include directive" << ::std::endl
+ << " paths." << ::std::endl;
+
+ os << "--guard-prefix <prefix> Add <prefix> to the generated header inclusion" << ::std::endl
+ << " guards." << ::std::endl;
+
+ os << "--reserved-name <name>=<rep> Add <name> with an optional <rep> replacement to" << ::std::endl
+ << " the list of names that should not be used as" << ::std::endl
+ << " identifiers." << ::std::endl;
+
+ os << "--options-file <file> Read additional options from <file>." << ::std::endl;
+
+ p = ::cli::usage_para::option;
+
+ return p;
+}
+
+typedef
+std::map<std::string, void (*) (options&, ::cli::scanner&)>
+_cli_options_map;
+
+static _cli_options_map _cli_options_map_;
+
+struct _cli_options_map_init
+{
+ _cli_options_map_init ()
+ {
+ _cli_options_map_["--build2-metadata"] =
+ &::cli::thunk< options, std::uint64_t, &options::build2_metadata_,
+ &options::build2_metadata_specified_ >;
+ _cli_options_map_["--help"] =
+ &::cli::thunk< options, bool, &options::help_ >;
+ _cli_options_map_["--version"] =
+ &::cli::thunk< options, bool, &options::version_ >;
+ _cli_options_map_["--include-path"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::include_path_,
+ &options::include_path_specified_ >;
+ _cli_options_map_["-I"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::include_path_,
+ &options::include_path_specified_ >;
+ _cli_options_map_["--output-dir"] =
+ &::cli::thunk< options, std::string, &options::output_dir_,
+ &options::output_dir_specified_ >;
+ _cli_options_map_["-o"] =
+ &::cli::thunk< options, std::string, &options::output_dir_,
+ &options::output_dir_specified_ >;
+ _cli_options_map_["--std"] =
+ &::cli::thunk< options, cxx_version, &options::std_,
+ &options::std_specified_ >;
+ _cli_options_map_["--generate-modifier"] =
+ &::cli::thunk< options, bool, &options::generate_modifier_ >;
+ _cli_options_map_["--generate-specifier"] =
+ &::cli::thunk< options, bool, &options::generate_specifier_ >;
+ _cli_options_map_["--generate-parse"] =
+ &::cli::thunk< options, bool, &options::generate_parse_ >;
+ _cli_options_map_["--generate-merge"] =
+ &::cli::thunk< options, bool, &options::generate_merge_ >;
+ _cli_options_map_["--generate-description"] =
+ &::cli::thunk< options, bool, &options::generate_description_ >;
+ _cli_options_map_["--generate-file-scanner"] =
+ &::cli::thunk< options, bool, &options::generate_file_scanner_ >;
+ _cli_options_map_["--generate-vector-scanner"] =
+ &::cli::thunk< options, bool, &options::generate_vector_scanner_ >;
+ _cli_options_map_["--generate-group-scanner"] =
+ &::cli::thunk< options, bool, &options::generate_group_scanner_ >;
+ _cli_options_map_["--suppress-inline"] =
+ &::cli::thunk< options, bool, &options::suppress_inline_ >;
+ _cli_options_map_["--suppress-cli"] =
+ &::cli::thunk< options, bool, &options::suppress_cli_ >;
+ _cli_options_map_["--cli-namespace"] =
+ &::cli::thunk< options, std::string, &options::cli_namespace_,
+ &options::cli_namespace_specified_ >;
+ _cli_options_map_["--ostream-type"] =
+ &::cli::thunk< options, std::string, &options::ostream_type_,
+ &options::ostream_type_specified_ >;
+ _cli_options_map_["--generate-cxx"] =
+ &::cli::thunk< options, bool, &options::generate_cxx_ >;
+ _cli_options_map_["--generate-man"] =
+ &::cli::thunk< options, bool, &options::generate_man_ >;
+ _cli_options_map_["--generate-html"] =
+ &::cli::thunk< options, bool, &options::generate_html_ >;
+ _cli_options_map_["--generate-txt"] =
+ &::cli::thunk< options, bool, &options::generate_txt_ >;
+ _cli_options_map_["--stdout"] =
+ &::cli::thunk< options, bool, &options::stdout__ >;
+ _cli_options_map_["--suppress-undocumented"] =
+ &::cli::thunk< options, bool, &options::suppress_undocumented_ >;
+ _cli_options_map_["--suppress-usage"] =
+ &::cli::thunk< options, bool, &options::suppress_usage_ >;
+ _cli_options_map_["--long-usage"] =
+ &::cli::thunk< options, bool, &options::long_usage_ >;
+ _cli_options_map_["--short-usage"] =
+ &::cli::thunk< options, bool, &options::short_usage_ >;
+ _cli_options_map_["--page-usage"] =
+ &::cli::thunk< options, std::string, &options::page_usage_,
+ &options::page_usage_specified_ >;
+ _cli_options_map_["--option-length"] =
+ &::cli::thunk< options, std::size_t, &options::option_length_,
+ &options::option_length_specified_ >;
+ _cli_options_map_["--ansi-color"] =
+ &::cli::thunk< options, bool, &options::ansi_color_ >;
+ _cli_options_map_["--exclude-base"] =
+ &::cli::thunk< options, bool, &options::exclude_base_ >;
+ _cli_options_map_["--include-base-last"] =
+ &::cli::thunk< options, bool, &options::include_base_last_ >;
+ _cli_options_map_["--class-doc"] =
+ &::cli::thunk< options, std::map<std::string, std::string>, &options::class_doc_,
+ &options::class_doc_specified_ >;
+ _cli_options_map_["--class"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::class__,
+ &options::class__specified_ >;
+ _cli_options_map_["--docvar"] =
+ &::cli::thunk< options, std::map<std::string, std::string>, &options::docvar_,
+ &options::docvar_specified_ >;
+ _cli_options_map_["-v"] =
+ &::cli::thunk< options, std::map<std::string, std::string>, &options::docvar_,
+ &options::docvar_specified_ >;
+ _cli_options_map_["--link-regex"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::link_regex_,
+ &options::link_regex_specified_ >;
+ _cli_options_map_["--link-regex-trace"] =
+ &::cli::thunk< options, bool, &options::link_regex_trace_ >;
+ _cli_options_map_["--html-heading-map"] =
+ &::cli::thunk< options, std::map<char, std::string>, &options::html_heading_map_,
+ &options::html_heading_map_specified_ >;
+ _cli_options_map_["--omit-link-check"] =
+ &::cli::thunk< options, bool, &options::omit_link_check_ >;
+ _cli_options_map_["--hxx-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::hxx_prologue_,
+ &options::hxx_prologue_specified_ >;
+ _cli_options_map_["--ixx-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::ixx_prologue_,
+ &options::ixx_prologue_specified_ >;
+ _cli_options_map_["--cxx-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::cxx_prologue_,
+ &options::cxx_prologue_specified_ >;
+ _cli_options_map_["--man-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::man_prologue_,
+ &options::man_prologue_specified_ >;
+ _cli_options_map_["--html-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::html_prologue_,
+ &options::html_prologue_specified_ >;
+ _cli_options_map_["--txt-prologue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::txt_prologue_,
+ &options::txt_prologue_specified_ >;
+ _cli_options_map_["--hxx-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::hxx_epilogue_,
+ &options::hxx_epilogue_specified_ >;
+ _cli_options_map_["--ixx-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::ixx_epilogue_,
+ &options::ixx_epilogue_specified_ >;
+ _cli_options_map_["--cxx-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::cxx_epilogue_,
+ &options::cxx_epilogue_specified_ >;
+ _cli_options_map_["--man-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::man_epilogue_,
+ &options::man_epilogue_specified_ >;
+ _cli_options_map_["--html-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::html_epilogue_,
+ &options::html_epilogue_specified_ >;
+ _cli_options_map_["--txt-epilogue"] =
+ &::cli::thunk< options, std::vector<std::string>, &options::txt_epilogue_,
+ &options::txt_epilogue_specified_ >;
+ _cli_options_map_["--hxx-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::hxx_prologue_file_,
+ &options::hxx_prologue_file_specified_ >;
+ _cli_options_map_["--ixx-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::ixx_prologue_file_,
+ &options::ixx_prologue_file_specified_ >;
+ _cli_options_map_["--cxx-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::cxx_prologue_file_,
+ &options::cxx_prologue_file_specified_ >;
+ _cli_options_map_["--man-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::man_prologue_file_,
+ &options::man_prologue_file_specified_ >;
+ _cli_options_map_["--html-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::html_prologue_file_,
+ &options::html_prologue_file_specified_ >;
+ _cli_options_map_["--txt-prologue-file"] =
+ &::cli::thunk< options, std::string, &options::txt_prologue_file_,
+ &options::txt_prologue_file_specified_ >;
+ _cli_options_map_["--hxx-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::hxx_epilogue_file_,
+ &options::hxx_epilogue_file_specified_ >;
+ _cli_options_map_["--ixx-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::ixx_epilogue_file_,
+ &options::ixx_epilogue_file_specified_ >;
+ _cli_options_map_["--cxx-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::cxx_epilogue_file_,
+ &options::cxx_epilogue_file_specified_ >;
+ _cli_options_map_["--man-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::man_epilogue_file_,
+ &options::man_epilogue_file_specified_ >;
+ _cli_options_map_["--html-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::html_epilogue_file_,
+ &options::html_epilogue_file_specified_ >;
+ _cli_options_map_["--txt-epilogue-file"] =
+ &::cli::thunk< options, std::string, &options::txt_epilogue_file_,
+ &options::txt_epilogue_file_specified_ >;
+ _cli_options_map_["--output-prefix"] =
+ &::cli::thunk< options, std::string, &options::output_prefix_,
+ &options::output_prefix_specified_ >;
+ _cli_options_map_["--output-suffix"] =
+ &::cli::thunk< options, std::string, &options::output_suffix_,
+ &options::output_suffix_specified_ >;
+ _cli_options_map_["--hxx-suffix"] =
+ &::cli::thunk< options, std::string, &options::hxx_suffix_,
+ &options::hxx_suffix_specified_ >;
+ _cli_options_map_["--ixx-suffix"] =
+ &::cli::thunk< options, std::string, &options::ixx_suffix_,
+ &options::ixx_suffix_specified_ >;
+ _cli_options_map_["--cxx-suffix"] =
+ &::cli::thunk< options, std::string, &options::cxx_suffix_,
+ &options::cxx_suffix_specified_ >;
+ _cli_options_map_["--man-suffix"] =
+ &::cli::thunk< options, std::string, &options::man_suffix_,
+ &options::man_suffix_specified_ >;
+ _cli_options_map_["--html-suffix"] =
+ &::cli::thunk< options, std::string, &options::html_suffix_,
+ &options::html_suffix_specified_ >;
+ _cli_options_map_["--txt-suffix"] =
+ &::cli::thunk< options, std::string, &options::txt_suffix_,
+ &options::txt_suffix_specified_ >;
+ _cli_options_map_["--option-prefix"] =
+ &::cli::thunk< options, std::string, &options::option_prefix_,
+ &options::option_prefix_specified_ >;
+ _cli_options_map_["--option-separator"] =
+ &::cli::thunk< options, std::string, &options::option_separator_,
+ &options::option_separator_specified_ >;
+ _cli_options_map_["--keep-separator"] =
+ &::cli::thunk< options, bool, &options::keep_separator_ >;
+ _cli_options_map_["--no-combined-flags"] =
+ &::cli::thunk< options, bool, &options::no_combined_flags_ >;
+ _cli_options_map_["--no-combined-values"] =
+ &::cli::thunk< options, bool, &options::no_combined_values_ >;
+ _cli_options_map_["--include-with-brackets"] =
+ &::cli::thunk< options, bool, &options::include_with_brackets_ >;
+ _cli_options_map_["--include-prefix"] =
+ &::cli::thunk< options, std::string, &options::include_prefix_,
+ &options::include_prefix_specified_ >;
+ _cli_options_map_["--guard-prefix"] =
+ &::cli::thunk< options, std::string, &options::guard_prefix_,
+ &options::guard_prefix_specified_ >;
+ _cli_options_map_["--reserved-name"] =
+ &::cli::thunk< options, std::map<std::string, std::string>, &options::reserved_name_,
+ &options::reserved_name_specified_ >;
+ _cli_options_map_["--options-file"] =
+ &::cli::thunk< options, std::string, &options::options_file_,
+ &options::options_file_specified_ >;
+ }
+};
+
+static _cli_options_map_init _cli_options_map_init_;
+
+bool options::
+_parse (const char* o, ::cli::scanner& s)
+{
+ _cli_options_map::const_iterator i (_cli_options_map_.find (o));
+
+ if (i != _cli_options_map_.end ())
+ {
+ (*(i->second)) (*this, s);
+ return true;
+ }
+
+ return false;
+}
+
+bool options::
+_parse (::cli::scanner& s,
+ ::cli::unknown_mode opt_mode,
+ ::cli::unknown_mode arg_mode)
+{
+ // Can't skip combined flags (--no-combined-flags).
+ //
+ assert (opt_mode != ::cli::unknown_mode::skip);
+
+ bool r = false;
+ bool opt = true;
+
+ while (s.more ())
+ {
+ const char* o = s.peek ();
+
+ if (std::strcmp (o, "--") == 0)
+ {
+ opt = false;
+ s.skip ();
+ r = true;
+ continue;
+ }
+
+ if (opt)
+ {
+ if (_parse (o, s))
+ {
+ r = true;
+ continue;
+ }
+
+ if (std::strncmp (o, "-", 1) == 0 && o[1] != '\0')
+ {
+ // Handle combined option values.
+ //
+ std::string co;
+ if (const char* v = std::strchr (o, '='))
+ {
+ co.assign (o, 0, v - o);
+ ++v;
+
+ int ac (2);
+ char* av[] =
+ {
+ const_cast<char*> (co.c_str ()),
+ const_cast<char*> (v)
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (_parse (co.c_str (), ns))
+ {
+ // Parsed the option but not its value?
+ //
+ if (ns.end () != 2)
+ throw ::cli::invalid_value (co, v);
+
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = co.c_str ();
+ }
+ }
+
+ // Handle combined flags.
+ //
+ char cf[3];
+ {
+ const char* p = o + 1;
+ for (; *p != '\0'; ++p)
+ {
+ if (!((*p >= 'a' && *p <= 'z') ||
+ (*p >= 'A' && *p <= 'Z') ||
+ (*p >= '0' && *p <= '9')))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ for (p = o + 1; *p != '\0'; ++p)
+ {
+ std::strcpy (cf, "-");
+ cf[1] = *p;
+ cf[2] = '\0';
+
+ int ac (1);
+ char* av[] =
+ {
+ cf
+ };
+
+ ::cli::argv_scanner ns (0, ac, av);
+
+ if (!_parse (cf, ns))
+ break;
+ }
+
+ if (*p == '\0')
+ {
+ // All handled.
+ //
+ s.next ();
+ r = true;
+ continue;
+ }
+ else
+ {
+ // Set the unknown option and fall through.
+ //
+ o = cf;
+ }
+ }
+ }
+
+ switch (opt_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_option (o);
+ }
+ }
+
+ break;
+ }
+ }
+
+ switch (arg_mode)
+ {
+ case ::cli::unknown_mode::skip:
+ {
+ s.skip ();
+ r = true;
+ continue;
+ }
+ case ::cli::unknown_mode::stop:
+ {
+ break;
+ }
+ case ::cli::unknown_mode::fail:
+ {
+ throw ::cli::unknown_argument (o);
+ }
+ }
+
+ break;
+ }
+
+ return r;
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
diff --git a/cli/cli/bootstrap/cli/options.hxx b/cli/cli/bootstrap/cli/options.hxx
new file mode 100644
index 0000000..35108fa
--- /dev/null
+++ b/cli/cli/bootstrap/cli/options.hxx
@@ -0,0 +1,1673 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+#ifndef CLI_OPTIONS_HXX
+#define CLI_OPTIONS_HXX
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <list>
+#include <deque>
+#include <iosfwd>
+#include <string>
+#include <cstddef>
+#include <exception>
+
+#ifndef CLI_POTENTIALLY_UNUSED
+# if defined(_MSC_VER) || defined(__xlC__)
+# define CLI_POTENTIALLY_UNUSED(x) (void*)&x
+# else
+# define CLI_POTENTIALLY_UNUSED(x) (void)x
+# endif
+#endif
+
+namespace cli
+{
+ class usage_para
+ {
+ public:
+ enum value
+ {
+ none,
+ text,
+ option
+ };
+
+ usage_para (value);
+
+ operator value () const
+ {
+ return v_;
+ }
+
+ private:
+ value v_;
+ };
+
+ class unknown_mode
+ {
+ public:
+ enum value
+ {
+ skip,
+ stop,
+ fail
+ };
+
+ unknown_mode (value);
+
+ operator value () const
+ {
+ return v_;
+ }
+
+ private:
+ value v_;
+ };
+
+ // Exceptions.
+ //
+
+ class exception: public std::exception
+ {
+ public:
+ virtual void
+ print (::std::ostream&) const = 0;
+ };
+
+ ::std::ostream&
+ operator<< (::std::ostream&, const exception&);
+
+ class unknown_option: public exception
+ {
+ public:
+ virtual
+ ~unknown_option () throw ();
+
+ unknown_option (const std::string& option);
+
+ const std::string&
+ option () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string option_;
+ };
+
+ class unknown_argument: public exception
+ {
+ public:
+ virtual
+ ~unknown_argument () throw ();
+
+ unknown_argument (const std::string& argument);
+
+ const std::string&
+ argument () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string argument_;
+ };
+
+ class missing_value: public exception
+ {
+ public:
+ virtual
+ ~missing_value () throw ();
+
+ missing_value (const std::string& option);
+
+ const std::string&
+ option () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string option_;
+ };
+
+ class invalid_value: public exception
+ {
+ public:
+ virtual
+ ~invalid_value () throw ();
+
+ invalid_value (const std::string& option,
+ const std::string& value,
+ const std::string& message = std::string ());
+
+ const std::string&
+ option () const;
+
+ const std::string&
+ value () const;
+
+ const std::string&
+ message () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string option_;
+ std::string value_;
+ std::string message_;
+ };
+
+ class eos_reached: public exception
+ {
+ public:
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+ };
+
+ class file_io_failure: public exception
+ {
+ public:
+ virtual
+ ~file_io_failure () throw ();
+
+ file_io_failure (const std::string& file);
+
+ const std::string&
+ file () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string file_;
+ };
+
+ class unmatched_quote: public exception
+ {
+ public:
+ virtual
+ ~unmatched_quote () throw ();
+
+ unmatched_quote (const std::string& argument);
+
+ const std::string&
+ argument () const;
+
+ virtual void
+ print (::std::ostream&) const;
+
+ virtual const char*
+ what () const throw ();
+
+ private:
+ std::string argument_;
+ };
+
+ // Command line argument scanner interface.
+ //
+ // The values returned by next() are guaranteed to be valid
+ // for the two previous arguments up until a call to a third
+ // peek() or next().
+ //
+ // The position() function returns a monotonically-increasing
+ // number which, if stored, can later be used to determine the
+ // relative position of the argument returned by the following
+ // call to next(). Note that if multiple scanners are used to
+ // extract arguments from multiple sources, then the end
+ // position of the previous scanner should be used as the
+ // start position of the next.
+ //
+ class scanner
+ {
+ public:
+ virtual
+ ~scanner ();
+
+ virtual bool
+ more () = 0;
+
+ virtual const char*
+ peek () = 0;
+
+ virtual const char*
+ next () = 0;
+
+ virtual void
+ skip () = 0;
+
+ virtual std::size_t
+ position () = 0;
+ };
+
+ class argv_scanner: public scanner
+ {
+ public:
+ argv_scanner (int& argc,
+ char** argv,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_scanner (int start,
+ int& argc,
+ char** argv,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ int
+ end () const;
+
+ virtual bool
+ more ();
+
+ virtual const char*
+ peek ();
+
+ virtual const char*
+ next ();
+
+ virtual void
+ skip ();
+
+ virtual std::size_t
+ position ();
+
+ protected:
+ std::size_t start_position_;
+ int i_;
+ int& argc_;
+ char** argv_;
+ bool erase_;
+ };
+
+ class argv_file_scanner: public argv_scanner
+ {
+ public:
+ argv_file_scanner (int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (const std::string& file,
+ const std::string& option,
+ std::size_t start_position = 0);
+
+ struct option_info
+ {
+ // If search_func is not NULL, it is called, with the arg
+ // value as the second argument, to locate the options file.
+ // If it returns an empty string, then the file is ignored.
+ //
+ const char* option;
+ std::string (*search_func) (const char*, void* arg);
+ void* arg;
+ };
+
+ argv_file_scanner (int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase = false,
+ std::size_t start_position = 0);
+
+ argv_file_scanner (const std::string& file,
+ const option_info* options = 0,
+ std::size_t options_count = 0,
+ std::size_t start_position = 0);
+
+ virtual bool
+ more ();
+
+ virtual const char*
+ peek ();
+
+ virtual const char*
+ next ();
+
+ virtual void
+ skip ();
+
+ virtual std::size_t
+ position ();
+
+ // Return the file path if the peeked at argument came from a file and
+ // the empty string otherwise. The reference is guaranteed to be valid
+ // till the end of the scanner lifetime.
+ //
+ const std::string&
+ peek_file ();
+
+ // Return the 1-based line number if the peeked at argument came from
+ // a file and zero otherwise.
+ //
+ std::size_t
+ peek_line ();
+
+ private:
+ const option_info*
+ find (const char*) const;
+
+ void
+ load (const std::string& file);
+
+ typedef argv_scanner base;
+
+ const std::string option_;
+ option_info option_info_;
+ const option_info* options_;
+ std::size_t options_count_;
+
+ struct arg
+ {
+ std::string value;
+ const std::string* file;
+ std::size_t line;
+ };
+
+ std::deque<arg> args_;
+ std::list<std::string> files_;
+
+ // Circular buffer of two arguments.
+ //
+ std::string hold_[2];
+ std::size_t i_;
+
+ bool skip_;
+
+ static int zero_argc_;
+ static std::string empty_string_;
+ };
+
+ template <typename X>
+ struct parser;
+}
+
+#include <map>
+
+#include <string>
+
+#include <vector>
+
+#include <cstddef>
+
+#include <cstdint>
+
+#include <cli/option-types.hxx>
+
+class options
+{
+ public:
+ options ();
+
+ 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,
+ char** argv,
+ bool erase = false,
+ ::cli::unknown_mode option = ::cli::unknown_mode::fail,
+ ::cli::unknown_mode argument = ::cli::unknown_mode::stop);
+
+ 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,
+ 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);
+
+ // Option accessors and modifiers.
+ //
+ const std::uint64_t&
+ build2_metadata () const;
+
+ std::uint64_t&
+ build2_metadata ();
+
+ void
+ build2_metadata (const std::uint64_t&);
+
+ bool
+ build2_metadata_specified () const;
+
+ void
+ build2_metadata_specified (bool);
+
+ const bool&
+ help () const;
+
+ bool&
+ help ();
+
+ void
+ help (const bool&);
+
+ const bool&
+ version () const;
+
+ bool&
+ version ();
+
+ void
+ version (const bool&);
+
+ const std::vector<std::string>&
+ include_path () const;
+
+ std::vector<std::string>&
+ include_path ();
+
+ void
+ include_path (const std::vector<std::string>&);
+
+ bool
+ include_path_specified () const;
+
+ void
+ include_path_specified (bool);
+
+ const std::string&
+ output_dir () const;
+
+ std::string&
+ output_dir ();
+
+ void
+ output_dir (const std::string&);
+
+ bool
+ output_dir_specified () const;
+
+ void
+ output_dir_specified (bool);
+
+ const cxx_version&
+ std () const;
+
+ cxx_version&
+ std ();
+
+ void
+ std (const cxx_version&);
+
+ bool
+ std_specified () const;
+
+ void
+ std_specified (bool);
+
+ const bool&
+ generate_modifier () const;
+
+ bool&
+ generate_modifier ();
+
+ void
+ generate_modifier (const bool&);
+
+ const bool&
+ generate_specifier () const;
+
+ bool&
+ generate_specifier ();
+
+ void
+ generate_specifier (const bool&);
+
+ const bool&
+ generate_parse () const;
+
+ bool&
+ generate_parse ();
+
+ void
+ generate_parse (const bool&);
+
+ const bool&
+ generate_merge () const;
+
+ bool&
+ generate_merge ();
+
+ void
+ generate_merge (const bool&);
+
+ const bool&
+ generate_description () const;
+
+ bool&
+ generate_description ();
+
+ void
+ generate_description (const bool&);
+
+ const bool&
+ generate_file_scanner () const;
+
+ bool&
+ generate_file_scanner ();
+
+ void
+ generate_file_scanner (const bool&);
+
+ const bool&
+ generate_vector_scanner () const;
+
+ bool&
+ generate_vector_scanner ();
+
+ void
+ generate_vector_scanner (const bool&);
+
+ const bool&
+ generate_group_scanner () const;
+
+ bool&
+ generate_group_scanner ();
+
+ void
+ generate_group_scanner (const bool&);
+
+ const bool&
+ suppress_inline () const;
+
+ bool&
+ suppress_inline ();
+
+ void
+ suppress_inline (const bool&);
+
+ const bool&
+ suppress_cli () const;
+
+ bool&
+ suppress_cli ();
+
+ void
+ suppress_cli (const bool&);
+
+ const std::string&
+ cli_namespace () const;
+
+ std::string&
+ cli_namespace ();
+
+ void
+ cli_namespace (const std::string&);
+
+ bool
+ cli_namespace_specified () const;
+
+ void
+ cli_namespace_specified (bool);
+
+ const std::string&
+ ostream_type () const;
+
+ std::string&
+ ostream_type ();
+
+ void
+ ostream_type (const std::string&);
+
+ bool
+ ostream_type_specified () const;
+
+ void
+ ostream_type_specified (bool);
+
+ const bool&
+ generate_cxx () const;
+
+ bool&
+ generate_cxx ();
+
+ void
+ generate_cxx (const bool&);
+
+ const bool&
+ generate_man () const;
+
+ bool&
+ generate_man ();
+
+ void
+ generate_man (const bool&);
+
+ const bool&
+ generate_html () const;
+
+ bool&
+ generate_html ();
+
+ void
+ generate_html (const bool&);
+
+ const bool&
+ generate_txt () const;
+
+ bool&
+ generate_txt ();
+
+ void
+ generate_txt (const bool&);
+
+ const bool&
+ stdout_ () const;
+
+ bool&
+ stdout_ ();
+
+ void
+ stdout_ (const bool&);
+
+ const bool&
+ suppress_undocumented () const;
+
+ bool&
+ suppress_undocumented ();
+
+ void
+ suppress_undocumented (const bool&);
+
+ const bool&
+ suppress_usage () const;
+
+ bool&
+ suppress_usage ();
+
+ void
+ suppress_usage (const bool&);
+
+ const bool&
+ long_usage () const;
+
+ bool&
+ long_usage ();
+
+ void
+ long_usage (const bool&);
+
+ const bool&
+ short_usage () const;
+
+ bool&
+ short_usage ();
+
+ void
+ short_usage (const bool&);
+
+ const std::string&
+ page_usage () const;
+
+ std::string&
+ page_usage ();
+
+ void
+ page_usage (const std::string&);
+
+ bool
+ page_usage_specified () const;
+
+ void
+ page_usage_specified (bool);
+
+ const std::size_t&
+ option_length () const;
+
+ std::size_t&
+ option_length ();
+
+ void
+ option_length (const std::size_t&);
+
+ bool
+ option_length_specified () const;
+
+ void
+ option_length_specified (bool);
+
+ const bool&
+ ansi_color () const;
+
+ bool&
+ ansi_color ();
+
+ void
+ ansi_color (const bool&);
+
+ const bool&
+ exclude_base () const;
+
+ bool&
+ exclude_base ();
+
+ void
+ exclude_base (const bool&);
+
+ const bool&
+ include_base_last () const;
+
+ bool&
+ include_base_last ();
+
+ void
+ include_base_last (const bool&);
+
+ const std::map<std::string, std::string>&
+ class_doc () const;
+
+ std::map<std::string, std::string>&
+ class_doc ();
+
+ void
+ class_doc (const std::map<std::string, std::string>&);
+
+ bool
+ class_doc_specified () const;
+
+ void
+ class_doc_specified (bool);
+
+ const std::vector<std::string>&
+ class_ () const;
+
+ std::vector<std::string>&
+ class_ ();
+
+ void
+ class_ (const std::vector<std::string>&);
+
+ bool
+ class__specified () const;
+
+ void
+ class__specified (bool);
+
+ const std::map<std::string, std::string>&
+ docvar () const;
+
+ std::map<std::string, std::string>&
+ docvar ();
+
+ void
+ docvar (const std::map<std::string, std::string>&);
+
+ bool
+ docvar_specified () const;
+
+ void
+ docvar_specified (bool);
+
+ const std::vector<std::string>&
+ link_regex () const;
+
+ std::vector<std::string>&
+ link_regex ();
+
+ void
+ link_regex (const std::vector<std::string>&);
+
+ bool
+ link_regex_specified () const;
+
+ void
+ link_regex_specified (bool);
+
+ const bool&
+ link_regex_trace () const;
+
+ bool&
+ link_regex_trace ();
+
+ void
+ link_regex_trace (const bool&);
+
+ const std::map<char, std::string>&
+ html_heading_map () const;
+
+ std::map<char, std::string>&
+ html_heading_map ();
+
+ void
+ html_heading_map (const std::map<char, std::string>&);
+
+ bool
+ html_heading_map_specified () const;
+
+ void
+ html_heading_map_specified (bool);
+
+ const bool&
+ omit_link_check () const;
+
+ bool&
+ omit_link_check ();
+
+ void
+ omit_link_check (const bool&);
+
+ const std::vector<std::string>&
+ hxx_prologue () const;
+
+ std::vector<std::string>&
+ hxx_prologue ();
+
+ void
+ hxx_prologue (const std::vector<std::string>&);
+
+ bool
+ hxx_prologue_specified () const;
+
+ void
+ hxx_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ ixx_prologue () const;
+
+ std::vector<std::string>&
+ ixx_prologue ();
+
+ void
+ ixx_prologue (const std::vector<std::string>&);
+
+ bool
+ ixx_prologue_specified () const;
+
+ void
+ ixx_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ cxx_prologue () const;
+
+ std::vector<std::string>&
+ cxx_prologue ();
+
+ void
+ cxx_prologue (const std::vector<std::string>&);
+
+ bool
+ cxx_prologue_specified () const;
+
+ void
+ cxx_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ man_prologue () const;
+
+ std::vector<std::string>&
+ man_prologue ();
+
+ void
+ man_prologue (const std::vector<std::string>&);
+
+ bool
+ man_prologue_specified () const;
+
+ void
+ man_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ html_prologue () const;
+
+ std::vector<std::string>&
+ html_prologue ();
+
+ void
+ html_prologue (const std::vector<std::string>&);
+
+ bool
+ html_prologue_specified () const;
+
+ void
+ html_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ txt_prologue () const;
+
+ std::vector<std::string>&
+ txt_prologue ();
+
+ void
+ txt_prologue (const std::vector<std::string>&);
+
+ bool
+ txt_prologue_specified () const;
+
+ void
+ txt_prologue_specified (bool);
+
+ const std::vector<std::string>&
+ hxx_epilogue () const;
+
+ std::vector<std::string>&
+ hxx_epilogue ();
+
+ void
+ hxx_epilogue (const std::vector<std::string>&);
+
+ bool
+ hxx_epilogue_specified () const;
+
+ void
+ hxx_epilogue_specified (bool);
+
+ const std::vector<std::string>&
+ ixx_epilogue () const;
+
+ std::vector<std::string>&
+ ixx_epilogue ();
+
+ void
+ ixx_epilogue (const std::vector<std::string>&);
+
+ bool
+ ixx_epilogue_specified () const;
+
+ void
+ ixx_epilogue_specified (bool);
+
+ const std::vector<std::string>&
+ cxx_epilogue () const;
+
+ std::vector<std::string>&
+ cxx_epilogue ();
+
+ void
+ cxx_epilogue (const std::vector<std::string>&);
+
+ bool
+ cxx_epilogue_specified () const;
+
+ void
+ cxx_epilogue_specified (bool);
+
+ const std::vector<std::string>&
+ man_epilogue () const;
+
+ std::vector<std::string>&
+ man_epilogue ();
+
+ void
+ man_epilogue (const std::vector<std::string>&);
+
+ bool
+ man_epilogue_specified () const;
+
+ void
+ man_epilogue_specified (bool);
+
+ const std::vector<std::string>&
+ html_epilogue () const;
+
+ std::vector<std::string>&
+ html_epilogue ();
+
+ void
+ html_epilogue (const std::vector<std::string>&);
+
+ bool
+ html_epilogue_specified () const;
+
+ void
+ html_epilogue_specified (bool);
+
+ const std::vector<std::string>&
+ txt_epilogue () const;
+
+ std::vector<std::string>&
+ txt_epilogue ();
+
+ void
+ txt_epilogue (const std::vector<std::string>&);
+
+ bool
+ txt_epilogue_specified () const;
+
+ void
+ txt_epilogue_specified (bool);
+
+ const std::string&
+ hxx_prologue_file () const;
+
+ std::string&
+ hxx_prologue_file ();
+
+ void
+ hxx_prologue_file (const std::string&);
+
+ bool
+ hxx_prologue_file_specified () const;
+
+ void
+ hxx_prologue_file_specified (bool);
+
+ const std::string&
+ ixx_prologue_file () const;
+
+ std::string&
+ ixx_prologue_file ();
+
+ void
+ ixx_prologue_file (const std::string&);
+
+ bool
+ ixx_prologue_file_specified () const;
+
+ void
+ ixx_prologue_file_specified (bool);
+
+ const std::string&
+ cxx_prologue_file () const;
+
+ std::string&
+ cxx_prologue_file ();
+
+ void
+ cxx_prologue_file (const std::string&);
+
+ bool
+ cxx_prologue_file_specified () const;
+
+ void
+ cxx_prologue_file_specified (bool);
+
+ const std::string&
+ man_prologue_file () const;
+
+ std::string&
+ man_prologue_file ();
+
+ void
+ man_prologue_file (const std::string&);
+
+ bool
+ man_prologue_file_specified () const;
+
+ void
+ man_prologue_file_specified (bool);
+
+ const std::string&
+ html_prologue_file () const;
+
+ std::string&
+ html_prologue_file ();
+
+ void
+ html_prologue_file (const std::string&);
+
+ bool
+ html_prologue_file_specified () const;
+
+ void
+ html_prologue_file_specified (bool);
+
+ const std::string&
+ txt_prologue_file () const;
+
+ std::string&
+ txt_prologue_file ();
+
+ void
+ txt_prologue_file (const std::string&);
+
+ bool
+ txt_prologue_file_specified () const;
+
+ void
+ txt_prologue_file_specified (bool);
+
+ const std::string&
+ hxx_epilogue_file () const;
+
+ std::string&
+ hxx_epilogue_file ();
+
+ void
+ hxx_epilogue_file (const std::string&);
+
+ bool
+ hxx_epilogue_file_specified () const;
+
+ void
+ hxx_epilogue_file_specified (bool);
+
+ const std::string&
+ ixx_epilogue_file () const;
+
+ std::string&
+ ixx_epilogue_file ();
+
+ void
+ ixx_epilogue_file (const std::string&);
+
+ bool
+ ixx_epilogue_file_specified () const;
+
+ void
+ ixx_epilogue_file_specified (bool);
+
+ const std::string&
+ cxx_epilogue_file () const;
+
+ std::string&
+ cxx_epilogue_file ();
+
+ void
+ cxx_epilogue_file (const std::string&);
+
+ bool
+ cxx_epilogue_file_specified () const;
+
+ void
+ cxx_epilogue_file_specified (bool);
+
+ const std::string&
+ man_epilogue_file () const;
+
+ std::string&
+ man_epilogue_file ();
+
+ void
+ man_epilogue_file (const std::string&);
+
+ bool
+ man_epilogue_file_specified () const;
+
+ void
+ man_epilogue_file_specified (bool);
+
+ const std::string&
+ html_epilogue_file () const;
+
+ std::string&
+ html_epilogue_file ();
+
+ void
+ html_epilogue_file (const std::string&);
+
+ bool
+ html_epilogue_file_specified () const;
+
+ void
+ html_epilogue_file_specified (bool);
+
+ const std::string&
+ txt_epilogue_file () const;
+
+ std::string&
+ txt_epilogue_file ();
+
+ void
+ txt_epilogue_file (const std::string&);
+
+ bool
+ txt_epilogue_file_specified () const;
+
+ void
+ txt_epilogue_file_specified (bool);
+
+ const std::string&
+ output_prefix () const;
+
+ std::string&
+ output_prefix ();
+
+ void
+ output_prefix (const std::string&);
+
+ bool
+ output_prefix_specified () const;
+
+ void
+ output_prefix_specified (bool);
+
+ const std::string&
+ output_suffix () const;
+
+ std::string&
+ output_suffix ();
+
+ void
+ output_suffix (const std::string&);
+
+ bool
+ output_suffix_specified () const;
+
+ void
+ output_suffix_specified (bool);
+
+ const std::string&
+ hxx_suffix () const;
+
+ std::string&
+ hxx_suffix ();
+
+ void
+ hxx_suffix (const std::string&);
+
+ bool
+ hxx_suffix_specified () const;
+
+ void
+ hxx_suffix_specified (bool);
+
+ const std::string&
+ ixx_suffix () const;
+
+ std::string&
+ ixx_suffix ();
+
+ void
+ ixx_suffix (const std::string&);
+
+ bool
+ ixx_suffix_specified () const;
+
+ void
+ ixx_suffix_specified (bool);
+
+ const std::string&
+ cxx_suffix () const;
+
+ std::string&
+ cxx_suffix ();
+
+ void
+ cxx_suffix (const std::string&);
+
+ bool
+ cxx_suffix_specified () const;
+
+ void
+ cxx_suffix_specified (bool);
+
+ const std::string&
+ man_suffix () const;
+
+ std::string&
+ man_suffix ();
+
+ void
+ man_suffix (const std::string&);
+
+ bool
+ man_suffix_specified () const;
+
+ void
+ man_suffix_specified (bool);
+
+ const std::string&
+ html_suffix () const;
+
+ std::string&
+ html_suffix ();
+
+ void
+ html_suffix (const std::string&);
+
+ bool
+ html_suffix_specified () const;
+
+ void
+ html_suffix_specified (bool);
+
+ const std::string&
+ txt_suffix () const;
+
+ std::string&
+ txt_suffix ();
+
+ void
+ txt_suffix (const std::string&);
+
+ bool
+ txt_suffix_specified () const;
+
+ void
+ txt_suffix_specified (bool);
+
+ const std::string&
+ option_prefix () const;
+
+ std::string&
+ option_prefix ();
+
+ void
+ option_prefix (const std::string&);
+
+ bool
+ option_prefix_specified () const;
+
+ void
+ option_prefix_specified (bool);
+
+ const std::string&
+ option_separator () const;
+
+ std::string&
+ option_separator ();
+
+ void
+ option_separator (const std::string&);
+
+ bool
+ option_separator_specified () const;
+
+ void
+ option_separator_specified (bool);
+
+ const bool&
+ keep_separator () const;
+
+ bool&
+ keep_separator ();
+
+ void
+ keep_separator (const bool&);
+
+ const bool&
+ no_combined_flags () const;
+
+ bool&
+ no_combined_flags ();
+
+ void
+ no_combined_flags (const bool&);
+
+ const bool&
+ no_combined_values () const;
+
+ bool&
+ no_combined_values ();
+
+ void
+ no_combined_values (const bool&);
+
+ const bool&
+ include_with_brackets () const;
+
+ bool&
+ include_with_brackets ();
+
+ void
+ include_with_brackets (const bool&);
+
+ const std::string&
+ include_prefix () const;
+
+ std::string&
+ include_prefix ();
+
+ void
+ include_prefix (const std::string&);
+
+ bool
+ include_prefix_specified () const;
+
+ void
+ include_prefix_specified (bool);
+
+ const std::string&
+ guard_prefix () const;
+
+ std::string&
+ guard_prefix ();
+
+ void
+ guard_prefix (const std::string&);
+
+ bool
+ guard_prefix_specified () const;
+
+ void
+ guard_prefix_specified (bool);
+
+ const std::map<std::string, std::string>&
+ reserved_name () const;
+
+ std::map<std::string, std::string>&
+ reserved_name ();
+
+ void
+ reserved_name (const std::map<std::string, std::string>&);
+
+ bool
+ reserved_name_specified () const;
+
+ void
+ reserved_name_specified (bool);
+
+ const std::string&
+ options_file () const;
+
+ std::string&
+ options_file ();
+
+ void
+ options_file (const std::string&);
+
+ bool
+ options_file_specified () const;
+
+ void
+ options_file_specified (bool);
+
+ // Print usage information.
+ //
+ static ::cli::usage_para
+ print_usage (::std::ostream&,
+ ::cli::usage_para = ::cli::usage_para::none);
+
+ // Implementation details.
+ //
+ protected:
+ bool
+ _parse (const char*, ::cli::scanner&);
+
+ private:
+ bool
+ _parse (::cli::scanner&,
+ ::cli::unknown_mode option,
+ ::cli::unknown_mode argument);
+
+ public:
+ std::uint64_t build2_metadata_;
+ bool build2_metadata_specified_;
+ bool help_;
+ bool version_;
+ std::vector<std::string> include_path_;
+ bool include_path_specified_;
+ std::string output_dir_;
+ bool output_dir_specified_;
+ cxx_version std_;
+ bool std_specified_;
+ bool generate_modifier_;
+ bool generate_specifier_;
+ bool generate_parse_;
+ bool generate_merge_;
+ bool generate_description_;
+ bool generate_file_scanner_;
+ bool generate_vector_scanner_;
+ bool generate_group_scanner_;
+ bool suppress_inline_;
+ bool suppress_cli_;
+ std::string cli_namespace_;
+ bool cli_namespace_specified_;
+ std::string ostream_type_;
+ bool ostream_type_specified_;
+ bool generate_cxx_;
+ bool generate_man_;
+ bool generate_html_;
+ bool generate_txt_;
+ bool stdout__;
+ bool suppress_undocumented_;
+ bool suppress_usage_;
+ bool long_usage_;
+ bool short_usage_;
+ std::string page_usage_;
+ bool page_usage_specified_;
+ std::size_t option_length_;
+ bool option_length_specified_;
+ bool ansi_color_;
+ bool exclude_base_;
+ bool include_base_last_;
+ std::map<std::string, std::string> class_doc_;
+ bool class_doc_specified_;
+ std::vector<std::string> class__;
+ bool class__specified_;
+ std::map<std::string, std::string> docvar_;
+ bool docvar_specified_;
+ std::vector<std::string> link_regex_;
+ bool link_regex_specified_;
+ bool link_regex_trace_;
+ std::map<char, std::string> html_heading_map_;
+ bool html_heading_map_specified_;
+ bool omit_link_check_;
+ std::vector<std::string> hxx_prologue_;
+ bool hxx_prologue_specified_;
+ std::vector<std::string> ixx_prologue_;
+ bool ixx_prologue_specified_;
+ std::vector<std::string> cxx_prologue_;
+ bool cxx_prologue_specified_;
+ std::vector<std::string> man_prologue_;
+ bool man_prologue_specified_;
+ std::vector<std::string> html_prologue_;
+ bool html_prologue_specified_;
+ std::vector<std::string> txt_prologue_;
+ bool txt_prologue_specified_;
+ std::vector<std::string> hxx_epilogue_;
+ bool hxx_epilogue_specified_;
+ std::vector<std::string> ixx_epilogue_;
+ bool ixx_epilogue_specified_;
+ std::vector<std::string> cxx_epilogue_;
+ bool cxx_epilogue_specified_;
+ std::vector<std::string> man_epilogue_;
+ bool man_epilogue_specified_;
+ std::vector<std::string> html_epilogue_;
+ bool html_epilogue_specified_;
+ std::vector<std::string> txt_epilogue_;
+ bool txt_epilogue_specified_;
+ std::string hxx_prologue_file_;
+ bool hxx_prologue_file_specified_;
+ std::string ixx_prologue_file_;
+ bool ixx_prologue_file_specified_;
+ std::string cxx_prologue_file_;
+ bool cxx_prologue_file_specified_;
+ std::string man_prologue_file_;
+ bool man_prologue_file_specified_;
+ std::string html_prologue_file_;
+ bool html_prologue_file_specified_;
+ std::string txt_prologue_file_;
+ bool txt_prologue_file_specified_;
+ std::string hxx_epilogue_file_;
+ bool hxx_epilogue_file_specified_;
+ std::string ixx_epilogue_file_;
+ bool ixx_epilogue_file_specified_;
+ std::string cxx_epilogue_file_;
+ bool cxx_epilogue_file_specified_;
+ std::string man_epilogue_file_;
+ bool man_epilogue_file_specified_;
+ std::string html_epilogue_file_;
+ bool html_epilogue_file_specified_;
+ std::string txt_epilogue_file_;
+ bool txt_epilogue_file_specified_;
+ std::string output_prefix_;
+ bool output_prefix_specified_;
+ std::string output_suffix_;
+ bool output_suffix_specified_;
+ std::string hxx_suffix_;
+ bool hxx_suffix_specified_;
+ std::string ixx_suffix_;
+ bool ixx_suffix_specified_;
+ std::string cxx_suffix_;
+ bool cxx_suffix_specified_;
+ std::string man_suffix_;
+ bool man_suffix_specified_;
+ std::string html_suffix_;
+ bool html_suffix_specified_;
+ std::string txt_suffix_;
+ bool txt_suffix_specified_;
+ std::string option_prefix_;
+ bool option_prefix_specified_;
+ std::string option_separator_;
+ bool option_separator_specified_;
+ bool keep_separator_;
+ bool no_combined_flags_;
+ bool no_combined_values_;
+ bool include_with_brackets_;
+ std::string include_prefix_;
+ bool include_prefix_specified_;
+ std::string guard_prefix_;
+ bool guard_prefix_specified_;
+ std::map<std::string, std::string> reserved_name_;
+ bool reserved_name_specified_;
+ std::string options_file_;
+ bool options_file_specified_;
+};
+
+#include <cli/options.ixx>
+
+// Begin epilogue.
+//
+//
+// End epilogue.
+
+#endif // CLI_OPTIONS_HXX
diff --git a/cli/cli/bootstrap/cli/options.ixx b/cli/cli/bootstrap/cli/options.ixx
new file mode 100644
index 0000000..ee4cbdb
--- /dev/null
+++ b/cli/cli/bootstrap/cli/options.ixx
@@ -0,0 +1,2352 @@
+// -*- C++ -*-
+//
+// This file was generated by CLI, a command line interface
+// compiler for C++.
+//
+
+// Begin prologue.
+//
+//
+// End prologue.
+
+#include <cassert>
+
+namespace cli
+{
+ // usage_para
+ //
+ inline usage_para::
+ usage_para (value v)
+ : v_ (v)
+ {
+ }
+
+ // unknown_mode
+ //
+ inline unknown_mode::
+ unknown_mode (value v)
+ : v_ (v)
+ {
+ }
+
+ // exception
+ //
+ inline ::std::ostream&
+ operator<< (::std::ostream& os, const exception& e)
+ {
+ e.print (os);
+ return os;
+ }
+
+ // unknown_option
+ //
+ inline unknown_option::
+ unknown_option (const std::string& option)
+ : option_ (option)
+ {
+ }
+
+ inline const std::string& unknown_option::
+ option () const
+ {
+ return option_;
+ }
+
+ // unknown_argument
+ //
+ inline unknown_argument::
+ unknown_argument (const std::string& argument)
+ : argument_ (argument)
+ {
+ }
+
+ inline const std::string& unknown_argument::
+ argument () const
+ {
+ return argument_;
+ }
+
+ // missing_value
+ //
+ inline missing_value::
+ missing_value (const std::string& option)
+ : option_ (option)
+ {
+ }
+
+ inline const std::string& missing_value::
+ option () const
+ {
+ return option_;
+ }
+
+ // invalid_value
+ //
+ inline invalid_value::
+ invalid_value (const std::string& option,
+ const std::string& value,
+ const std::string& message)
+ : option_ (option),
+ value_ (value),
+ message_ (message)
+ {
+ }
+
+ inline const std::string& invalid_value::
+ option () const
+ {
+ return option_;
+ }
+
+ inline const std::string& invalid_value::
+ value () const
+ {
+ return value_;
+ }
+
+ inline const std::string& invalid_value::
+ message () const
+ {
+ return message_;
+ }
+
+ // file_io_failure
+ //
+ inline file_io_failure::
+ file_io_failure (const std::string& file)
+ : file_ (file)
+ {
+ }
+
+ inline const std::string& file_io_failure::
+ file () const
+ {
+ return file_;
+ }
+
+ // unmatched_quote
+ //
+ inline unmatched_quote::
+ unmatched_quote (const std::string& argument)
+ : argument_ (argument)
+ {
+ }
+
+ inline const std::string& unmatched_quote::
+ argument () const
+ {
+ return argument_;
+ }
+
+ // argv_scanner
+ //
+ inline argv_scanner::
+ argv_scanner (int& argc,
+ char** argv,
+ bool erase,
+ std::size_t sp)
+ : start_position_ (sp + 1),
+ i_ (1),
+ argc_ (argc),
+ argv_ (argv),
+ erase_ (erase)
+ {
+ }
+
+ inline argv_scanner::
+ argv_scanner (int start,
+ int& argc,
+ char** argv,
+ bool erase,
+ std::size_t sp)
+ : start_position_ (sp + static_cast<std::size_t> (start)),
+ i_ (start),
+ argc_ (argc),
+ argv_ (argv),
+ erase_ (erase)
+ {
+ }
+
+ inline int argv_scanner::
+ end () const
+ {
+ return i_;
+ }
+
+ // argv_file_scanner
+ //
+ inline argv_file_scanner::
+ argv_file_scanner (int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (argc, argv, erase, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const std::string& option,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (start, argc, argv, erase, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (const std::string& file,
+ const std::string& option,
+ std::size_t sp)
+ : argv_scanner (0, zero_argc_, 0, sp),
+ option_ (option),
+ options_ (&option_info_),
+ options_count_ (1),
+ i_ (1),
+ skip_ (false)
+ {
+ option_info_.option = option_.c_str ();
+ option_info_.search_func = 0;
+
+ load (file);
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (argc, argv, erase, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (int start,
+ int& argc,
+ char** argv,
+ const option_info* options,
+ std::size_t options_count,
+ bool erase,
+ std::size_t sp)
+ : argv_scanner (start, argc, argv, erase, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ }
+
+ inline argv_file_scanner::
+ argv_file_scanner (const std::string& file,
+ const option_info* options,
+ std::size_t options_count,
+ std::size_t sp)
+ : argv_scanner (0, zero_argc_, 0, sp),
+ options_ (options),
+ options_count_ (options_count),
+ i_ (1),
+ skip_ (false)
+ {
+ load (file);
+ }
+}
+
+// options
+//
+
+inline const std::uint64_t& options::
+build2_metadata () const
+{
+ return this->build2_metadata_;
+}
+
+inline std::uint64_t& options::
+build2_metadata ()
+{
+ return this->build2_metadata_;
+}
+
+inline void options::
+build2_metadata (const std::uint64_t& x)
+{
+ this->build2_metadata_ = x;
+}
+
+inline bool options::
+build2_metadata_specified () const
+{
+ return this->build2_metadata_specified_;
+}
+
+inline void options::
+build2_metadata_specified (bool x)
+{
+ this->build2_metadata_specified_ = x;
+}
+
+inline const bool& options::
+help () const
+{
+ return this->help_;
+}
+
+inline bool& options::
+help ()
+{
+ return this->help_;
+}
+
+inline void options::
+help (const bool& x)
+{
+ this->help_ = x;
+}
+
+inline const bool& options::
+version () const
+{
+ return this->version_;
+}
+
+inline bool& options::
+version ()
+{
+ return this->version_;
+}
+
+inline void options::
+version (const bool& x)
+{
+ this->version_ = x;
+}
+
+inline const std::vector<std::string>& options::
+include_path () const
+{
+ return this->include_path_;
+}
+
+inline std::vector<std::string>& options::
+include_path ()
+{
+ return this->include_path_;
+}
+
+inline void options::
+include_path (const std::vector<std::string>& x)
+{
+ this->include_path_ = x;
+}
+
+inline bool options::
+include_path_specified () const
+{
+ return this->include_path_specified_;
+}
+
+inline void options::
+include_path_specified (bool x)
+{
+ this->include_path_specified_ = x;
+}
+
+inline const std::string& options::
+output_dir () const
+{
+ return this->output_dir_;
+}
+
+inline std::string& options::
+output_dir ()
+{
+ return this->output_dir_;
+}
+
+inline void options::
+output_dir (const std::string& x)
+{
+ this->output_dir_ = x;
+}
+
+inline bool options::
+output_dir_specified () const
+{
+ return this->output_dir_specified_;
+}
+
+inline void options::
+output_dir_specified (bool x)
+{
+ this->output_dir_specified_ = x;
+}
+
+inline const cxx_version& options::
+std () const
+{
+ return this->std_;
+}
+
+inline cxx_version& options::
+std ()
+{
+ return this->std_;
+}
+
+inline void options::
+std (const cxx_version& x)
+{
+ this->std_ = x;
+}
+
+inline bool options::
+std_specified () const
+{
+ return this->std_specified_;
+}
+
+inline void options::
+std_specified (bool x)
+{
+ this->std_specified_ = x;
+}
+
+inline const bool& options::
+generate_modifier () const
+{
+ return this->generate_modifier_;
+}
+
+inline bool& options::
+generate_modifier ()
+{
+ return this->generate_modifier_;
+}
+
+inline void options::
+generate_modifier (const bool& x)
+{
+ this->generate_modifier_ = x;
+}
+
+inline const bool& options::
+generate_specifier () const
+{
+ return this->generate_specifier_;
+}
+
+inline bool& options::
+generate_specifier ()
+{
+ return this->generate_specifier_;
+}
+
+inline void options::
+generate_specifier (const bool& x)
+{
+ this->generate_specifier_ = x;
+}
+
+inline const bool& options::
+generate_parse () const
+{
+ return this->generate_parse_;
+}
+
+inline bool& options::
+generate_parse ()
+{
+ return this->generate_parse_;
+}
+
+inline void options::
+generate_parse (const bool& x)
+{
+ this->generate_parse_ = x;
+}
+
+inline const bool& options::
+generate_merge () const
+{
+ return this->generate_merge_;
+}
+
+inline bool& options::
+generate_merge ()
+{
+ return this->generate_merge_;
+}
+
+inline void options::
+generate_merge (const bool& x)
+{
+ this->generate_merge_ = x;
+}
+
+inline const bool& options::
+generate_description () const
+{
+ return this->generate_description_;
+}
+
+inline bool& options::
+generate_description ()
+{
+ return this->generate_description_;
+}
+
+inline void options::
+generate_description (const bool& x)
+{
+ this->generate_description_ = x;
+}
+
+inline const bool& options::
+generate_file_scanner () const
+{
+ return this->generate_file_scanner_;
+}
+
+inline bool& options::
+generate_file_scanner ()
+{
+ return this->generate_file_scanner_;
+}
+
+inline void options::
+generate_file_scanner (const bool& x)
+{
+ this->generate_file_scanner_ = x;
+}
+
+inline const bool& options::
+generate_vector_scanner () const
+{
+ return this->generate_vector_scanner_;
+}
+
+inline bool& options::
+generate_vector_scanner ()
+{
+ return this->generate_vector_scanner_;
+}
+
+inline void options::
+generate_vector_scanner (const bool& x)
+{
+ this->generate_vector_scanner_ = x;
+}
+
+inline const bool& options::
+generate_group_scanner () const
+{
+ return this->generate_group_scanner_;
+}
+
+inline bool& options::
+generate_group_scanner ()
+{
+ return this->generate_group_scanner_;
+}
+
+inline void options::
+generate_group_scanner (const bool& x)
+{
+ this->generate_group_scanner_ = x;
+}
+
+inline const bool& options::
+suppress_inline () const
+{
+ return this->suppress_inline_;
+}
+
+inline bool& options::
+suppress_inline ()
+{
+ return this->suppress_inline_;
+}
+
+inline void options::
+suppress_inline (const bool& x)
+{
+ this->suppress_inline_ = x;
+}
+
+inline const bool& options::
+suppress_cli () const
+{
+ return this->suppress_cli_;
+}
+
+inline bool& options::
+suppress_cli ()
+{
+ return this->suppress_cli_;
+}
+
+inline void options::
+suppress_cli (const bool& x)
+{
+ this->suppress_cli_ = x;
+}
+
+inline const std::string& options::
+cli_namespace () const
+{
+ return this->cli_namespace_;
+}
+
+inline std::string& options::
+cli_namespace ()
+{
+ return this->cli_namespace_;
+}
+
+inline void options::
+cli_namespace (const std::string& x)
+{
+ this->cli_namespace_ = x;
+}
+
+inline bool options::
+cli_namespace_specified () const
+{
+ return this->cli_namespace_specified_;
+}
+
+inline void options::
+cli_namespace_specified (bool x)
+{
+ this->cli_namespace_specified_ = x;
+}
+
+inline const std::string& options::
+ostream_type () const
+{
+ return this->ostream_type_;
+}
+
+inline std::string& options::
+ostream_type ()
+{
+ return this->ostream_type_;
+}
+
+inline void options::
+ostream_type (const std::string& x)
+{
+ this->ostream_type_ = x;
+}
+
+inline bool options::
+ostream_type_specified () const
+{
+ return this->ostream_type_specified_;
+}
+
+inline void options::
+ostream_type_specified (bool x)
+{
+ this->ostream_type_specified_ = x;
+}
+
+inline const bool& options::
+generate_cxx () const
+{
+ return this->generate_cxx_;
+}
+
+inline bool& options::
+generate_cxx ()
+{
+ return this->generate_cxx_;
+}
+
+inline void options::
+generate_cxx (const bool& x)
+{
+ this->generate_cxx_ = x;
+}
+
+inline const bool& options::
+generate_man () const
+{
+ return this->generate_man_;
+}
+
+inline bool& options::
+generate_man ()
+{
+ return this->generate_man_;
+}
+
+inline void options::
+generate_man (const bool& x)
+{
+ this->generate_man_ = x;
+}
+
+inline const bool& options::
+generate_html () const
+{
+ return this->generate_html_;
+}
+
+inline bool& options::
+generate_html ()
+{
+ return this->generate_html_;
+}
+
+inline void options::
+generate_html (const bool& x)
+{
+ this->generate_html_ = x;
+}
+
+inline const bool& options::
+generate_txt () const
+{
+ return this->generate_txt_;
+}
+
+inline bool& options::
+generate_txt ()
+{
+ return this->generate_txt_;
+}
+
+inline void options::
+generate_txt (const bool& x)
+{
+ this->generate_txt_ = x;
+}
+
+inline const bool& options::
+stdout_ () const
+{
+ return this->stdout__;
+}
+
+inline bool& options::
+stdout_ ()
+{
+ return this->stdout__;
+}
+
+inline void options::
+stdout_ (const bool& x)
+{
+ this->stdout__ = x;
+}
+
+inline const bool& options::
+suppress_undocumented () const
+{
+ return this->suppress_undocumented_;
+}
+
+inline bool& options::
+suppress_undocumented ()
+{
+ return this->suppress_undocumented_;
+}
+
+inline void options::
+suppress_undocumented (const bool& x)
+{
+ this->suppress_undocumented_ = x;
+}
+
+inline const bool& options::
+suppress_usage () const
+{
+ return this->suppress_usage_;
+}
+
+inline bool& options::
+suppress_usage ()
+{
+ return this->suppress_usage_;
+}
+
+inline void options::
+suppress_usage (const bool& x)
+{
+ this->suppress_usage_ = x;
+}
+
+inline const bool& options::
+long_usage () const
+{
+ return this->long_usage_;
+}
+
+inline bool& options::
+long_usage ()
+{
+ return this->long_usage_;
+}
+
+inline void options::
+long_usage (const bool& x)
+{
+ this->long_usage_ = x;
+}
+
+inline const bool& options::
+short_usage () const
+{
+ return this->short_usage_;
+}
+
+inline bool& options::
+short_usage ()
+{
+ return this->short_usage_;
+}
+
+inline void options::
+short_usage (const bool& x)
+{
+ this->short_usage_ = x;
+}
+
+inline const std::string& options::
+page_usage () const
+{
+ return this->page_usage_;
+}
+
+inline std::string& options::
+page_usage ()
+{
+ return this->page_usage_;
+}
+
+inline void options::
+page_usage (const std::string& x)
+{
+ this->page_usage_ = x;
+}
+
+inline bool options::
+page_usage_specified () const
+{
+ return this->page_usage_specified_;
+}
+
+inline void options::
+page_usage_specified (bool x)
+{
+ this->page_usage_specified_ = x;
+}
+
+inline const std::size_t& options::
+option_length () const
+{
+ return this->option_length_;
+}
+
+inline std::size_t& options::
+option_length ()
+{
+ return this->option_length_;
+}
+
+inline void options::
+option_length (const std::size_t& x)
+{
+ this->option_length_ = x;
+}
+
+inline bool options::
+option_length_specified () const
+{
+ return this->option_length_specified_;
+}
+
+inline void options::
+option_length_specified (bool x)
+{
+ this->option_length_specified_ = x;
+}
+
+inline const bool& options::
+ansi_color () const
+{
+ return this->ansi_color_;
+}
+
+inline bool& options::
+ansi_color ()
+{
+ return this->ansi_color_;
+}
+
+inline void options::
+ansi_color (const bool& x)
+{
+ this->ansi_color_ = x;
+}
+
+inline const bool& options::
+exclude_base () const
+{
+ return this->exclude_base_;
+}
+
+inline bool& options::
+exclude_base ()
+{
+ return this->exclude_base_;
+}
+
+inline void options::
+exclude_base (const bool& x)
+{
+ this->exclude_base_ = x;
+}
+
+inline const bool& options::
+include_base_last () const
+{
+ return this->include_base_last_;
+}
+
+inline bool& options::
+include_base_last ()
+{
+ return this->include_base_last_;
+}
+
+inline void options::
+include_base_last (const bool& x)
+{
+ this->include_base_last_ = x;
+}
+
+inline const std::map<std::string, std::string>& options::
+class_doc () const
+{
+ return this->class_doc_;
+}
+
+inline std::map<std::string, std::string>& options::
+class_doc ()
+{
+ return this->class_doc_;
+}
+
+inline void options::
+class_doc (const std::map<std::string, std::string>& x)
+{
+ this->class_doc_ = x;
+}
+
+inline bool options::
+class_doc_specified () const
+{
+ return this->class_doc_specified_;
+}
+
+inline void options::
+class_doc_specified (bool x)
+{
+ this->class_doc_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+class_ () const
+{
+ return this->class__;
+}
+
+inline std::vector<std::string>& options::
+class_ ()
+{
+ return this->class__;
+}
+
+inline void options::
+class_ (const std::vector<std::string>& x)
+{
+ this->class__ = x;
+}
+
+inline bool options::
+class__specified () const
+{
+ return this->class__specified_;
+}
+
+inline void options::
+class__specified (bool x)
+{
+ this->class__specified_ = x;
+}
+
+inline const std::map<std::string, std::string>& options::
+docvar () const
+{
+ return this->docvar_;
+}
+
+inline std::map<std::string, std::string>& options::
+docvar ()
+{
+ return this->docvar_;
+}
+
+inline void options::
+docvar (const std::map<std::string, std::string>& x)
+{
+ this->docvar_ = x;
+}
+
+inline bool options::
+docvar_specified () const
+{
+ return this->docvar_specified_;
+}
+
+inline void options::
+docvar_specified (bool x)
+{
+ this->docvar_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+link_regex () const
+{
+ return this->link_regex_;
+}
+
+inline std::vector<std::string>& options::
+link_regex ()
+{
+ return this->link_regex_;
+}
+
+inline void options::
+link_regex (const std::vector<std::string>& x)
+{
+ this->link_regex_ = x;
+}
+
+inline bool options::
+link_regex_specified () const
+{
+ return this->link_regex_specified_;
+}
+
+inline void options::
+link_regex_specified (bool x)
+{
+ this->link_regex_specified_ = x;
+}
+
+inline const bool& options::
+link_regex_trace () const
+{
+ return this->link_regex_trace_;
+}
+
+inline bool& options::
+link_regex_trace ()
+{
+ return this->link_regex_trace_;
+}
+
+inline void options::
+link_regex_trace (const bool& x)
+{
+ this->link_regex_trace_ = x;
+}
+
+inline const std::map<char, std::string>& options::
+html_heading_map () const
+{
+ return this->html_heading_map_;
+}
+
+inline std::map<char, std::string>& options::
+html_heading_map ()
+{
+ return this->html_heading_map_;
+}
+
+inline void options::
+html_heading_map (const std::map<char, std::string>& x)
+{
+ this->html_heading_map_ = x;
+}
+
+inline bool options::
+html_heading_map_specified () const
+{
+ return this->html_heading_map_specified_;
+}
+
+inline void options::
+html_heading_map_specified (bool x)
+{
+ this->html_heading_map_specified_ = x;
+}
+
+inline const bool& options::
+omit_link_check () const
+{
+ return this->omit_link_check_;
+}
+
+inline bool& options::
+omit_link_check ()
+{
+ return this->omit_link_check_;
+}
+
+inline void options::
+omit_link_check (const bool& x)
+{
+ this->omit_link_check_ = x;
+}
+
+inline const std::vector<std::string>& options::
+hxx_prologue () const
+{
+ return this->hxx_prologue_;
+}
+
+inline std::vector<std::string>& options::
+hxx_prologue ()
+{
+ return this->hxx_prologue_;
+}
+
+inline void options::
+hxx_prologue (const std::vector<std::string>& x)
+{
+ this->hxx_prologue_ = x;
+}
+
+inline bool options::
+hxx_prologue_specified () const
+{
+ return this->hxx_prologue_specified_;
+}
+
+inline void options::
+hxx_prologue_specified (bool x)
+{
+ this->hxx_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+ixx_prologue () const
+{
+ return this->ixx_prologue_;
+}
+
+inline std::vector<std::string>& options::
+ixx_prologue ()
+{
+ return this->ixx_prologue_;
+}
+
+inline void options::
+ixx_prologue (const std::vector<std::string>& x)
+{
+ this->ixx_prologue_ = x;
+}
+
+inline bool options::
+ixx_prologue_specified () const
+{
+ return this->ixx_prologue_specified_;
+}
+
+inline void options::
+ixx_prologue_specified (bool x)
+{
+ this->ixx_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+cxx_prologue () const
+{
+ return this->cxx_prologue_;
+}
+
+inline std::vector<std::string>& options::
+cxx_prologue ()
+{
+ return this->cxx_prologue_;
+}
+
+inline void options::
+cxx_prologue (const std::vector<std::string>& x)
+{
+ this->cxx_prologue_ = x;
+}
+
+inline bool options::
+cxx_prologue_specified () const
+{
+ return this->cxx_prologue_specified_;
+}
+
+inline void options::
+cxx_prologue_specified (bool x)
+{
+ this->cxx_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+man_prologue () const
+{
+ return this->man_prologue_;
+}
+
+inline std::vector<std::string>& options::
+man_prologue ()
+{
+ return this->man_prologue_;
+}
+
+inline void options::
+man_prologue (const std::vector<std::string>& x)
+{
+ this->man_prologue_ = x;
+}
+
+inline bool options::
+man_prologue_specified () const
+{
+ return this->man_prologue_specified_;
+}
+
+inline void options::
+man_prologue_specified (bool x)
+{
+ this->man_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+html_prologue () const
+{
+ return this->html_prologue_;
+}
+
+inline std::vector<std::string>& options::
+html_prologue ()
+{
+ return this->html_prologue_;
+}
+
+inline void options::
+html_prologue (const std::vector<std::string>& x)
+{
+ this->html_prologue_ = x;
+}
+
+inline bool options::
+html_prologue_specified () const
+{
+ return this->html_prologue_specified_;
+}
+
+inline void options::
+html_prologue_specified (bool x)
+{
+ this->html_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+txt_prologue () const
+{
+ return this->txt_prologue_;
+}
+
+inline std::vector<std::string>& options::
+txt_prologue ()
+{
+ return this->txt_prologue_;
+}
+
+inline void options::
+txt_prologue (const std::vector<std::string>& x)
+{
+ this->txt_prologue_ = x;
+}
+
+inline bool options::
+txt_prologue_specified () const
+{
+ return this->txt_prologue_specified_;
+}
+
+inline void options::
+txt_prologue_specified (bool x)
+{
+ this->txt_prologue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+hxx_epilogue () const
+{
+ return this->hxx_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+hxx_epilogue ()
+{
+ return this->hxx_epilogue_;
+}
+
+inline void options::
+hxx_epilogue (const std::vector<std::string>& x)
+{
+ this->hxx_epilogue_ = x;
+}
+
+inline bool options::
+hxx_epilogue_specified () const
+{
+ return this->hxx_epilogue_specified_;
+}
+
+inline void options::
+hxx_epilogue_specified (bool x)
+{
+ this->hxx_epilogue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+ixx_epilogue () const
+{
+ return this->ixx_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+ixx_epilogue ()
+{
+ return this->ixx_epilogue_;
+}
+
+inline void options::
+ixx_epilogue (const std::vector<std::string>& x)
+{
+ this->ixx_epilogue_ = x;
+}
+
+inline bool options::
+ixx_epilogue_specified () const
+{
+ return this->ixx_epilogue_specified_;
+}
+
+inline void options::
+ixx_epilogue_specified (bool x)
+{
+ this->ixx_epilogue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+cxx_epilogue () const
+{
+ return this->cxx_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+cxx_epilogue ()
+{
+ return this->cxx_epilogue_;
+}
+
+inline void options::
+cxx_epilogue (const std::vector<std::string>& x)
+{
+ this->cxx_epilogue_ = x;
+}
+
+inline bool options::
+cxx_epilogue_specified () const
+{
+ return this->cxx_epilogue_specified_;
+}
+
+inline void options::
+cxx_epilogue_specified (bool x)
+{
+ this->cxx_epilogue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+man_epilogue () const
+{
+ return this->man_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+man_epilogue ()
+{
+ return this->man_epilogue_;
+}
+
+inline void options::
+man_epilogue (const std::vector<std::string>& x)
+{
+ this->man_epilogue_ = x;
+}
+
+inline bool options::
+man_epilogue_specified () const
+{
+ return this->man_epilogue_specified_;
+}
+
+inline void options::
+man_epilogue_specified (bool x)
+{
+ this->man_epilogue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+html_epilogue () const
+{
+ return this->html_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+html_epilogue ()
+{
+ return this->html_epilogue_;
+}
+
+inline void options::
+html_epilogue (const std::vector<std::string>& x)
+{
+ this->html_epilogue_ = x;
+}
+
+inline bool options::
+html_epilogue_specified () const
+{
+ return this->html_epilogue_specified_;
+}
+
+inline void options::
+html_epilogue_specified (bool x)
+{
+ this->html_epilogue_specified_ = x;
+}
+
+inline const std::vector<std::string>& options::
+txt_epilogue () const
+{
+ return this->txt_epilogue_;
+}
+
+inline std::vector<std::string>& options::
+txt_epilogue ()
+{
+ return this->txt_epilogue_;
+}
+
+inline void options::
+txt_epilogue (const std::vector<std::string>& x)
+{
+ this->txt_epilogue_ = x;
+}
+
+inline bool options::
+txt_epilogue_specified () const
+{
+ return this->txt_epilogue_specified_;
+}
+
+inline void options::
+txt_epilogue_specified (bool x)
+{
+ this->txt_epilogue_specified_ = x;
+}
+
+inline const std::string& options::
+hxx_prologue_file () const
+{
+ return this->hxx_prologue_file_;
+}
+
+inline std::string& options::
+hxx_prologue_file ()
+{
+ return this->hxx_prologue_file_;
+}
+
+inline void options::
+hxx_prologue_file (const std::string& x)
+{
+ this->hxx_prologue_file_ = x;
+}
+
+inline bool options::
+hxx_prologue_file_specified () const
+{
+ return this->hxx_prologue_file_specified_;
+}
+
+inline void options::
+hxx_prologue_file_specified (bool x)
+{
+ this->hxx_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+ixx_prologue_file () const
+{
+ return this->ixx_prologue_file_;
+}
+
+inline std::string& options::
+ixx_prologue_file ()
+{
+ return this->ixx_prologue_file_;
+}
+
+inline void options::
+ixx_prologue_file (const std::string& x)
+{
+ this->ixx_prologue_file_ = x;
+}
+
+inline bool options::
+ixx_prologue_file_specified () const
+{
+ return this->ixx_prologue_file_specified_;
+}
+
+inline void options::
+ixx_prologue_file_specified (bool x)
+{
+ this->ixx_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+cxx_prologue_file () const
+{
+ return this->cxx_prologue_file_;
+}
+
+inline std::string& options::
+cxx_prologue_file ()
+{
+ return this->cxx_prologue_file_;
+}
+
+inline void options::
+cxx_prologue_file (const std::string& x)
+{
+ this->cxx_prologue_file_ = x;
+}
+
+inline bool options::
+cxx_prologue_file_specified () const
+{
+ return this->cxx_prologue_file_specified_;
+}
+
+inline void options::
+cxx_prologue_file_specified (bool x)
+{
+ this->cxx_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+man_prologue_file () const
+{
+ return this->man_prologue_file_;
+}
+
+inline std::string& options::
+man_prologue_file ()
+{
+ return this->man_prologue_file_;
+}
+
+inline void options::
+man_prologue_file (const std::string& x)
+{
+ this->man_prologue_file_ = x;
+}
+
+inline bool options::
+man_prologue_file_specified () const
+{
+ return this->man_prologue_file_specified_;
+}
+
+inline void options::
+man_prologue_file_specified (bool x)
+{
+ this->man_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+html_prologue_file () const
+{
+ return this->html_prologue_file_;
+}
+
+inline std::string& options::
+html_prologue_file ()
+{
+ return this->html_prologue_file_;
+}
+
+inline void options::
+html_prologue_file (const std::string& x)
+{
+ this->html_prologue_file_ = x;
+}
+
+inline bool options::
+html_prologue_file_specified () const
+{
+ return this->html_prologue_file_specified_;
+}
+
+inline void options::
+html_prologue_file_specified (bool x)
+{
+ this->html_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+txt_prologue_file () const
+{
+ return this->txt_prologue_file_;
+}
+
+inline std::string& options::
+txt_prologue_file ()
+{
+ return this->txt_prologue_file_;
+}
+
+inline void options::
+txt_prologue_file (const std::string& x)
+{
+ this->txt_prologue_file_ = x;
+}
+
+inline bool options::
+txt_prologue_file_specified () const
+{
+ return this->txt_prologue_file_specified_;
+}
+
+inline void options::
+txt_prologue_file_specified (bool x)
+{
+ this->txt_prologue_file_specified_ = x;
+}
+
+inline const std::string& options::
+hxx_epilogue_file () const
+{
+ return this->hxx_epilogue_file_;
+}
+
+inline std::string& options::
+hxx_epilogue_file ()
+{
+ return this->hxx_epilogue_file_;
+}
+
+inline void options::
+hxx_epilogue_file (const std::string& x)
+{
+ this->hxx_epilogue_file_ = x;
+}
+
+inline bool options::
+hxx_epilogue_file_specified () const
+{
+ return this->hxx_epilogue_file_specified_;
+}
+
+inline void options::
+hxx_epilogue_file_specified (bool x)
+{
+ this->hxx_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+ixx_epilogue_file () const
+{
+ return this->ixx_epilogue_file_;
+}
+
+inline std::string& options::
+ixx_epilogue_file ()
+{
+ return this->ixx_epilogue_file_;
+}
+
+inline void options::
+ixx_epilogue_file (const std::string& x)
+{
+ this->ixx_epilogue_file_ = x;
+}
+
+inline bool options::
+ixx_epilogue_file_specified () const
+{
+ return this->ixx_epilogue_file_specified_;
+}
+
+inline void options::
+ixx_epilogue_file_specified (bool x)
+{
+ this->ixx_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+cxx_epilogue_file () const
+{
+ return this->cxx_epilogue_file_;
+}
+
+inline std::string& options::
+cxx_epilogue_file ()
+{
+ return this->cxx_epilogue_file_;
+}
+
+inline void options::
+cxx_epilogue_file (const std::string& x)
+{
+ this->cxx_epilogue_file_ = x;
+}
+
+inline bool options::
+cxx_epilogue_file_specified () const
+{
+ return this->cxx_epilogue_file_specified_;
+}
+
+inline void options::
+cxx_epilogue_file_specified (bool x)
+{
+ this->cxx_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+man_epilogue_file () const
+{
+ return this->man_epilogue_file_;
+}
+
+inline std::string& options::
+man_epilogue_file ()
+{
+ return this->man_epilogue_file_;
+}
+
+inline void options::
+man_epilogue_file (const std::string& x)
+{
+ this->man_epilogue_file_ = x;
+}
+
+inline bool options::
+man_epilogue_file_specified () const
+{
+ return this->man_epilogue_file_specified_;
+}
+
+inline void options::
+man_epilogue_file_specified (bool x)
+{
+ this->man_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+html_epilogue_file () const
+{
+ return this->html_epilogue_file_;
+}
+
+inline std::string& options::
+html_epilogue_file ()
+{
+ return this->html_epilogue_file_;
+}
+
+inline void options::
+html_epilogue_file (const std::string& x)
+{
+ this->html_epilogue_file_ = x;
+}
+
+inline bool options::
+html_epilogue_file_specified () const
+{
+ return this->html_epilogue_file_specified_;
+}
+
+inline void options::
+html_epilogue_file_specified (bool x)
+{
+ this->html_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+txt_epilogue_file () const
+{
+ return this->txt_epilogue_file_;
+}
+
+inline std::string& options::
+txt_epilogue_file ()
+{
+ return this->txt_epilogue_file_;
+}
+
+inline void options::
+txt_epilogue_file (const std::string& x)
+{
+ this->txt_epilogue_file_ = x;
+}
+
+inline bool options::
+txt_epilogue_file_specified () const
+{
+ return this->txt_epilogue_file_specified_;
+}
+
+inline void options::
+txt_epilogue_file_specified (bool x)
+{
+ this->txt_epilogue_file_specified_ = x;
+}
+
+inline const std::string& options::
+output_prefix () const
+{
+ return this->output_prefix_;
+}
+
+inline std::string& options::
+output_prefix ()
+{
+ return this->output_prefix_;
+}
+
+inline void options::
+output_prefix (const std::string& x)
+{
+ this->output_prefix_ = x;
+}
+
+inline bool options::
+output_prefix_specified () const
+{
+ return this->output_prefix_specified_;
+}
+
+inline void options::
+output_prefix_specified (bool x)
+{
+ this->output_prefix_specified_ = x;
+}
+
+inline const std::string& options::
+output_suffix () const
+{
+ return this->output_suffix_;
+}
+
+inline std::string& options::
+output_suffix ()
+{
+ return this->output_suffix_;
+}
+
+inline void options::
+output_suffix (const std::string& x)
+{
+ this->output_suffix_ = x;
+}
+
+inline bool options::
+output_suffix_specified () const
+{
+ return this->output_suffix_specified_;
+}
+
+inline void options::
+output_suffix_specified (bool x)
+{
+ this->output_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+hxx_suffix () const
+{
+ return this->hxx_suffix_;
+}
+
+inline std::string& options::
+hxx_suffix ()
+{
+ return this->hxx_suffix_;
+}
+
+inline void options::
+hxx_suffix (const std::string& x)
+{
+ this->hxx_suffix_ = x;
+}
+
+inline bool options::
+hxx_suffix_specified () const
+{
+ return this->hxx_suffix_specified_;
+}
+
+inline void options::
+hxx_suffix_specified (bool x)
+{
+ this->hxx_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+ixx_suffix () const
+{
+ return this->ixx_suffix_;
+}
+
+inline std::string& options::
+ixx_suffix ()
+{
+ return this->ixx_suffix_;
+}
+
+inline void options::
+ixx_suffix (const std::string& x)
+{
+ this->ixx_suffix_ = x;
+}
+
+inline bool options::
+ixx_suffix_specified () const
+{
+ return this->ixx_suffix_specified_;
+}
+
+inline void options::
+ixx_suffix_specified (bool x)
+{
+ this->ixx_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+cxx_suffix () const
+{
+ return this->cxx_suffix_;
+}
+
+inline std::string& options::
+cxx_suffix ()
+{
+ return this->cxx_suffix_;
+}
+
+inline void options::
+cxx_suffix (const std::string& x)
+{
+ this->cxx_suffix_ = x;
+}
+
+inline bool options::
+cxx_suffix_specified () const
+{
+ return this->cxx_suffix_specified_;
+}
+
+inline void options::
+cxx_suffix_specified (bool x)
+{
+ this->cxx_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+man_suffix () const
+{
+ return this->man_suffix_;
+}
+
+inline std::string& options::
+man_suffix ()
+{
+ return this->man_suffix_;
+}
+
+inline void options::
+man_suffix (const std::string& x)
+{
+ this->man_suffix_ = x;
+}
+
+inline bool options::
+man_suffix_specified () const
+{
+ return this->man_suffix_specified_;
+}
+
+inline void options::
+man_suffix_specified (bool x)
+{
+ this->man_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+html_suffix () const
+{
+ return this->html_suffix_;
+}
+
+inline std::string& options::
+html_suffix ()
+{
+ return this->html_suffix_;
+}
+
+inline void options::
+html_suffix (const std::string& x)
+{
+ this->html_suffix_ = x;
+}
+
+inline bool options::
+html_suffix_specified () const
+{
+ return this->html_suffix_specified_;
+}
+
+inline void options::
+html_suffix_specified (bool x)
+{
+ this->html_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+txt_suffix () const
+{
+ return this->txt_suffix_;
+}
+
+inline std::string& options::
+txt_suffix ()
+{
+ return this->txt_suffix_;
+}
+
+inline void options::
+txt_suffix (const std::string& x)
+{
+ this->txt_suffix_ = x;
+}
+
+inline bool options::
+txt_suffix_specified () const
+{
+ return this->txt_suffix_specified_;
+}
+
+inline void options::
+txt_suffix_specified (bool x)
+{
+ this->txt_suffix_specified_ = x;
+}
+
+inline const std::string& options::
+option_prefix () const
+{
+ return this->option_prefix_;
+}
+
+inline std::string& options::
+option_prefix ()
+{
+ return this->option_prefix_;
+}
+
+inline void options::
+option_prefix (const std::string& x)
+{
+ this->option_prefix_ = x;
+}
+
+inline bool options::
+option_prefix_specified () const
+{
+ return this->option_prefix_specified_;
+}
+
+inline void options::
+option_prefix_specified (bool x)
+{
+ this->option_prefix_specified_ = x;
+}
+
+inline const std::string& options::
+option_separator () const
+{
+ return this->option_separator_;
+}
+
+inline std::string& options::
+option_separator ()
+{
+ return this->option_separator_;
+}
+
+inline void options::
+option_separator (const std::string& x)
+{
+ this->option_separator_ = x;
+}
+
+inline bool options::
+option_separator_specified () const
+{
+ return this->option_separator_specified_;
+}
+
+inline void options::
+option_separator_specified (bool x)
+{
+ this->option_separator_specified_ = x;
+}
+
+inline const bool& options::
+keep_separator () const
+{
+ return this->keep_separator_;
+}
+
+inline bool& options::
+keep_separator ()
+{
+ return this->keep_separator_;
+}
+
+inline void options::
+keep_separator (const bool& x)
+{
+ this->keep_separator_ = x;
+}
+
+inline const bool& options::
+no_combined_flags () const
+{
+ return this->no_combined_flags_;
+}
+
+inline bool& options::
+no_combined_flags ()
+{
+ return this->no_combined_flags_;
+}
+
+inline void options::
+no_combined_flags (const bool& x)
+{
+ this->no_combined_flags_ = x;
+}
+
+inline const bool& options::
+no_combined_values () const
+{
+ return this->no_combined_values_;
+}
+
+inline bool& options::
+no_combined_values ()
+{
+ return this->no_combined_values_;
+}
+
+inline void options::
+no_combined_values (const bool& x)
+{
+ this->no_combined_values_ = x;
+}
+
+inline const bool& options::
+include_with_brackets () const
+{
+ return this->include_with_brackets_;
+}
+
+inline bool& options::
+include_with_brackets ()
+{
+ return this->include_with_brackets_;
+}
+
+inline void options::
+include_with_brackets (const bool& x)
+{
+ this->include_with_brackets_ = x;
+}
+
+inline const std::string& options::
+include_prefix () const
+{
+ return this->include_prefix_;
+}
+
+inline std::string& options::
+include_prefix ()
+{
+ return this->include_prefix_;
+}
+
+inline void options::
+include_prefix (const std::string& x)
+{
+ this->include_prefix_ = x;
+}
+
+inline bool options::
+include_prefix_specified () const
+{
+ return this->include_prefix_specified_;
+}
+
+inline void options::
+include_prefix_specified (bool x)
+{
+ this->include_prefix_specified_ = x;
+}
+
+inline const std::string& options::
+guard_prefix () const
+{
+ return this->guard_prefix_;
+}
+
+inline std::string& options::
+guard_prefix ()
+{
+ return this->guard_prefix_;
+}
+
+inline void options::
+guard_prefix (const std::string& x)
+{
+ this->guard_prefix_ = x;
+}
+
+inline bool options::
+guard_prefix_specified () const
+{
+ return this->guard_prefix_specified_;
+}
+
+inline void options::
+guard_prefix_specified (bool x)
+{
+ this->guard_prefix_specified_ = x;
+}
+
+inline const std::map<std::string, std::string>& options::
+reserved_name () const
+{
+ return this->reserved_name_;
+}
+
+inline std::map<std::string, std::string>& options::
+reserved_name ()
+{
+ return this->reserved_name_;
+}
+
+inline void options::
+reserved_name (const std::map<std::string, std::string>& x)
+{
+ this->reserved_name_ = x;
+}
+
+inline bool options::
+reserved_name_specified () const
+{
+ return this->reserved_name_specified_;
+}
+
+inline void options::
+reserved_name_specified (bool x)
+{
+ this->reserved_name_specified_ = x;
+}
+
+inline const std::string& options::
+options_file () const
+{
+ return this->options_file_;
+}
+
+inline std::string& options::
+options_file ()
+{
+ return this->options_file_;
+}
+
+inline void options::
+options_file (const std::string& x)
+{
+ this->options_file_ = x;
+}
+
+inline bool options::
+options_file_specified () const
+{
+ return this->options_file_specified_;
+}
+
+inline void options::
+options_file_specified (bool x)
+{
+ this->options_file_specified_ = x;
+}
+
+// Begin epilogue.
+//
+//
+// End epilogue.