/Src/Dependencies/Boost/boost/program_options/errors.hpp
http://hadesmem.googlecode.com/ · C++ Header · 243 lines · 156 code · 54 blank · 33 comment · 0 complexity · 0d5c5e98d2e23f934f6c7a4685761edc MD5 · raw file
- // Copyright Vladimir Prus 2002-2004.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- #ifndef BOOST_ERRORS_VP_2003_01_02
- #define BOOST_ERRORS_VP_2003_01_02
- #include <boost/program_options/config.hpp>
- #include <string>
- #include <stdexcept>
- #include <vector>
- #if defined(BOOST_MSVC)
- # pragma warning (push)
- # pragma warning (disable:4275) // non dll-interface class 'std::logic_error' used as base for dll-interface class 'boost::program_options::error'
- # pragma warning (disable:4251) // class 'std::vector<_Ty>' needs to have dll-interface to be used by clients of class 'boost::program_options::ambiguous_option'
- #endif
- namespace boost { namespace program_options {
- /** Base class for all errors in the library. */
- class BOOST_PROGRAM_OPTIONS_DECL error : public std::logic_error {
- public:
- error(const std::string& xwhat) : std::logic_error(xwhat) {}
- };
- class BOOST_PROGRAM_OPTIONS_DECL invalid_syntax : public error {
- public:
- enum kind_t {
- long_not_allowed = 30,
- long_adjacent_not_allowed,
- short_adjacent_not_allowed,
- empty_adjacent_parameter,
- missing_parameter,
- extra_parameter,
- unrecognized_line
- };
-
- invalid_syntax(const std::string& tokens, kind_t kind);
- // gcc says that throw specification on dtor is loosened
- // without this line
- ~invalid_syntax() throw() {}
-
- kind_t kind() const;
-
- const std::string& tokens() const;
-
- protected:
- /** Used to convert kind_t to a related error text */
- static std::string error_message(kind_t kind);
- private:
- // TODO: copy ctor might throw
- std::string m_tokens;
- kind_t m_kind;
- };
- /** Class thrown when option name is not recognized. */
- class BOOST_PROGRAM_OPTIONS_DECL unknown_option : public error {
- public:
- unknown_option(const std::string& name)
- : error(std::string("unknown option ").append(name)),
- m_option_name(name)
- {}
- // gcc says that throw specification on dtor is loosened
- // without this line
- ~unknown_option() throw() {}
-
- const std::string& get_option_name() const throw();
-
- private:
- std::string m_option_name;
- };
- /** Class thrown when there's ambiguity amoung several possible options. */
- class BOOST_PROGRAM_OPTIONS_DECL ambiguous_option : public error {
- public:
- ambiguous_option(const std::string& name,
- const std::vector<std::string>& xalternatives)
- : error(std::string("ambiguous option ").append(name))
- , m_alternatives(xalternatives)
- , m_option_name(name)
- {}
- ~ambiguous_option() throw() {}
-
- const std::string& get_option_name() const throw();
-
- const std::vector<std::string>& alternatives() const throw();
- private:
- // TODO: copy ctor might throw
- std::vector<std::string> m_alternatives;
- std::string m_option_name;
- };
- /** Class thrown when there are several option values, but
- user called a method which cannot return them all. */
- class BOOST_PROGRAM_OPTIONS_DECL multiple_values : public error {
- public:
- multiple_values()
- : error("multiple values")
- , m_option_name() {}
-
- ~multiple_values() throw() {}
-
- void set_option_name(const std::string& option);
-
- const std::string& get_option_name() const throw();
-
- private:
- std::string m_option_name; // The name of the option which
- // caused the exception.
- };
- /** Class thrown when there are several occurrences of an
- option, but user called a method which cannot return
- them all. */
- class BOOST_PROGRAM_OPTIONS_DECL multiple_occurrences : public error {
- public:
- multiple_occurrences()
- : error("multiple occurrences")
- , m_option_name() {}
-
- ~multiple_occurrences() throw() {}
-
- void set_option_name(const std::string& option);
-
- const std::string& get_option_name() const throw();
- private:
- std::string m_option_name; // The name of the option which
- // caused the exception.
- };
- /** Class thrown when value of option is incorrect. */
- class BOOST_PROGRAM_OPTIONS_DECL validation_error : public error {
- public:
- enum kind_t {
- multiple_values_not_allowed = 30,
- at_least_one_value_required,
- invalid_bool_value,
- invalid_option_value,
- invalid_option
- };
-
- validation_error(kind_t kind,
- const std::string& option_value = "",
- const std::string& option_name = "");
-
- ~validation_error() throw() {}
- void set_option_name(const std::string& option);
-
- const std::string& get_option_name() const throw();
-
- const char* what() const throw();
-
- protected:
- /** Used to convert kind_t to a related error text */
- static std::string error_message(kind_t kind);
- private:
- kind_t m_kind;
- std::string m_option_name; // The name of the option which
- // caused the exception.
- std::string m_option_value; // Optional: value of the option m_options_name
- mutable std::string m_message; // For on-demand formatting in 'what'
- };
- /** Class thrown if there is an invalid option value givenn */
- class BOOST_PROGRAM_OPTIONS_DECL invalid_option_value
- : public validation_error
- {
- public:
- invalid_option_value(const std::string& value);
- #ifndef BOOST_NO_STD_WSTRING
- invalid_option_value(const std::wstring& value);
- #endif
- };
- /** Class thrown when there are too many positional options.
- This is a programming error.
- */
- class BOOST_PROGRAM_OPTIONS_DECL too_many_positional_options_error : public error {
- public:
- too_many_positional_options_error()
- : error("too many positional options")
- {}
- };
- /** Class thrown when there are syntax errors in given command line */
- class BOOST_PROGRAM_OPTIONS_DECL invalid_command_line_syntax : public invalid_syntax {
- public:
- invalid_command_line_syntax(const std::string& tokens, kind_t kind);
- };
- /** Class thrown when there are programming error related to style */
- class BOOST_PROGRAM_OPTIONS_DECL invalid_command_line_style : public error {
- public:
- invalid_command_line_style(const std::string& msg)
- : error(msg)
- {}
- };
- /** Class thrown if config file can not be read */
- class BOOST_PROGRAM_OPTIONS_DECL reading_file : public error {
- public:
- reading_file(const char* filename)
- : error(std::string("can not read file ").append(filename))
- {}
- };
-
- /** Class thrown when a required/mandatory option is missing */
- class BOOST_PROGRAM_OPTIONS_DECL required_option : public error {
- public:
- required_option(const std::string& name)
- : error(std::string("missing required option ").append(name))
- , m_option_name(name)
- {}
-
- ~required_option() throw() {}
- const std::string& get_option_name() const throw();
-
- private:
- std::string m_option_name; // The name of the option which
- // caused the exception.
- };
- }}
- #if defined(BOOST_MSVC)
- # pragma warning (pop)
- #endif
- #endif