]> git.sesse.net Git - casparcg/blob - common/exception/exceptions.h
18127c772381af9033a1b5a309bb127fe6c95074
[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 struct io_error                                 : virtual caspar_exception {};\r
21 struct directory_not_found              : virtual io_error {};\r
22 struct file_not_found                   : virtual io_error {};\r
23 struct file_read_error          : virtual io_error {};\r
24 \r
25 struct invalid_argument                 : virtual caspar_exception {};\r
26 struct null_argument                    : virtual invalid_argument {};\r
27 struct out_of_range                             : virtual invalid_argument {};\r
28 \r
29 struct invalid_operation                : virtual caspar_exception {};\r
30 struct operation_failed                 : virtual caspar_exception {};\r
31 \r
32 struct not_supported                    : virtual caspar_exception {};\r
33 struct not_implemented                  : virtual caspar_exception {};\r
34 \r
35 }\r
36 \r
37 namespace std\r
38 {\r
39 \r
40 inline bool operator!=(const std::exception_ptr& lhs, const std::exception_ptr& rhs)\r
41 {\r
42         return !(lhs == rhs);\r
43 }\r
44 \r
45 inline bool operator!=(const std::exception_ptr& lhs, std::nullptr_t)\r
46 {\r
47         return !(lhs == nullptr);\r
48 }\r
49 \r
50 inline bool operator!=(std::nullptr_t, const std::exception_ptr& rhs)\r
51 {\r
52         return !(nullptr == rhs);\r
53 }\r
54 \r
55 }