]> git.sesse.net Git - casparcg/blob - common/exception/exceptions.h
2.0.0.2:
[casparcg] / common / exception / exceptions.h
1 #pragma once\r
2 \r
3 #include <exception>\r
4 #include <boost/exception/all.hpp>\r
5 #include <boost/exception/errinfo_file_name.hpp>\r
6 #include <boost/throw_exception.hpp>\r
7 \r
8 namespace caspar {\r
9 \r
10 typedef boost::error_info<struct tag_arg_name_info, std::string> arg_name_info;\r
11 typedef boost::error_info<struct tag_arg_value_info, std::string> arg_value_info;\r
12 typedef boost::error_info<struct tag_arg_name_info, std::wstring> warg_name_info;\r
13 typedef boost::error_info<struct tag_arg_value_info, std::wstring> warg_value_info;\r
14 typedef boost::error_info<struct tag_msg_info, std::string> msg_info;\r
15 typedef boost::error_info<struct tag_inner_info, std::exception_ptr> inner_info;\r
16 typedef boost::error_info<struct tag_line_info, int> line_info;\r
17 \r
18 struct caspar_exception                 : virtual boost::exception, virtual std::exception \r
19 {\r
20         caspar_exception(){}\r
21         explicit caspar_exception(const char* msg) : std::exception(msg) {}\r
22 };\r
23 \r
24 struct io_error                                 : virtual caspar_exception {};\r
25 struct directory_not_found              : virtual io_error {};\r
26 struct file_not_found                   : virtual io_error {};\r
27 struct file_read_error          : virtual io_error {};\r
28 \r
29 struct invalid_argument                 : virtual caspar_exception {};\r
30 struct null_argument                    : virtual invalid_argument {};\r
31 struct out_of_range                             : virtual invalid_argument {};\r
32 \r
33 struct invalid_operation                : virtual caspar_exception {};\r
34 struct operation_failed                 : virtual caspar_exception {};\r
35 \r
36 struct not_supported                    : virtual caspar_exception {};\r
37 struct not_implemented                  : virtual caspar_exception {};\r
38 \r
39 }\r
40 \r
41 namespace std\r
42 {\r
43 \r
44 inline bool operator!=(const std::exception_ptr& lhs, const std::exception_ptr& rhs)\r
45 {\r
46         return !(lhs == rhs);\r
47 }\r
48 \r
49 inline bool operator!=(const std::exception_ptr& lhs, std::nullptr_t)\r
50 {\r
51         return !(lhs == nullptr);\r
52 }\r
53 \r
54 inline bool operator!=(std::nullptr_t, const std::exception_ptr& rhs)\r
55 {\r
56         return !(nullptr == rhs);\r
57 }\r
58 \r
59 }