Add PIP_HAS_RTTI

This commit is contained in:
2026-08-11 22:17:16 +03:00
parent 077ac9887b
commit 5f222d6c0c
+17 -3
View File
@@ -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__(); \