x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
type_id.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\python\type_id.hpp
Girar
Efecto
Propiedad
Historial
// Copyright David Abrahams 2002. // 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 TYPE_ID_DWA2002517_HPP # define TYPE_ID_DWA2002517_HPP # include
# include
# include
# include
# include
# include
# include
# include
# include
# ifndef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE # if defined(__GNUC__) \ && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) \ && !defined(__EDG_VERSION__) # define BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE # endif # endif namespace boost { namespace python { // for this compiler at least, cross-shared-library type_info // comparisons don't work, so use typeid(x).name() instead. It's not // yet clear what the best default strategy is. # if (defined(__GNUC__) && __GNUC__ >= 3) \ || defined(_AIX) \ || ( defined(__sgi) && defined(__host_mips)) \ || (defined(__hpux) && defined(__HP_aCC)) \ || (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC)) # define BOOST_PYTHON_TYPE_ID_NAME # endif #ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE // Runtime detection of broken cxxabi::__cxa_demangle versions, // to avoid #ifdef clutter. bool cxxabi_cxa_demangle_is_broken(); #define BOOST_PYTHON_HAVE_CXXABI_CXA_DEMANGLE_IS_BROKEN #endif // type ids which represent the same information as std::type_info // (i.e. the top-level reference and cv-qualifiers are stripped), but // which works across shared libraries. struct type_info : private totally_ordered
{ inline type_info(std::type_info const& = typeid(void)); inline bool operator<(type_info const& rhs) const; inline bool operator==(type_info const& rhs) const; char const* name() const; friend BOOST_PYTHON_DECL std::ostream& operator<<( std::ostream&, type_info const&); private: // data members # ifdef BOOST_PYTHON_TYPE_ID_NAME typedef char const* base_id_t; # else typedef std::type_info const* base_id_t; # endif base_id_t m_base_type; }; # ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS # define BOOST_PYTHON_EXPLICIT_TT_DEF(T) ::boost::type
* # else # define BOOST_PYTHON_EXPLICIT_TT_DEF(T) # endif template
inline type_info type_id(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { return type_info( # if !defined(_MSC_VER) \ || (!BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ && !BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700)) typeid(T) # else // strip the decoration which msvc and Intel mistakenly leave in python::detail::msvc_typeid((boost::type
*)0) # endif ); } # if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \ || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744) // Older EDG-based compilers seems to mistakenly distinguish "int" from // "signed int", etc., but only in typeid() expressions. However // though int == signed int, the "signed" decoration is propagated // down into template instantiations. Explicit specialization stops // that from taking hold. # define BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(T) \ template <> \ inline type_info type_id
(BOOST_PYTHON_EXPLICIT_TT_DEF(T)) \ { \ return type_info(typeid(T)); \ } BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(short) BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(int) BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(long) // using Python's macro instead of Boost's - we don't seem to get the // config right all the time. # ifdef HAVE_LONG_LONG BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID(long long) # endif # undef BOOST_PYTHON_SIGNED_INTEGRAL_TYPE_ID # endif // inline type_info::type_info(std::type_info const& id) : m_base_type( # ifdef BOOST_PYTHON_TYPE_ID_NAME id.name() # else &id # endif ) { } inline bool type_info::operator<(type_info const& rhs) const { # ifdef BOOST_PYTHON_TYPE_ID_NAME return std::strcmp(m_base_type, rhs.m_base_type) < 0; # else return m_base_type->before(*rhs.m_base_type); # endif } inline bool type_info::operator==(type_info const& rhs) const { # ifdef BOOST_PYTHON_TYPE_ID_NAME return !std::strcmp(m_base_type, rhs.m_base_type); # else return *m_base_type == *rhs.m_base_type; # endif } # ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE namespace detail { BOOST_PYTHON_DECL char const* gcc_demangle(char const*); } # endif inline char const* type_info::name() const { char const* raw_name = m_base_type # ifndef BOOST_PYTHON_TYPE_ID_NAME ->name() # endif ; # ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE return detail::gcc_demangle(raw_name); # else return raw_name; # endif } BOOST_PYTHON_DECL std::ostream& operator<<(std::ostream&, type_info const&); # if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) template<> inline type_info type_id
(BOOST_PYTHON_EXPLICIT_TT_DEF(void)) { return type_info (typeid (void *)); } # ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS template<> inline type_info type_id
(BOOST_PYTHON_EXPLICIT_TT_DEF(const volatile void)) { return type_info (typeid (void *)); } # endif # endif }} // namespace boost::python #endif // TYPE_ID_DWA2002517_HPP
type_id.hpp
Dirección de la página
Dirección del archivo
Anterior
83/85
Siguiente
Descargar
( 5 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.