18 #ifndef INCLUDED_UHD_EXCEPTION_HPP
19 #define INCLUDED_UHD_EXCEPTION_HPP
22 #include <boost/current_function.hpp>
47 virtual unsigned code(
void)
const = 0;
48 virtual exception *dynamic_clone(
void)
const = 0;
49 virtual void dynamic_throw(
void)
const = 0;
54 virtual unsigned code(
void)
const;
55 virtual assertion_error *dynamic_clone(
void)
const;
56 virtual void dynamic_throw(
void)
const;
61 virtual unsigned code(
void)
const;
62 virtual lookup_error *dynamic_clone(
void)
const;
63 virtual void dynamic_throw(
void)
const;
68 virtual unsigned code(
void)
const;
69 virtual index_error *dynamic_clone(
void)
const;
70 virtual void dynamic_throw(
void)
const;
75 virtual unsigned code(
void)
const;
76 virtual key_error *dynamic_clone(
void)
const;
77 virtual void dynamic_throw(
void)
const;
82 virtual unsigned code(
void)
const;
83 virtual type_error *dynamic_clone(
void)
const;
84 virtual void dynamic_throw(
void)
const;
89 virtual unsigned code(
void)
const;
90 virtual value_error *dynamic_clone(
void)
const;
91 virtual void dynamic_throw(
void)
const;
96 virtual unsigned code(
void)
const;
97 virtual runtime_error *dynamic_clone(
void)
const;
98 virtual void dynamic_throw(
void)
const;
103 virtual unsigned code(
void)
const;
104 virtual not_implemented_error *dynamic_clone(
void)
const;
105 virtual void dynamic_throw(
void)
const;
110 virtual unsigned code(
void)
const;
111 virtual environment_error *dynamic_clone(
void)
const;
112 virtual void dynamic_throw(
void)
const;
117 virtual unsigned code(
void)
const;
118 virtual io_error *dynamic_clone(
void)
const;
119 virtual void dynamic_throw(
void)
const;
124 virtual unsigned code(
void)
const;
125 virtual os_error *dynamic_clone(
void)
const;
126 virtual void dynamic_throw(
void)
const;
131 virtual unsigned code(
void)
const;
132 virtual system_error *dynamic_clone(
void)
const;
133 virtual void dynamic_throw(
void)
const;
142 #define UHD_THROW_SITE_INFO(what) std::string( \
143 std::string(what) + "\n" + \
144 " in " + std::string(BOOST_CURRENT_FUNCTION) + "\n" + \
145 " at " + std::string(__FILE__) + ":" + BOOST_STRINGIZE(__LINE__) + "\n" \
152 #define UHD_THROW_INVALID_CODE_PATH() \
153 throw uhd::system_error(UHD_THROW_SITE_INFO("invalid code path"))
160 #define UHD_ASSERT_THROW(code) if (not (code)) \
161 throw uhd::assertion_error(UHD_THROW_SITE_INFO(#code)); \