Add PIP_HAS_RTTI
This commit is contained in:
@@ -218,7 +218,17 @@ extern char ** environ;
|
|||||||
# define assertm(exp, msg) assert(((void)msg, exp))
|
# define assertm(exp, msg) assert(((void)msg, exp))
|
||||||
# endif
|
# 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()
|
# define __PIP_TYPENAME__(T) typeid(T).name()
|
||||||
# else
|
# else
|
||||||
# define __PIP_TYPENAME__(T) "?"
|
# define __PIP_TYPENAME__(T) "?"
|
||||||
@@ -318,11 +328,15 @@ typedef long long ssize_t;
|
|||||||
//! \~russian Макрос для инициализации частной секции
|
//! \~russian Макрос для инициализации частной секции
|
||||||
//! \~sa PRIVATE_DEFINITION_END PRIVATE_DEFINITION_START PRIVATE_DEFINITION_END_NO_INITIALIZE PRIVATE PRIVATEWB
|
//! \~sa PRIVATE_DEFINITION_END PRIVATE_DEFINITION_START PRIVATE_DEFINITION_END_NO_INITIALIZE PRIVATE PRIVATEWB
|
||||||
# define PRIVATE_DEFINITION_INITIALIZE(c) \
|
# 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;*/ \
|
c::__PrivateInitializer__::__PrivateInitializer__(const c::__PrivateInitializer__ &) { /*if (p) delete p;*/ \
|
||||||
p = new c::__Private__(); \
|
p = new c::__Private__(); \
|
||||||
} \
|
} \
|
||||||
c::__PrivateInitializer__::~__PrivateInitializer__() { piDeleteSafety(p); } \
|
c::__PrivateInitializer__::~__PrivateInitializer__() { \
|
||||||
|
piDeleteSafety(p); \
|
||||||
|
} \
|
||||||
c::__PrivateInitializer__ & c::__PrivateInitializer__::operator=(const c::__PrivateInitializer__ &) { \
|
c::__PrivateInitializer__ & c::__PrivateInitializer__::operator=(const c::__PrivateInitializer__ &) { \
|
||||||
piDeleteSafety(p); \
|
piDeleteSafety(p); \
|
||||||
p = new c::__Private__(); \
|
p = new c::__Private__(); \
|
||||||
|
|||||||
Reference in New Issue
Block a user