From 720c5a33b6a49cf328fdd7611f49153cf8f60247 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 8 Apr 2020 14:51:57 +0300 Subject: Separate tests and examples into individual packages Also make cli module to be explicitly enabled via the config.cli configuration variable. --- cli/runtime-inline.cxx | 508 ------------------------------------------------- 1 file changed, 508 deletions(-) delete mode 100644 cli/runtime-inline.cxx (limited to 'cli/runtime-inline.cxx') diff --git a/cli/runtime-inline.cxx b/cli/runtime-inline.cxx deleted file mode 100644 index 8f0e84c..0000000 --- a/cli/runtime-inline.cxx +++ /dev/null @@ -1,508 +0,0 @@ -// file : cli/runtime-inline.cxx -// author : Boris Kolpackov -// license : MIT; see accompanying LICENSE file - -#include - -using namespace std; - -void -generate_runtime_inline (context& ctx) -{ - ostream& os (ctx.os); - - os << "#include " << endl - << endl; - - string const& inl (ctx.inl); - string const& os_type (ctx.options.ostream_type ()); - - ctx.ns_open (ctx.cli); - - // usage_para - // - if (!ctx.options.suppress_usage ()) - os << "// usage_para" << endl - << "//" << endl - - << inl << "usage_para::" << endl - << "usage_para (value v)" << endl - << ": v_ (v)" - << "{" - << "}"; - - // unknown_mode - // - os << "// unknown_mode" << endl - << "//" << endl - - << inl << "unknown_mode::" << endl - << "unknown_mode (value v)" << endl - << ": v_ (v)" - << "{" - << "}"; - - // exception - // - os << "// exception" << endl - << "//" << endl - - << inl << os_type << "&" << endl - << "operator<< (" << os_type << "& os, const exception& e)" - << "{" - << "e.print (os);" - << "return os;" - << "}"; - - // unknown_option - // - os << "// unknown_option" << endl - << "//" << endl - - << inl << "unknown_option::" << endl - << "unknown_option (const std::string& option)" << endl - << ": option_ (option)" - << "{" - << "}" - - << inl << "const std::string& unknown_option::" << endl - << "option () const" - << "{" - << "return option_;" - << "}"; - - // unknown_argument - // - os << "// unknown_argument" << endl - << "//" << endl - - << inl << "unknown_argument::" << endl - << "unknown_argument (const std::string& argument)" << endl - << ": argument_ (argument)" - << "{" - << "}" - - << inl << "const std::string& unknown_argument::" << endl - << "argument () const" - << "{" - << "return argument_;" - << "}"; - - // missing_value - // - os << "// missing_value" << endl - << "//" << endl - - << inl << "missing_value::" << endl - << "missing_value (const std::string& option)" << endl - << ": option_ (option)" - << "{" - << "}" - - << inl << "const std::string& missing_value::" << endl - << "option () const" - << "{" - << "return option_;" - << "}"; - - // invalid_value - // - os << "// invalid_value" << endl - << "//" << endl - - << inl << "invalid_value::" << endl - << "invalid_value (const std::string& option," << endl - << "const std::string& value," << endl - << "const std::string& message)" << endl - << ": option_ (option)," << endl - << " value_ (value)," << endl - << " message_ (message)" - << "{" - << "}" - - << inl << "const std::string& invalid_value::" << endl - << "option () const" - << "{" - << "return option_;" - << "}" - - << inl << "const std::string& invalid_value::" << endl - << "value () const" - << "{" - << "return value_;" - << "}" - - << inl << "const std::string& invalid_value::" << endl - << "message () const" - << "{" - << "return message_;" - << "}"; - - if (ctx.options.generate_file_scanner ()) - { - // file_io_failure - // - os << "// file_io_failure" << endl - << "//" << endl - - << inl << "file_io_failure::" << endl - << "file_io_failure (const std::string& file)" << endl - << ": file_ (file)" - << "{" - << "}" - - << inl << "const std::string& file_io_failure::" << endl - << "file () const" - << "{" - << "return file_;" - << "}"; - - // unmatched_option - // - os << "// unmatched_quote" << endl - << "//" << endl - - << inl << "unmatched_quote::" << endl - << "unmatched_quote (const std::string& argument)" << endl - << ": argument_ (argument)" - << "{" - << "}" - - << inl << "const std::string& unmatched_quote::" << endl - << "argument () const" - << "{" - << "return argument_;" - << "}"; - } - - if (ctx.options.generate_group_scanner ()) - { - // unexpected_group - // - os << "// unexpected_group" << endl - << "//" << endl - - << inl << "unexpected_group::" << endl - << "unexpected_group (const std::string& argument," << endl - << "const std::string& group)" << endl - << ": argument_ (argument), group_ (group)" - << "{" - << "}" - - << inl << "const std::string& unexpected_group::" << endl - << "argument () const" - << "{" - << "return argument_;" - << "}" - - << inl << "const std::string& unexpected_group::" << endl - << "group () const" - << "{" - << "return group_;" - << "}"; - - // group_separator - // - os << "// group_separator" << endl - << "//" << endl - - << inl << "group_separator::" << endl - << "group_separator (const std::string& encountered," << endl - << "const std::string& expected)" << endl - << ": encountered_ (encountered), expected_ (expected)" - << "{" - << "}" - - << inl << "const std::string& group_separator::" << endl - << "encountered () const" - << "{" - << "return encountered_;" - << "}" - - << inl << "const std::string& group_separator::" << endl - << "expected () const" - << "{" - << "return expected_;" - << "}"; - } - - // argv_scanner - // - os << "// argv_scanner" << endl - << "//" << endl; - - os << inl << "argv_scanner::" << endl - << "argv_scanner (int& argc, char** argv, bool erase)" << endl - << ": i_ (1), argc_ (argc), argv_ (argv), erase_ (erase)" - << "{" - << "}"; - - os << inl << "argv_scanner::" << endl - << "argv_scanner (int start, int& argc, char** argv, bool erase)" << endl - << ": i_ (start), argc_ (argc), argv_ (argv), erase_ (erase)" - << "{" - << "}"; - - os << inl << "int argv_scanner::" << endl - << "end () const" - << "{" - << "return i_;" - << "}"; - - // vector_scanner - // - if (ctx.options.generate_vector_scanner ()) - { - os << "// vector_scanner" << endl - << "//" << endl; - - os << inl << "vector_scanner::" << endl - << "vector_scanner (const std::vector& v, " << - "std::size_t i)" << endl - << ": v_ (v), i_ (i)" - << "{" - << "}"; - - os << inl << "std::size_t vector_scanner::" << endl - << "end () const" - << "{" - << "return i_;" - << "}"; - - os << inl << "void vector_scanner::" << endl - << "reset (std::size_t i)" - << "{" - << "i_ = i;" - << "}"; - } - - // argv_file_scanner - // - if (ctx.options.generate_file_scanner ()) - { - bool sep (!ctx.opt_sep.empty ()); - - os << "// argv_file_scanner" << endl - << "//" << endl; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (int& argc," << endl - << "char** argv," << endl - << "const std::string& option," << endl - << "bool erase)" << endl - << ": argv_scanner (argc, argv, erase)," << endl - << " option_ (option)," << endl - << " options_ (&option_info_)," << endl - << " options_count_ (1)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "option_info_.option = option_.c_str ();" - << "option_info_.search_func = 0;" - << "}"; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (int start," << endl - << "int& argc," << endl - << "char** argv," << endl - << "const std::string& option," << endl - << "bool erase)" << endl - << ": argv_scanner (start, argc, argv, erase)," << endl - << " option_ (option)," << endl - << " options_ (&option_info_)," << endl - << " options_count_ (1)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "option_info_.option = option_.c_str ();" - << "option_info_.search_func = 0;" - << "}"; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (const std::string& file," << endl - << "const std::string& option)" << endl - << ": argv_scanner (0, zero_argc_, 0)," << endl - << " option_ (option)," << endl - << " options_ (&option_info_)," << endl - << " options_count_ (1)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "option_info_.option = option_.c_str ();" - << "option_info_.search_func = 0;" - << endl - << "load (file);" - << "}"; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (int& argc," << endl - << "char** argv," << endl - << "const option_info* options," << endl - << "std::size_t options_count," << endl - << "bool erase)" << endl - << ": argv_scanner (argc, argv, erase)," << endl - << " options_ (options)," << endl - << " options_count_ (options_count)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "}"; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (int start," << endl - << "int& argc," << endl - << "char** argv," << endl - << "const option_info* options," << endl - << "std::size_t options_count," << endl - << "bool erase)" << endl - << ": argv_scanner (start, argc, argv, erase)," << endl - << " options_ (options)," << endl - << " options_count_ (options_count)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "}"; - - os << inl << "argv_file_scanner::" << endl - << "argv_file_scanner (const std::string& file," << endl - << "const option_info* options," << endl - << "std::size_t options_count)" << endl - << ": argv_scanner (0, zero_argc_, 0)," << endl - << " options_ (options)," << endl - << " options_count_ (options_count)," << endl - << " i_ (1)"; - if (sep) - os << "," << endl - << " skip_ (false)"; - os << "{" - << "load (file);" - << "}"; - } - - // group_scanner - // - if (ctx.options.generate_group_scanner ()) - { - os << "// group_scanner" << endl - << "//" << endl - - << inl << "group_scanner::" << endl - << "group_scanner (scanner& s)" << endl - << ": scan_ (s), state_ (skipped), i_ (1), group_scan_ (group_)" - << "{" - << "}" - - << inl << "scanner& group_scanner::" << endl - << "group ()" - << "{" - << "assert (state_ == scanned || state_ == skipped);" - << "return group_scan_;" - << "}" - - << inl << "const char* group_scanner::" << endl - << "escape (const char* a)" - << "{" - << "switch (sense (a))" - << "{" - << "case separator::none: break;" - << "case separator::open: return \"\\\\{\";" - << "case separator::close: return \"\\\\}\";" - << "case separator::open_plus: return \"\\\\+{\";" - << "case separator::close_plus: return \"\\\\}+\";" - << "}" - << "return a;" - << "}" - - << inl << "group_scanner::separator group_scanner::" << endl - << "sense (const char* s)" - << "{" - << "switch (s[0])" - << "{" - << "case '{': return s[1] == '\\0' ? open : none;" - << "case '}':" - << "{" - << "switch (s[1])" - << "{" - << "case '+': return s[2] == '\\0' ? close_plus : none;" - << "default: return s[1] == '\\0' ? close : none;" - << "}" - << "}" - << "case '+':" - << "{" - << "switch (s[1])" - << "{" - << "case '{': return s[2] == '\\0' ? open_plus : none;" - << "default: return none;" - << "}" - << "}" - << "}" - << "return none;" - << "}"; - } - - // Option description. - // - if (ctx.options.generate_description ()) - { - // option - // - os << inl << "const std::string& option::" << endl - << "name () const" - << "{" - << "return name_;" - << "}"; - - os << inl << "const option_names& option::" << endl - << "aliases () const" - << "{" - << "return aliases_;" - << "}"; - - os << inl << "bool option::" << endl - << "flag () const" - << "{" - << "return flag_;" - << "}"; - - os << inl << "const std::string& option::" << endl - << "default_value () const" - << "{" - << "return default_value_;" - << "}"; - - os << inl << "option::" << endl - << "option ()" - << "{" - << "}"; - - os << inl << "option::" << endl - << "option (const std::string& n," << endl - << "const option_names& a," << endl - << "bool f," << endl - << "const std::string& dv)" << endl - << ": name_ (n), aliases_ (a), flag_ (f), default_value_ (dv)" - << "{" - << "}"; - - // options - // - os << inl << "options::container_type::const_iterator options::" << endl - << "find (const std::string& name) const" - << "{" - << "map_type::const_iterator i (map_.find (name));" - << "return i != map_.end () ? begin () + i->second : end ();" - << "}"; - } - - ctx.ns_close (ctx.cli); -} -- cgit v1.1