/Src/Dependencies/Boost/boost/exception/detail/type_info.hpp
http://hadesmem.googlecode.com/ · C++ Header · 83 lines · 69 code · 11 blank · 3 comment · 3 complexity · 63438717a875f8711cedeb1379372315 MD5 · raw file
- //Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
- //Distributed under the Boost Software License, Version 1.0. (See accompanying
- //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #ifndef UUID_C3E1741C754311DDB2834CCA55D89593
- #define UUID_C3E1741C754311DDB2834CCA55D89593
- #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
- #pragma GCC system_header
- #endif
- #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
- #pragma warning(push,1)
- #endif
- #include <boost/detail/sp_typeinfo.hpp>
- #include <boost/current_function.hpp>
- #include <boost/config.hpp>
- #ifndef BOOST_NO_TYPEID
- #include <boost/units/detail/utility.hpp>
- #endif
- #include <string>
- namespace
- boost
- {
- template <class T>
- inline
- std::string
- tag_type_name()
- {
- #ifdef BOOST_NO_TYPEID
- return BOOST_CURRENT_FUNCTION;
- #else
- return units::detail::demangle(typeid(T*).name());
- #endif
- }
- template <class T>
- inline
- std::string
- type_name()
- {
- #ifdef BOOST_NO_TYPEID
- return BOOST_CURRENT_FUNCTION;
- #else
- return units::detail::demangle(typeid(T).name());
- #endif
- }
- namespace
- exception_detail
- {
- struct
- type_info_
- {
- detail::sp_typeinfo const * type_;
- explicit
- type_info_( detail::sp_typeinfo const & type ):
- type_(&type)
- {
- }
- friend
- bool
- operator<( type_info_ const & a, type_info_ const & b )
- {
- return 0!=(a.type_->before(*b.type_));
- }
- };
- }
- }
- #define BOOST_EXCEPTION_STATIC_TYPEID(T) ::boost::exception_detail::type_info_(BOOST_SP_TYPEID(T))
- #ifndef BOOST_NO_RTTI
- #define BOOST_EXCEPTION_DYNAMIC_TYPEID(x) ::boost::exception_detail::type_info_(typeid(x))
- #endif
- #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
- #pragma warning(pop)
- #endif
- #endif