// -*- C++ -*- // // This file was generated by CLI, a command line interface // compiler for C++. // #ifndef CLEAN_CLEAN_OPTIONS_HXX #define CLEAN_CLEAN_OPTIONS_HXX // Begin prologue. // // // End prologue. #include #include #include #include #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 (); }; // 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(). // class scanner { public: virtual ~scanner (); virtual bool more () = 0; virtual const char* peek () = 0; virtual const char* next () = 0; virtual void skip () = 0; }; class argv_scanner: public scanner { public: argv_scanner (int& argc, char** argv, bool erase = false); argv_scanner (int start, int& argc, char** argv, bool erase = false); int end () const; virtual bool more (); virtual const char* peek (); virtual const char* next (); virtual void skip (); private: int i_; int& argc_; char** argv_; bool erase_; }; template struct parser; } #include #include #include 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. // const bool& archive () const; const std::string& db_user () const; bool db_user_specified () const; const std::string& db_password () const; bool db_password_specified () const; const std::string& db_name () const; bool db_name_specified () const; const std::string& db_host () const; bool db_host_specified () const; const std::uint16_t& db_port () const; bool db_port_specified () const; const std::string& pager () const; bool pager_specified () const; const std::vector& pager_option () const; bool pager_option_specified () const; const bool& help () const; const bool& version () const; // 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: bool archive_; std::string db_user_; bool db_user_specified_; std::string db_password_; bool db_password_specified_; std::string db_name_; bool db_name_specified_; std::string db_host_; bool db_host_specified_; std::uint16_t db_port_; bool db_port_specified_; std::string pager_; bool pager_specified_; std::vector pager_option_; bool pager_option_specified_; bool help_; bool version_; }; // Print page usage information. // ::cli::usage_para print_usage (::std::ostream&, ::cli::usage_para = ::cli::usage_para::none); #include // Begin epilogue. // // // End epilogue. #endif // CLEAN_CLEAN_OPTIONS_HXX