1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Core: Handle disabled class detection in ClassDB

This commit is contained in:
Thaddeus Crews
2025-06-29 12:36:16 -05:00
parent 21fbf033f7
commit 555e7ad073
13 changed files with 62 additions and 52 deletions

View File

@@ -41,6 +41,24 @@
#include <type_traits>
template <typename T, typename = void>
struct is_class_enabled;
template <>
struct is_class_enabled<Object> : std::true_type {};
template <typename T>
struct is_class_enabled<T, std::enable_if_t<std::is_base_of_v<Object, T>>> {
static constexpr bool value = is_class_enabled<typename T::super_type>::value;
};
template <typename T>
inline constexpr bool is_class_enabled_v = is_class_enabled<T>::value;
#define GD_IS_CLASS_ENABLED(m_class) is_class_enabled_v<m_class>
#include "core/disabled_classes.gen.h"
#define DEFVAL(m_defval) (m_defval)
#define DEFVAL_ARRAY DEFVAL(ClassDB::default_array_arg)
@@ -551,25 +569,24 @@ public:
#endif // DEBUG_ENABLED
#define GDREGISTER_CLASS(m_class) \
if (m_class::_class_is_enabled) { \
::ClassDB::register_class<m_class>(); \
#define GDREGISTER_CLASS(m_class) \
if constexpr (GD_IS_CLASS_ENABLED(m_class)) { \
::ClassDB::register_class<m_class>(); \
}
#define GDREGISTER_VIRTUAL_CLASS(m_class) \
if (m_class::_class_is_enabled) { \
if constexpr (GD_IS_CLASS_ENABLED(m_class)) { \
::ClassDB::register_class<m_class>(true); \
}
#define GDREGISTER_ABSTRACT_CLASS(m_class) \
if (m_class::_class_is_enabled) { \
if constexpr (GD_IS_CLASS_ENABLED(m_class)) { \
::ClassDB::register_abstract_class<m_class>(); \
}
#define GDREGISTER_INTERNAL_CLASS(m_class) \
if (m_class::_class_is_enabled) { \
if constexpr (GD_IS_CLASS_ENABLED(m_class)) { \
::ClassDB::register_internal_class<m_class>(); \
}
#define GDREGISTER_RUNTIME_CLASS(m_class) \
if (m_class::_class_is_enabled) { \
if constexpr (GD_IS_CLASS_ENABLED(m_class)) { \
::ClassDB::register_runtime_class<m_class>(); \
}