This is Unofficial EPICS BASE Doxygen Site
assert.hpp
Go to the documentation of this file.
1 //
2 // boost/assert.hpp - BOOST_ASSERT(expr)
3 // BOOST_ASSERT_MSG(expr, msg)
4 // BOOST_VERIFY(expr)
5 //
6 // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
7 // Copyright (c) 2007 Peter Dimov
8 // Copyright (c) Beman Dawes 2011
9 //
10 // Distributed under the Boost Software License, Version 1.0. (See
11 // accompanying file LICENSE_1_0.txt or copy at
12 // http://www.boost.org/LICENSE_1_0.txt)
13 //
14 // Note: There are no include guards. This is intentional.
15 //
16 // See http://www.boost.org/libs/utility/assert.html for documentation.
17 //
18 
19 //
20 // Stop inspect complaining about use of 'assert':
21 //
22 // boostinspect:naassert_macro
23 //
24 
25 //--------------------------------------------------------------------------------------//
26 // BOOST_ASSERT //
27 //--------------------------------------------------------------------------------------//
28 
29 #undef BOOST_ASSERT
30 
31 #if defined(BOOST_DISABLE_ASSERTS)
32 
33 # define BOOST_ASSERT(expr) ((void)0)
34 
35 #elif defined(BOOST_ENABLE_ASSERT_HANDLER)
36 
38 
39 namespace boost
40 {
41  void assertion_failed(char const * expr,
42  char const * function, char const * file, long line); // user defined
43 } // namespace boost
44 
45 #define BOOST_ASSERT(expr) ((expr) \
46  ? ((void)0) \
47  : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
48 
49 #else
50 # include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
51 # define BOOST_ASSERT(expr) assert(expr)
52 #endif
53 
54 //--------------------------------------------------------------------------------------//
55 // BOOST_ASSERT_MSG //
56 //--------------------------------------------------------------------------------------//
57 
58 # undef BOOST_ASSERT_MSG
59 
60 #if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
61 
62  #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
63 
64 #elif defined(BOOST_ENABLE_ASSERT_HANDLER)
65 
67 
68  namespace boost
69  {
70  void assertion_failed_msg(char const * expr, char const * msg,
71  char const * function, char const * file, long line); // user defined
72  } // namespace boost
73 
74  #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
75  ? ((void)0) \
76  : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
77 
78 #else
79  #ifndef BOOST_ASSERT_HPP
80  #define BOOST_ASSERT_HPP
81  #include <cstdlib>
82  #include <iostream>
84 
85  // IDE's like Visual Studio perform better if output goes to std::cout or
86  // some other stream, so allow user to configure output stream:
87  #ifndef BOOST_ASSERT_MSG_OSTREAM
88  # define BOOST_ASSERT_MSG_OSTREAM std::cerr
89  #endif
90 
91  namespace boost
92  {
93  namespace assertion
94  {
95  namespace detail
96  {
97  inline void assertion_failed_msg(char const * expr, char const * msg, char const * function,
98  char const * file, long line)
99  {
101  << "***** Internal Program Error - assertion (" << expr << ") failed in "
102  << function << ":\n"
103  << file << '(' << line << "): " << msg << std::endl;
104  std::abort();
105  }
106  } // detail
107  } // assertion
108  } // detail
109  #endif
110 
111  #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
112  ? ((void)0) \
113  : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \
114  BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
115 #endif
116 
117 //--------------------------------------------------------------------------------------//
118 // BOOST_VERIFY //
119 //--------------------------------------------------------------------------------------//
120 
121 #undef BOOST_VERIFY
122 
123 #if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
124 
125 # define BOOST_VERIFY(expr) ((void)(expr))
126 
127 #else
128 
129 # define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
130 
131 #endif
Definition: assert.hpp:91
char * line
Definition: reader.c:25
void assertion_failed_msg(char const *expr, char const *msg, char const *function, char const *file, long line)
Definition: assert.hpp:97
#define BOOST_ASSERT_MSG_OSTREAM
Definition: assert.hpp:88