Main Page
Modules
Namespaces
Classes
Files
File List
File Members
include
ecl
exceptions
exceptions/macros.hpp
Go to the documentation of this file.
1
8
/*****************************************************************************
9
** Ifdefs
10
*****************************************************************************/
11
12
#ifndef ECL_EXCEPTIONS_MACROS_HPP_
13
#define ECL_EXCEPTIONS_MACROS_HPP_
14
15
/*****************************************************************************
16
** Includes
17
*****************************************************************************/
18
19
#include <ecl/config/macros.hpp>
20
#include <ecl/config/ecl.hpp>
21
22
/*****************************************************************************
23
** Declspecs
24
*****************************************************************************/
25
26
/*
27
* Import/exports symbols for the library
28
*/
29
#ifdef ECL_HAS_SHARED_LIBS // ecl is being built around shared libraries
30
#ifdef ecl_exceptions_EXPORTS // we are building a shared lib/dll
31
#define ecl_exceptions_PUBLIC ECL_HELPER_EXPORT
32
#else // we are using shared lib/dll
33
#define ecl_exceptions_PUBLIC ECL_HELPER_IMPORT
34
#endif
35
#define ecl_exceptions_LOCAL ECL_HELPERS_LOCAL
36
#else // ecl is being built around static libraries
37
#define ecl_exceptions_PUBLIC
38
#define ecl_exceptions_LOCAL
39
#endif
40
41
/*****************************************************************************
42
** Macros [ecl_throw]
43
*****************************************************************************/
44
45
#if defined(ECL_DISABLE_EXCEPTIONS)
46
#define ecl_throw_decl(exception)
47
#define ecl_throw(exception) ((void)0)
48
#define ecl_try if(true)
49
#define ecl_catch(exception) else
50
#else
51
64
#define ecl_throw_decl(exception) throw(exception)
65
74
#define ecl_throw(exception) throw exception;
75
80
#define ecl_try try
81
86
#define ecl_catch(exception) catch(exception)
87
90
#endif
91
92
/*****************************************************************************
93
** Macros [ecl_assert_throw, ecl_debug_throw]
94
*****************************************************************************/
95
/* Some bad logic here - release can still mean we use some exceptions */
96
#if defined(NDEBUG) || defined(ECL_NDEBUG) || defined(ECL_DISABLE_EXCEPTIONS)
97
#define ecl_assert_throw_decl(exception)
98
#define ecl_assert_throw(expression,exception) ((void)0)
99
#define ecl_debug_throw_decl(exception)
100
#define ecl_debug_throw(exception) ((void)0)
101
#define ecl_debug_try if(true)
102
#define ecl_debug_catch(exception) else // TODO - this is useles, you can't do ecl_debug_catch(Exception &e) { std::cout << e.what() << std::endl; } in release mode
103
#else
104
#define ECL_HAS_EXCEPTIONS
105
120
#define ecl_assert_throw_decl(exception) throw(exception)
121
129
#define ecl_assert_throw(expression,exception) if ( !(expression) ) { throw exception; }
130
139
#define ecl_debug_throw_decl(exception) throw(exception)
140
149
#define ecl_debug_throw(exception) throw exception;
150
155
#define ecl_debug_try try
156
161
#define ecl_debug_catch(exception) catch(exception)
162
#endif
163
167
#endif
/* ECL_EXCEPTIONS_MACROS_HPP_ */
xbot_node
Author(s): Roc, wangpeng@droid.ac.cn
autogenerated on Sat Oct 10 2020 03:28:13