Skip to content

Commit ba7c1a5

Browse files
committed
Update const-correctness again, anticipating T* args -> const T* args fix (not yet in Godot)
1 parent ae86ee3 commit ba7c1a5

File tree

12 files changed

+55
-50
lines changed

12 files changed

+55
-50
lines changed

godot-codegen/input/gdnative_interface.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ typedef struct {
176176
typedef void (*GDNativeVariantFromTypeConstructorFunc)(GDNativeVariantPtr, GDNativeTypePtr);
177177
typedef void (*GDNativeTypeFromVariantConstructorFunc)(GDNativeTypePtr, GDNativeVariantPtr);
178178
typedef void (*GDNativePtrOperatorEvaluator)(GDNativeConstTypePtr p_left, GDNativeConstTypePtr p_right, GDNativeTypePtr r_result);
179-
typedef void (*GDNativePtrBuiltInMethod)(GDNativeTypePtr p_base, GDNativeConstTypePtr *p_args, GDNativeTypePtr r_return, int p_argument_count);
180-
typedef void (*GDNativePtrConstructor)(GDNativeTypePtr p_base, GDNativeConstTypePtr *p_args);
179+
typedef void (*GDNativePtrBuiltInMethod)(GDNativeTypePtr p_base, const GDNativeConstTypePtr *p_args, GDNativeTypePtr r_return, int p_argument_count);
180+
typedef void (*GDNativePtrConstructor)(GDNativeTypePtr p_base, const GDNativeConstTypePtr *p_args);
181181
typedef void (*GDNativePtrDestructor)(GDNativeTypePtr p_base);
182182
typedef void (*GDNativePtrSetter)(GDNativeTypePtr p_base, GDNativeConstTypePtr p_value);
183183
typedef void (*GDNativePtrGetter)(GDNativeConstTypePtr p_base, GDNativeTypePtr r_value);
@@ -186,7 +186,7 @@ typedef void (*GDNativePtrIndexedGetter)(GDNativeConstTypePtr p_base, GDNativeIn
186186
typedef void (*GDNativePtrKeyedSetter)(GDNativeTypePtr p_base, GDNativeConstTypePtr p_key, GDNativeConstTypePtr p_value);
187187
typedef void (*GDNativePtrKeyedGetter)(GDNativeConstTypePtr p_base, GDNativeConstTypePtr p_key, GDNativeTypePtr r_value);
188188
typedef uint32_t (*GDNativePtrKeyedChecker)(GDNativeConstVariantPtr p_base, GDNativeConstVariantPtr p_key);
189-
typedef void (*GDNativePtrUtilityFunction)(GDNativeTypePtr r_return, GDNativeConstTypePtr *p_arguments, int p_argument_count);
189+
typedef void (*GDNativePtrUtilityFunction)(GDNativeTypePtr r_return, const GDNativeConstTypePtr *p_arguments, int p_argument_count);
190190

191191
typedef GDNativeObjectPtr (*GDNativeClassConstructor)();
192192

@@ -240,7 +240,7 @@ typedef void (*GDNativeExtensionClassNotification)(GDExtensionClassInstancePtr p
240240
typedef void (*GDNativeExtensionClassToString)(GDExtensionClassInstancePtr p_instance, GDNativeBool *r_is_valid, GDNativeStringPtr p_out);
241241
typedef void (*GDNativeExtensionClassReference)(GDExtensionClassInstancePtr p_instance);
242242
typedef void (*GDNativeExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
243-
typedef void (*GDNativeExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
243+
typedef void (*GDNativeExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
244244
typedef GDNativeObjectPtr (*GDNativeExtensionClassCreateInstance)(void *p_userdata);
245245
typedef void (*GDNativeExtensionClassFreeInstance)(void *p_userdata, GDExtensionClassInstancePtr p_instance);
246246
typedef GDNativeExtensionClassCallVirtual (*GDNativeExtensionClassGetVirtual)(void *p_userdata, GDNativeConstStringNamePtr p_name);
@@ -293,8 +293,8 @@ typedef enum {
293293
GDNATIVE_EXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE
294294
} GDNativeExtensionClassMethodArgumentMetadata;
295295

296-
typedef void (*GDNativeExtensionClassMethodCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
297-
typedef void (*GDNativeExtensionClassMethodPtrCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
296+
typedef void (*GDNativeExtensionClassMethodCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
297+
typedef void (*GDNativeExtensionClassMethodPtrCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
298298

299299
typedef struct {
300300
GDNativeStringNamePtr name;
@@ -342,7 +342,7 @@ typedef void (*GDNativeExtensionScriptInstanceFreeMethodList)(GDNativeExtensionS
342342

343343
typedef GDNativeBool (*GDNativeExtensionScriptInstanceHasMethod)(GDNativeExtensionScriptInstanceDataPtr p_instance, GDNativeConstStringNamePtr p_name);
344344

345-
typedef void (*GDNativeExtensionScriptInstanceCall)(GDNativeExtensionScriptInstanceDataPtr p_self, GDNativeConstStringNamePtr p_method, GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
345+
typedef void (*GDNativeExtensionScriptInstanceCall)(GDNativeExtensionScriptInstanceDataPtr p_self, GDNativeConstStringNamePtr p_method, const GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
346346
typedef void (*GDNativeExtensionScriptInstanceNotification)(GDNativeExtensionScriptInstanceDataPtr p_instance, int32_t p_what);
347347
typedef void (*GDNativeExtensionScriptInstanceToString)(GDNativeExtensionScriptInstanceDataPtr p_instance, GDNativeBool *r_is_valid, GDNativeStringPtr r_out);
348348

@@ -427,8 +427,8 @@ typedef struct {
427427
void (*variant_destroy)(GDNativeVariantPtr p_self);
428428

429429
/* variant type */
430-
void (*variant_call)(GDNativeVariantPtr p_self, GDNativeConstStringNamePtr p_method, GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
431-
void (*variant_call_static)(GDNativeVariantType p_type, GDNativeConstStringNamePtr p_method, GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
430+
void (*variant_call)(GDNativeVariantPtr p_self, GDNativeConstStringNamePtr p_method, const GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
431+
void (*variant_call_static)(GDNativeVariantType p_type, GDNativeConstStringNamePtr p_method, const GDNativeConstVariantPtr *p_args, GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
432432
void (*variant_evaluate)(GDNativeVariantOperator p_op, GDNativeConstVariantPtr p_a, GDNativeConstVariantPtr p_b, GDNativeVariantPtr r_return, GDNativeBool *r_valid);
433433
void (*variant_set)(GDNativeVariantPtr p_self, GDNativeConstVariantPtr p_key, GDNativeConstVariantPtr p_value, GDNativeBool *r_valid);
434434
void (*variant_set_named)(GDNativeVariantPtr p_self, GDNativeConstStringNamePtr p_key, GDNativeConstVariantPtr p_value, GDNativeBool *r_valid);
@@ -463,7 +463,7 @@ typedef struct {
463463
GDNativePtrBuiltInMethod (*variant_get_ptr_builtin_method)(GDNativeVariantType p_type, GDNativeConstStringNamePtr p_method, GDNativeInt p_hash);
464464
GDNativePtrConstructor (*variant_get_ptr_constructor)(GDNativeVariantType p_type, int32_t p_constructor);
465465
GDNativePtrDestructor (*variant_get_ptr_destructor)(GDNativeVariantType p_type);
466-
void (*variant_construct)(GDNativeVariantType p_type, GDNativeVariantPtr p_base, GDNativeConstVariantPtr *p_args, int32_t p_argument_count, GDNativeCallError *r_error);
466+
void (*variant_construct)(GDNativeVariantType p_type, GDNativeVariantPtr p_base, const GDNativeConstVariantPtr *p_args, int32_t p_argument_count, GDNativeCallError *r_error);
467467
GDNativePtrSetter (*variant_get_ptr_setter)(GDNativeVariantType p_type, GDNativeConstStringNamePtr p_member);
468468
GDNativePtrGetter (*variant_get_ptr_getter)(GDNativeVariantType p_type, GDNativeConstStringNamePtr p_member);
469469
GDNativePtrIndexedSetter (*variant_get_ptr_indexed_setter)(GDNativeVariantType p_type);
@@ -537,8 +537,8 @@ typedef struct {
537537

538538
/* OBJECT */
539539

540-
void (*object_method_bind_call)(GDNativeMethodBindPtr p_method_bind, GDNativeObjectPtr p_instance, GDNativeConstVariantPtr *p_args, GDNativeInt p_arg_count, GDNativeVariantPtr r_ret, GDNativeCallError *r_error);
541-
void (*object_method_bind_ptrcall)(GDNativeMethodBindPtr p_method_bind, GDNativeObjectPtr p_instance, GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
540+
void (*object_method_bind_call)(GDNativeMethodBindPtr p_method_bind, GDNativeObjectPtr p_instance, const GDNativeConstVariantPtr *p_args, GDNativeInt p_arg_count, GDNativeVariantPtr r_ret, GDNativeCallError *r_error);
541+
void (*object_method_bind_ptrcall)(GDNativeMethodBindPtr p_method_bind, GDNativeObjectPtr p_instance, const GDNativeConstTypePtr *p_args, GDNativeTypePtr r_ret);
542542
void (*object_destroy)(GDNativeObjectPtr p_o);
543543
GDNativeObjectPtr (*global_get_singleton)(GDNativeConstStringNamePtr p_name);
544544

godot-codegen/src/central_generator.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,8 @@ fn make_construct_fns(
592592

593593
// Generic signature: fn(base: GDNativeTypePtr, args: *const GDNativeTypePtr)
594594
let decls = quote! {
595-
pub #construct_default: unsafe extern "C" fn(GDNativeTypePtr, *mut GDNativeConstTypePtr),
596-
pub #construct_copy: unsafe extern "C" fn(GDNativeTypePtr, *mut GDNativeConstTypePtr),
595+
pub #construct_default: unsafe extern "C" fn(GDNativeTypePtr, *const GDNativeConstTypePtr),
596+
pub #construct_copy: unsafe extern "C" fn(GDNativeTypePtr, *const GDNativeConstTypePtr),
597597
#(#construct_extra_decls)*
598598
};
599599

@@ -643,7 +643,7 @@ fn make_extra_constructors(
643643

644644
let err = format_load_error(&ident);
645645
extra_decls.push(quote! {
646-
pub #ident: unsafe extern "C" fn(GDNativeTypePtr, *mut GDNativeConstTypePtr),
646+
pub #ident: unsafe extern "C" fn(GDNativeTypePtr, *const GDNativeConstTypePtr),
647647
});
648648

649649
let i = i as i32;

godot-codegen/src/class_generator.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ fn make_method_definition(method: &Method, class_name: &str, ctx: &mut Context)
408408
__args.extend(__explicit_args.iter().map(Variant::var_sys_const));
409409
__args.extend(varargs.iter().map(Variant::var_sys_const));
410410

411-
let __args_ptr = __args.as_mut_ptr();
411+
let __args_ptr = __args.as_ptr();
412412

413413
#call
414414
}
@@ -428,10 +428,10 @@ fn make_method_definition(method: &Method, class_name: &str, ctx: &mut Context)
428428
);
429429
let __call_fn = sys::interface_fn!(object_method_bind_ptrcall);
430430

431-
let mut __args = [
431+
let __args = [
432432
#( #arg_exprs ),*
433433
];
434-
let __args_ptr = __args.as_mut_ptr();
434+
let __args_ptr = __args.as_ptr();
435435

436436
#call
437437
}
@@ -465,10 +465,10 @@ pub(crate) fn make_function_definition(
465465
let __call_fn = sys::interface_fn!(variant_get_ptr_utility_function)(__function_name.string_sys(), #hash);
466466
let __call_fn = __call_fn.unwrap_unchecked();
467467

468-
let mut __args = [
468+
let __args = [
469469
#( #arg_exprs ),*
470470
];
471-
let __args_ptr = __args.as_mut_ptr();
471+
let __args_ptr = __args.as_ptr();
472472

473473
#call
474474
};

godot-core/src/builtin/arrays.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ impl<T> Clone for TypedArray<T> {
7474
unsafe {
7575
Self::from_sys_init(|self_ptr| {
7676
let ctor = ::godot_ffi::builtin_fn!(array_construct_copy);
77-
let mut args = [self.sys_const()];
78-
ctor(self_ptr, args.as_mut_ptr());
77+
let args = [self.sys_const()];
78+
ctor(self_ptr, args.as_ptr());
7979
})
8080
}
8181
}

godot-core/src/builtin/macros.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ macro_rules! impl_builtin_traits_inner {
2727
unsafe {
2828
Self::from_sys_init(|self_ptr| {
2929
let ctor = ::godot_ffi::builtin_fn!($gd_method);
30-
let mut args = [self.sys_const()];
31-
ctor(self_ptr, args.as_mut_ptr());
30+
let args = [self.sys_const()];
31+
ctor(self_ptr, args.as_ptr());
3232
})
3333
}
3434
}
@@ -141,9 +141,9 @@ macro_rules! impl_builtin_froms {
141141
fn from(other: &$From) -> Self {
142142
unsafe {
143143
Self::from_sys_init(|ptr| {
144-
let mut args = [other.sys_const()];
144+
let args = [other.sys_const()];
145145
::godot_ffi::builtin_call! {
146-
$from_fn(ptr, args.as_mut_ptr())
146+
$from_fn(ptr, args.as_ptr())
147147
}
148148
})
149149
}

godot-core/src/builtin/meta/signature.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub trait SignatureTuple {
1818

1919
fn varcall<C: GodotClass>(
2020
instance_ptr: sys::GDExtensionClassInstancePtr,
21-
args_ptr: *mut sys::GDNativeConstVariantPtr,
21+
args_ptr: *const sys::GDNativeConstVariantPtr,
2222
ret: sys::GDNativeVariantPtr,
2323
err: *mut sys::GDNativeCallError,
2424
func: fn(&mut C, Self::Params) -> Self::Ret,
@@ -29,7 +29,7 @@ pub trait SignatureTuple {
2929
// We could fall back to varcalls in such cases, and not require GodotFfi categorically.
3030
fn ptrcall<C: GodotClass>(
3131
instance_ptr: sys::GDExtensionClassInstancePtr,
32-
args_ptr: *mut sys::GDNativeConstTypePtr,
32+
args_ptr: *const sys::GDNativeConstTypePtr,
3333
ret: sys::GDNativeTypePtr,
3434
func: fn(&mut C, Self::Params) -> Self::Ret,
3535
method_name: &str,
@@ -106,7 +106,7 @@ macro_rules! impl_signature_for_tuple {
106106
#[inline]
107107
fn varcall<C : GodotClass>(
108108
instance_ptr: sys::GDExtensionClassInstancePtr,
109-
args_ptr: *mut sys::GDNativeConstVariantPtr,
109+
args_ptr: *const sys::GDNativeConstVariantPtr,
110110
ret: sys::GDNativeVariantPtr,
111111
err: *mut sys::GDNativeCallError,
112112
func: fn(&mut C, Self::Params) -> Self::Ret,
@@ -138,7 +138,7 @@ macro_rules! impl_signature_for_tuple {
138138
#[inline]
139139
fn ptrcall<C : GodotClass>(
140140
instance_ptr: sys::GDExtensionClassInstancePtr,
141-
args_ptr: *mut sys::GDNativeConstTypePtr,
141+
args_ptr: *const sys::GDNativeConstTypePtr,
142142
ret: sys::GDNativeTypePtr,
143143
func: fn(&mut C, Self::Params) -> Self::Ret,
144144
method_name: &str,
@@ -149,7 +149,11 @@ macro_rules! impl_signature_for_tuple {
149149
let mut instance = storage.get_mut();
150150

151151
let args = ( $(
152-
unsafe { <$Pn as sys::GodotFuncMarshal>::try_from_sys(*args_ptr.offset($n)) }
152+
unsafe {
153+
<$Pn as sys::GodotFuncMarshal>::try_from_sys(
154+
sys::force_mut_ptr(*args_ptr.offset($n))
155+
)
156+
}
153157
.unwrap_or_else(|e| param_error::<$Pn>(method_name, $n, &e)),
154158
)* );
155159

godot-core/src/builtin/node_path.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ impl From<&GodotString> for NodePath {
2828
unsafe {
2929
Self::from_sys_init(|self_ptr| {
3030
let ctor = sys::builtin_fn!(node_path_from_string);
31-
let mut args = [path.sys_const()];
32-
ctor(self_ptr, args.as_mut_ptr());
31+
let args = [path.sys_const()];
32+
ctor(self_ptr, args.as_ptr());
3333
})
3434
}
3535
}
@@ -40,8 +40,8 @@ impl From<&NodePath> for GodotString {
4040
unsafe {
4141
Self::from_sys_init(|self_ptr| {
4242
let ctor = sys::builtin_fn!(string_from_node_path);
43-
let mut args = [path.sys_const()];
44-
ctor(self_ptr, args.as_mut_ptr());
43+
let args = [path.sys_const()];
44+
ctor(self_ptr, args.as_ptr());
4545
})
4646
}
4747
}

godot-core/src/builtin/others.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ impl Callable {
5555
unsafe {
5656
Self::from_sys_init(|self_ptr| {
5757
let ctor = sys::builtin_fn!(callable_from_object_method);
58-
let mut args = [object.sys_const(), method.sys_const()];
59-
ctor(self_ptr, args.as_mut_ptr());
58+
let args = [object.sys_const(), method.sys_const()];
59+
ctor(self_ptr, args.as_ptr());
6060
})
6161
}
6262
}

godot-core/src/builtin/string_name.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ impl From<&GodotString> for StringName {
108108
unsafe {
109109
Self::from_sys_init(|self_ptr| {
110110
let ctor = sys::builtin_fn!(string_name_from_string);
111-
let mut args = [s.sys_const()];
112-
ctor(self_ptr, args.as_mut_ptr());
111+
let args = [s.sys_const()];
112+
ctor(self_ptr, args.as_ptr());
113113
})
114114
}
115115
}
@@ -127,8 +127,8 @@ impl From<&StringName> for GodotString {
127127
unsafe {
128128
Self::from_sys_init(|self_ptr| {
129129
let ctor = sys::builtin_fn!(string_from_string_name);
130-
let mut args = [s.sys_const()];
131-
ctor(self_ptr, args.as_mut_ptr());
130+
let args = [s.sys_const()];
131+
ctor(self_ptr, args.as_ptr());
132132
})
133133
}
134134
}

godot-core/src/log.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ pub fn print(varargs: &[Variant]) {
8484
let mut args = Vec::new();
8585
args.extend(varargs.iter().map(Variant::sys_const));
8686

87-
let args_ptr = args.as_mut_ptr();
87+
let args_ptr = args.as_ptr();
8888
let _variant = Variant::from_sys_init(|return_ptr| {
8989
call_fn(return_ptr, args_ptr, args.len() as i32);
9090
});

0 commit comments

Comments
 (0)