Add PIP_HAS_RTTI
This commit is contained in:
@@ -218,7 +218,17 @@ extern char ** environ;
|
||||
# define assertm(exp, msg) assert(((void)msg, exp))
|
||||
# endif
|
||||
|
||||
# if defined(__GXX_RTTI__) || defined(__RTTI__)
|
||||
# ifndef __has_feature
|
||||
# define __has_feature(x) 0 // Default to 0 if the compiler doesn't support it
|
||||
# endif
|
||||
|
||||
# if defined(__cpp_rtti) || defined(__GXX_RTTI) || defined(_CPPRTTI) || (__has_feature(cxx_rtti))
|
||||
# define PIP_HAS_RTTI 1
|
||||
# else
|
||||
# define PIP_HAS_RTTI 0
|
||||
# endif
|
||||
|
||||
# if PIP_HAS_RTTI
|
||||
# define __PIP_TYPENAME__(T) typeid(T).name()
|
||||
# else
|
||||
# define __PIP_TYPENAME__(T) "?"
|
||||
@@ -318,11 +328,15 @@ typedef long long ssize_t;
|
||||
//! \~russian Макрос для инициализации частной секции
|
||||
//! \~sa PRIVATE_DEFINITION_END PRIVATE_DEFINITION_START PRIVATE_DEFINITION_END_NO_INITIALIZE PRIVATE PRIVATEWB
|
||||
# define PRIVATE_DEFINITION_INITIALIZE(c) \
|
||||
c::__PrivateInitializer__::__PrivateInitializer__() { p = new c::__Private__(); } \
|
||||
c::__PrivateInitializer__::__PrivateInitializer__() { \
|
||||
p = new c::__Private__(); \
|
||||
} \
|
||||
c::__PrivateInitializer__::__PrivateInitializer__(const c::__PrivateInitializer__ &) { /*if (p) delete p;*/ \
|
||||
p = new c::__Private__(); \
|
||||
} \
|
||||
c::__PrivateInitializer__::~__PrivateInitializer__() { piDeleteSafety(p); } \
|
||||
c::__PrivateInitializer__::~__PrivateInitializer__() { \
|
||||
piDeleteSafety(p); \
|
||||
} \
|
||||
c::__PrivateInitializer__ & c::__PrivateInitializer__::operator=(const c::__PrivateInitializer__ &) { \
|
||||
piDeleteSafety(p); \
|
||||
p = new c::__Private__(); \
|
||||
|
||||
Reference in New Issue
Block a user