blob: 08cef386b6b17e47a9c0fe90e3284ef4c07d52fb [file] [log] [blame]
Jeff Thompsonf7d49942013-08-01 16:47:40 -07001#ifndef UUID_AA15E74A856F11E08B8D93F24824019B
2#define UUID_AA15E74A856F11E08B8D93F24824019B
3#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
4#pragma GCC system_header
5#endif
6#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
7#pragma warning(push,1)
8#endif
9
10// MS compatible compilers support #pragma once
11
12#if defined(_MSC_VER) && (_MSC_VER >= 1020)
13# pragma once
14#endif
15
16//
Jeff Thompson9939dcd2013-10-15 15:12:24 -070017// ndnboost/throw_exception.hpp
Jeff Thompsonf7d49942013-08-01 16:47:40 -070018//
19// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
20// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
21//
22// Distributed under the Boost Software License, Version 1.0. (See
23// accompanying file LICENSE_1_0.txt or copy at
24// http://www.boost.org/LICENSE_1_0.txt)
25//
26// http://www.boost.org/libs/utility/throw_exception.html
27//
28
Jeff Thompson2277ce52013-08-01 17:34:11 -070029#include <ndnboost/exception/detail/attribute_noreturn.hpp>
30#include <ndnboost/detail/workaround.hpp>
31#include <ndnboost/config.hpp>
Jeff Thompsonf7d49942013-08-01 16:47:40 -070032#include <exception>
33
34#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) )
35# define BOOST_EXCEPTION_DISABLE
36#endif
37
38#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 )
39# define BOOST_EXCEPTION_DISABLE
40#endif
41
42#if !defined( BOOST_EXCEPTION_DISABLE )
Jeff Thompson2277ce52013-08-01 17:34:11 -070043# include <ndnboost/exception/exception.hpp>
44# include <ndnboost/current_function.hpp>
Jeff Thompsonf7d49942013-08-01 16:47:40 -070045# define BOOST_THROW_EXCEPTION(x) ::ndnboost::exception_detail::throw_exception_(x,BOOST_CURRENT_FUNCTION,__FILE__,__LINE__)
46#else
47# define BOOST_THROW_EXCEPTION(x) ::ndnboost::throw_exception(x)
48#endif
49
50namespace ndnboost
51{
52#ifdef BOOST_NO_EXCEPTIONS
53
54void throw_exception( std::exception const & e ); // user defined
55
56#else
57
58inline void throw_exception_assert_compatibility( std::exception const & ) { }
59
60template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const & e )
61{
62 //All boost exceptions are required to derive from std::exception,
63 //to ensure compatibility with BOOST_NO_EXCEPTIONS.
64 throw_exception_assert_compatibility(e);
65
66#ifndef BOOST_EXCEPTION_DISABLE
67 throw enable_current_exception(enable_error_info(e));
68#else
69 throw e;
70#endif
71}
72
73#endif
74
75#if !defined( BOOST_EXCEPTION_DISABLE )
76 namespace
77 exception_detail
78 {
79 template <class E>
80 BOOST_ATTRIBUTE_NORETURN
81 void
82 throw_exception_( E const & x, char const * current_function, char const * file, int line )
83 {
84 ndnboost::throw_exception(
85 set_info(
86 set_info(
87 set_info(
88 enable_error_info(x),
89 throw_function(current_function)),
90 throw_file(file)),
91 throw_line(line)));
92 }
93 }
94#endif
95} // namespace ndnboost
96
97#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
98#pragma warning(pop)
99#endif
100#endif