// ---------------------------------------------------------------------------- // boost/format/exceptions.hpp // ---------------------------------------------------------------------------- // Copyright Samuel Krempp 2003. // // 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) // // // See http://www.boost.org/libs/format/ for library home page // ---------------------------------------------------------------------------- #ifndef BOOST_FORMAT_EXCEPTIONS_HPP #define BOOST_FORMAT_EXCEPTIONS_HPP #include <stdexcept> namespace boost { namespace io { // **** exceptions ----------------------------------------------- class format_error : public std::exception { public: format_error() {} virtual const char *what() const throw() { return "boost::format_error: " "format generic failure"; } }; class bad_format_string : public format_error { std::size_t pos_, next_; public: bad_format_string(std::size_t pos, std::size_t size) : pos_(pos), next_(size) {} std::size_t get_pos() const { return pos_; } std::size_t get_next() const { return next_; } virtual const char *what() const throw() { return "boost::bad_format_string: format-string is ill-formed"; } }; class too_few_args : public format_error { std::size_t cur_, expected_; public: too_few_args(std::size_t cur, std::size_t expected) : cur_(cur), expected_(expected) {} std::size_t get_cur() const { return cur_; } std::size_t get_expected() const { return expected_; } virtual const char *what() const throw() { return "boost::too_few_args: " "format-string referred to more arguments than were passed"; } }; class too_many_args : public format_error { std::size_t cur_, expected_; public: too_many_args(std::size_t cur, std::size_t expected) : cur_(cur), expected_(expected) {} std::size_t get_cur() const { return cur_; } std::size_t get_expected() const { return expected_; } virtual const char *what() const throw() { return "boost::too_many_args: " "format-string referred to less arguments than were passed"; } }; class out_of_range : public format_error { int index_, beg_, end_; // range is [ beg, end [ public: out_of_range(int index, int beg, int end) : index_(index), beg_(beg), end_(end) {} int get_index() const { return index_; } int get_beg() const { return beg_; } int get_end() const { return end_; } virtual const char *what() const throw() { return "boost::out_of_range: " "tried to refer to an argument (or item) number which" " is out of range, according to the format string"; } }; } // namespace io } // namespace boost #endif // BOOST_FORMAT_EXCEPTIONS_HPP