82 lines
2.0 KiB
Plaintext
82 lines
2.0 KiB
Plaintext
//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 (__GNUC__*100+__GNUC_MINOR__>301) && !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/core/typeinfo.hpp>
|
|
#include <boost/core/demangle.hpp>
|
|
#include <boost/current_function.hpp>
|
|
#include <boost/config.hpp>
|
|
#include <string>
|
|
|
|
namespace
|
|
boost
|
|
{
|
|
template <class T>
|
|
inline
|
|
std::string
|
|
tag_type_name()
|
|
{
|
|
#ifdef BOOST_NO_TYPEID
|
|
return BOOST_CURRENT_FUNCTION;
|
|
#else
|
|
return core::demangle(typeid(T*).name());
|
|
#endif
|
|
}
|
|
|
|
template <class T>
|
|
inline
|
|
std::string
|
|
type_name()
|
|
{
|
|
#ifdef BOOST_NO_TYPEID
|
|
return BOOST_CURRENT_FUNCTION;
|
|
#else
|
|
return core::demangle(typeid(T).name());
|
|
#endif
|
|
}
|
|
|
|
namespace
|
|
exception_detail
|
|
{
|
|
struct
|
|
type_info_
|
|
{
|
|
core::typeinfo const * type_;
|
|
|
|
explicit
|
|
type_info_( core::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_CORE_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
|