Commit 6c7a80d8 by Jamie Madill

Detect RTTI properly on Clang.

This was giving a compile error on OSX. Also update the logic slightly. BUG=angleproject:963 Change-Id: I1ac64aa0908a58d9780054084d5c205c61848763 Reviewed-on: https://chromium-review.googlesource.com/263730Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 99f075da
...@@ -150,10 +150,19 @@ bool DebugAnnotationsActive(); ...@@ -150,10 +150,19 @@ bool DebugAnnotationsActive();
#endif #endif
// A macro that determines whether an object has a given runtime type. // A macro that determines whether an object has a given runtime type.
#if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI)) && (!defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || defined(__GXX_RTTI)) #if defined(__clang__)
#define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast<type >(obj) != NULL) #if __has_feature(cxx_rtti)
#define ANGLE_HAS_DYNAMIC_CAST 1
#endif
#elif !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI)) && (!defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || defined(__GXX_RTTI))
#define ANGLE_HAS_DYNAMIC_CAST 1
#endif
#ifdef ANGLE_HAS_DYNAMIC_CAST
#define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast<type>(obj) != nullptr)
#undef ANGLE_HAS_DYNAMIC_CAST
#else #else
#define HAS_DYNAMIC_TYPE(type, obj) true #define HAS_DYNAMIC_TYPE(type, obj) (obj != nullptr)
#endif #endif
#endif // COMMON_DEBUG_H_ #endif // COMMON_DEBUG_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment