]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/exception/include/boost/exception/detail/type_info.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / exception / include / boost / exception / detail / type_info.hpp
1 //Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
2
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifndef UUID_C3E1741C754311DDB2834CCA55D89593
7 #define UUID_C3E1741C754311DDB2834CCA55D89593
8 #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9 #pragma GCC system_header
10 #endif
11 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
12 #pragma warning(push,1)
13 #endif
14
15 #include <boost/core/typeinfo.hpp>
16 #include <boost/core/demangle.hpp>
17 #include <boost/current_function.hpp>
18 #include <boost/config.hpp>
19 #include <string>
20
21 namespace
22 boost
23 {
24 template <class T>
25 inline
26 std::string
27 tag_type_name()
28 {
29 #ifdef BOOST_NO_TYPEID
30 return BOOST_CURRENT_FUNCTION;
31 #else
32 return core::demangle(typeid(T*).name());
33 #endif
34 }
35
36 template <class T>
37 inline
38 std::string
39 type_name()
40 {
41 #ifdef BOOST_NO_TYPEID
42 return BOOST_CURRENT_FUNCTION;
43 #else
44 return core::demangle(typeid(T).name());
45 #endif
46 }
47
48 namespace
49 exception_detail
50 {
51 struct
52 type_info_
53 {
54 core::typeinfo const * type_;
55
56 explicit
57 type_info_( core::typeinfo const & type ):
58 type_(&type)
59 {
60 }
61
62 friend
63 bool
64 operator<( type_info_ const & a, type_info_ const & b )
65 {
66 return 0!=(a.type_->before(*b.type_));
67 }
68 };
69 }
70 }
71
72 #define BOOST_EXCEPTION_STATIC_TYPEID(T) ::boost::exception_detail::type_info_(BOOST_CORE_TYPEID(T))
73
74 #ifndef BOOST_NO_RTTI
75 #define BOOST_EXCEPTION_DYNAMIC_TYPEID(x) ::boost::exception_detail::type_info_(typeid(x))
76 #endif
77
78 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
79 #pragma warning(pop)
80 #endif
81 #endif