From 805cdde0b7811ee4d1184c132049f6dfa092d7e7 Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Wed, 1 Nov 2023 12:44:14 -0500 Subject: [PATCH] GDCLASS synced by ending with "private:" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Matches implementation used by modules and godot itself • Apply same to GDEXTENSION_CLASS, setup with same diff-friendly spacers as GDCLASS (cherry picked from commit 6eb5d450bd28903f6a0fe45f8065fa70448e5793) --- include/godot_cpp/classes/wrapped.hpp | 186 ++++++++++++++------------ 1 file changed, 97 insertions(+), 89 deletions(-) diff --git a/include/godot_cpp/classes/wrapped.hpp b/include/godot_cpp/classes/wrapped.hpp index ed923c1c..4683070e 100644 --- a/include/godot_cpp/classes/wrapped.hpp +++ b/include/godot_cpp/classes/wrapped.hpp @@ -325,97 +325,105 @@ public: _gde_binding_create_callback, \ _gde_binding_free_callback, \ _gde_binding_reference_callback, \ - }; + }; \ + \ +private: // Don't use this for your classes, use GDCLASS() instead. -#define GDEXTENSION_CLASS_ALIAS(m_class, m_alias_for, m_inherits) \ -private: \ - inline static ::godot::internal::EngineClassRegistration _gde_engine_class_registration_helper; \ - void operator=(const m_class &p_rval) {} \ - \ -protected: \ - virtual const GDExtensionInstanceBindingCallbacks *_get_bindings_callbacks() const override { \ - return &_gde_binding_callbacks; \ - } \ - \ - m_class(const char *p_godot_class) : m_inherits(p_godot_class) {} \ - m_class(GodotObject *p_godot_object) : m_inherits(p_godot_object) {} \ - \ - static void (*_get_bind_methods())() { \ - return nullptr; \ - } \ - \ - static void (Wrapped::*_get_notification())(int) { \ - return nullptr; \ - } \ - \ - static bool (Wrapped::*_get_set())(const ::godot::StringName &p_name, const Variant &p_property) { \ - return nullptr; \ - } \ - \ - static bool (Wrapped::*_get_get())(const ::godot::StringName &p_name, Variant &r_ret) const { \ - return nullptr; \ - } \ - \ - static void (Wrapped::*_get_get_property_list())(List * p_list) const { \ - return nullptr; \ - } \ - \ - static bool (Wrapped::*_get_property_can_revert())(const ::godot::StringName &p_name) const { \ - return nullptr; \ - } \ - \ - static bool (Wrapped::*_get_property_get_revert())(const ::godot::StringName &p_name, Variant &) const { \ - return nullptr; \ - } \ - \ - static String (Wrapped::*_get_to_string())() const { \ - return nullptr; \ - } \ - \ -public: \ - typedef m_class self_type; \ - \ - static void initialize_class() {} \ - \ - static ::godot::StringName &get_class_static() { \ - static ::godot::StringName string_name = ::godot::StringName(#m_alias_for); \ - return string_name; \ - } \ - \ - static ::godot::StringName &get_parent_class_static() { \ - return m_inherits::get_class_static(); \ - } \ - \ - static GDExtensionObjectPtr create(void *data) { \ - return nullptr; \ - } \ - \ - static GDExtensionClassInstancePtr recreate(void *data, GDExtensionObjectPtr obj) { \ - return nullptr; \ - } \ - \ - static void free(void *data, GDExtensionClassInstancePtr ptr) { \ - } \ - \ - static void *_gde_binding_create_callback(void *p_token, void *p_instance) { \ - /* Do not call memnew here, we don't want the post-initializer to be called */ \ - return new ("") m_class((GodotObject *)p_instance); \ - } \ - static void _gde_binding_free_callback(void *p_token, void *p_instance, void *p_binding) { \ - /* Explicitly call the deconstructor to ensure proper lifecycle for non-trivial members */ \ - reinterpret_cast(p_binding)->~m_class(); \ - Memory::free_static(reinterpret_cast(p_binding)); \ - } \ - static GDExtensionBool _gde_binding_reference_callback(void *p_token, void *p_instance, GDExtensionBool p_reference) { \ - return true; \ - } \ - static constexpr GDExtensionInstanceBindingCallbacks _gde_binding_callbacks = { \ - _gde_binding_create_callback, \ - _gde_binding_free_callback, \ - _gde_binding_reference_callback, \ - }; \ - m_class() : m_class(#m_alias_for) {} +#define GDEXTENSION_CLASS_ALIAS(m_class, m_alias_for, m_inherits) /******************************************************************************************************************/ \ +private: \ + inline static ::godot::internal::EngineClassRegistration _gde_engine_class_registration_helper; \ + void operator=(const m_class &p_rval) {} \ + \ +protected: \ + virtual const GDExtensionInstanceBindingCallbacks *_get_bindings_callbacks() const override { \ + return &_gde_binding_callbacks; \ + } \ + \ + m_class(const char *p_godot_class) : m_inherits(p_godot_class) {} \ + m_class(GodotObject *p_godot_object) : m_inherits(p_godot_object) {} \ + \ + static void (*_get_bind_methods())() { \ + return nullptr; \ + } \ + \ + static void (Wrapped::*_get_notification())(int) { \ + return nullptr; \ + } \ + \ + static bool (Wrapped::*_get_set())(const ::godot::StringName &p_name, const Variant &p_property) { \ + return nullptr; \ + } \ + \ + static bool (Wrapped::*_get_get())(const ::godot::StringName &p_name, Variant &r_ret) const { \ + return nullptr; \ + } \ + \ + static inline bool has_get_property_list() { \ + return false; \ + } \ + \ + static void (Wrapped::*_get_get_property_list())(List * p_list) const { \ + return nullptr; \ + } \ + \ + static bool (Wrapped::*_get_property_can_revert())(const ::godot::StringName &p_name) const { \ + return nullptr; \ + } \ + \ + static bool (Wrapped::*_get_property_get_revert())(const ::godot::StringName &p_name, Variant &) const { \ + return nullptr; \ + } \ + \ + static void (Wrapped::*_get_validate_property())(::godot::PropertyInfo & p_property) const { \ + return nullptr; \ + } \ + \ + static String (Wrapped::*_get_to_string())() const { \ + return nullptr; \ + } \ + \ +public: \ + typedef m_class self_type; \ + \ + static void initialize_class() {} \ + \ + static ::godot::StringName &get_class_static() { \ + static ::godot::StringName string_name = ::godot::StringName(#m_alias_for); \ + return string_name; \ + } \ + \ + static ::godot::StringName &get_parent_class_static() { \ + return m_inherits::get_class_static(); \ + } \ + \ + static GDExtensionObjectPtr create(void *data) { \ + return nullptr; \ + } \ + \ + static void free(void *data, GDExtensionClassInstancePtr ptr) { \ + } \ + \ + static void *_gde_binding_create_callback(void *p_token, void *p_instance) { \ + /* Do not call memnew here, we don't want the post-initializer to be called */ \ + return new ("") m_class((GodotObject *)p_instance); \ + } \ + static void _gde_binding_free_callback(void *p_token, void *p_instance, void *p_binding) { \ + /* Explicitly call the deconstructor to ensure proper lifecycle for non-trivial members */ \ + reinterpret_cast(p_binding)->~m_class(); \ + Memory::free_static(reinterpret_cast(p_binding)); \ + } \ + static GDExtensionBool _gde_binding_reference_callback(void *p_token, void *p_instance, GDExtensionBool p_reference) { \ + return true; \ + } \ + static constexpr GDExtensionInstanceBindingCallbacks _gde_binding_callbacks = { \ + _gde_binding_create_callback, \ + _gde_binding_free_callback, \ + _gde_binding_reference_callback, \ + }; \ + m_class() : m_class(#m_alias_for) {} \ + \ +private: // Don't use this for your classes, use GDCLASS() instead. #define GDEXTENSION_CLASS(m_class, m_inherits) GDEXTENSION_CLASS_ALIAS(m_class, m_class, m_inherits)