diff options
author | Emmanuel Leblond <emmanuel.leblond@gmail.com> | 2022-11-13 00:37:55 +0100 |
---|---|---|
committer | Emmanuel Leblond <emmanuel.leblond@gmail.com> | 2022-12-03 00:27:07 +0100 |
commit | fe86a94dcf996e6262d788028e7efd1f50267e20 (patch) | |
tree | de338d0fd68e5fbe4067b8faeeb338f40e66ff4e /src | |
parent | f1d501f97749fd70f590a3e82b81e55d6cf1d2d7 (diff) | |
download | redot-cpp-fe86a94dcf996e6262d788028e7efd1f50267e20.tar.gz |
Fix const qualifier for parameters in GDExtension api functions
Diffstat (limited to 'src')
-rw-r--r-- | src/classes/wrapped.cpp | 8 | ||||
-rw-r--r-- | src/core/class_db.cpp | 10 | ||||
-rw-r--r-- | src/core/method_bind.cpp | 4 | ||||
-rw-r--r-- | src/godot.cpp | 2 | ||||
-rw-r--r-- | src/variant/variant.cpp | 6 |
5 files changed, 13 insertions, 17 deletions
diff --git a/src/classes/wrapped.cpp b/src/classes/wrapped.cpp index fead050..ed57f44 100644 --- a/src/classes/wrapped.cpp +++ b/src/classes/wrapped.cpp @@ -43,17 +43,13 @@ const StringName *Wrapped::_get_extension_class_name() const { void Wrapped::_postinitialize() { const StringName *extension_class = _get_extension_class_name(); if (extension_class) { - // TODO: replace C cast by a proper reinterpret_cast once `object_set_instance` signature correctly handles `const GDNativeStringNamePtr` param - // (see: https://github.com/godotengine/godot/pull/67751) - godot::internal::gdn_interface->object_set_instance(_owner, (GDNativeStringNamePtr)(extension_class), this); + godot::internal::gdn_interface->object_set_instance(_owner, reinterpret_cast<GDNativeConstStringNamePtr>(extension_class), this); } godot::internal::gdn_interface->object_set_instance_binding(_owner, godot::internal::token, this, _get_bindings_callbacks()); } Wrapped::Wrapped(const StringName p_godot_class) { - // TODO: replace C cast by a proper reinterpret_cast once `classdb_construct_object` signature correctly handles `const GDNativeStringNamePtr` param - // (see: https://github.com/godotengine/godot/pull/67751) - _owner = godot::internal::gdn_interface->classdb_construct_object((GDNativeStringNamePtr)(p_godot_class._native_ptr())); + _owner = godot::internal::gdn_interface->classdb_construct_object(reinterpret_cast<GDNativeConstStringNamePtr>(p_godot_class._native_ptr())); } Wrapped::Wrapped(GodotObject *p_godot_object) { diff --git a/src/core/class_db.cpp b/src/core/class_db.cpp index 7985f94..1e2c6e0 100644 --- a/src/core/class_db.cpp +++ b/src/core/class_db.cpp @@ -220,7 +220,7 @@ void ClassDB::bind_method_godot(const StringName &p_class_name, MethodBind *p_me StringName name = p_method->get_name(); GDNativeExtensionClassMethodInfo method_info = { - name._native_ptr(), // const GDNativeStringNamePtr; + name._native_ptr(), // GDNativeStringNamePtr; p_method, // void *method_userdata; MethodBind::bind_call, // GDNativeExtensionClassMethodCall call_func; MethodBind::bind_ptrcall, // GDNativeExtensionClassMethodPtrCall ptrcall_func; @@ -261,10 +261,10 @@ void ClassDB::add_signal(const StringName &p_class, const MethodInfo &p_signal) for (const PropertyInfo &par : p_signal.arguments) { parameters.push_back(GDNativePropertyInfo{ static_cast<GDNativeVariantType>(par.type), // GDNativeVariantType type; - par.name._native_ptr(), // const GDNativeStringNamePtr name; - par.class_name._native_ptr(), // const GDNativeStringNamePtr class_name; + par.name._native_ptr(), // GDNativeStringNamePtr name; + par.class_name._native_ptr(), // GDNativeStringNamePtr class_name; par.hint, // NONE //uint32_t hint; - par.hint_string._native_ptr(), // const GDNativeStringPtr hint_string; + par.hint_string._native_ptr(), // GDNativeStringPtr hint_string; par.usage, // DEFAULT //uint32_t usage; }); } @@ -288,7 +288,7 @@ void ClassDB::bind_integer_constant(const StringName &p_class_name, const String // Register it with Godot internal::gdn_interface->classdb_register_extension_class_integer_constant(internal::library, p_class_name._native_ptr(), p_enum_name._native_ptr(), p_constant_name._native_ptr(), p_constant_value, p_is_bitfield); } -GDNativeExtensionClassCallVirtual ClassDB::get_virtual_func(void *p_userdata, const GDNativeStringNamePtr p_name) { +GDNativeExtensionClassCallVirtual ClassDB::get_virtual_func(void *p_userdata, GDNativeConstStringNamePtr p_name) { // This is called by Godot the first time it calls a virtual function, and it caches the result, per object instance. // Because of this, it can happen from different threads at once. // It should be ok not using any mutex as long as we only READ data. diff --git a/src/core/method_bind.cpp b/src/core/method_bind.cpp index 9c0ce4b..4987179 100644 --- a/src/core/method_bind.cpp +++ b/src/core/method_bind.cpp @@ -91,7 +91,7 @@ PropertyInfo MethodBind::get_argument_info(int p_argument) const { return info; } -void MethodBind::bind_call(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, const GDNativeVariantPtr *p_args, const GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error) { +void MethodBind::bind_call(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error) { const MethodBind *bind = reinterpret_cast<const MethodBind *>(p_method_userdata); Variant ret = bind->call(p_instance, p_args, p_argument_count, *r_error); // This assumes the return value is an empty Variant, so it doesn't need to call the destructor first. @@ -99,7 +99,7 @@ void MethodBind::bind_call(void *p_method_userdata, GDExtensionClassInstancePtr internal::gdn_interface->variant_new_copy(r_return, ret._native_ptr()); } -void MethodBind::bind_ptrcall(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, const GDNativeTypePtr *p_args, GDNativeTypePtr r_return) { +void MethodBind::bind_ptrcall(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, GDNativeConstTypePtr *p_args, GDNativeTypePtr r_return) { const MethodBind *bind = reinterpret_cast<const MethodBind *>(p_method_userdata); bind->ptrcall(p_instance, p_args, r_return); } diff --git a/src/godot.cpp b/src/godot.cpp index 356e7f1..b0d995b 100644 --- a/src/godot.cpp +++ b/src/godot.cpp @@ -51,7 +51,7 @@ GDExtensionBinding::Callback GDExtensionBinding::init_callback = nullptr; GDExtensionBinding::Callback GDExtensionBinding::terminate_callback = nullptr; GDNativeInitializationLevel GDExtensionBinding::minimum_initialization_level = GDNATIVE_INITIALIZATION_CORE; -GDNativeBool GDExtensionBinding::init(const GDNativeInterface *p_interface, const GDNativeExtensionClassLibraryPtr p_library, GDNativeInitialization *r_initialization) { +GDNativeBool GDExtensionBinding::init(const GDNativeInterface *p_interface, GDNativeExtensionClassLibraryPtr p_library, GDNativeInitialization *r_initialization) { internal::gdn_interface = p_interface; internal::library = p_library; internal::token = p_library; diff --git a/src/variant/variant.cpp b/src/variant/variant.cpp index 6494bb9..efb7d55 100644 --- a/src/variant/variant.cpp +++ b/src/variant/variant.cpp @@ -72,7 +72,7 @@ Variant::Variant() { internal::gdn_interface->variant_new_nil(_native_ptr()); } -Variant::Variant(const GDNativeVariantPtr native_ptr) { +Variant::Variant(GDNativeConstVariantPtr native_ptr) { internal::gdn_interface->variant_new_copy(_native_ptr(), native_ptr); } @@ -530,11 +530,11 @@ bool Variant::operator<(const Variant &other) const { } void Variant::call(const StringName &method, const Variant **args, int argcount, Variant &r_ret, GDNativeCallError &r_error) { - internal::gdn_interface->variant_call(_native_ptr(), method._native_ptr(), reinterpret_cast<const GDNativeVariantPtr *>(const_cast<Variant **>(args)), argcount, r_ret._native_ptr(), &r_error); + internal::gdn_interface->variant_call(_native_ptr(), method._native_ptr(), reinterpret_cast<GDNativeConstVariantPtr *>(args), argcount, r_ret._native_ptr(), &r_error); } void Variant::call_static(Variant::Type type, const StringName &method, const Variant **args, int argcount, Variant &r_ret, GDNativeCallError &r_error) { - internal::gdn_interface->variant_call_static(static_cast<GDNativeVariantType>(type), method._native_ptr(), reinterpret_cast<const GDNativeVariantPtr *>(const_cast<Variant **>(args)), argcount, r_ret._native_ptr(), &r_error); + internal::gdn_interface->variant_call_static(static_cast<GDNativeVariantType>(type), method._native_ptr(), reinterpret_cast<GDNativeConstVariantPtr *>(args), argcount, r_ret._native_ptr(), &r_error); } void Variant::evaluate(const Operator &op, const Variant &a, const Variant &b, Variant &r_ret, bool &r_valid) { |