summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmmanuel Leblond <emmanuel.leblond@gmail.com>2022-11-13 00:37:55 +0100
committerEmmanuel Leblond <emmanuel.leblond@gmail.com>2022-12-03 00:27:07 +0100
commitfe86a94dcf996e6262d788028e7efd1f50267e20 (patch)
treede338d0fd68e5fbe4067b8faeeb338f40e66ff4e /src
parentf1d501f97749fd70f590a3e82b81e55d6cf1d2d7 (diff)
downloadredot-cpp-fe86a94dcf996e6262d788028e7efd1f50267e20.tar.gz
Fix const qualifier for parameters in GDExtension api functions
Diffstat (limited to 'src')
-rw-r--r--src/classes/wrapped.cpp8
-rw-r--r--src/core/class_db.cpp10
-rw-r--r--src/core/method_bind.cpp4
-rw-r--r--src/godot.cpp2
-rw-r--r--src/variant/variant.cpp6
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) {