@@ -37,27 +37,15 @@ macro_rules! impl_variant_traits {
37
37
impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type; ) ;
38
38
} ;
39
39
40
- ( $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident, init) => {
41
- impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type, init; ) ;
42
- } ;
43
-
44
- ( $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident, metadata = $param_metadata: ident) => {
40
+ ( $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident, $param_metadata: ident) => {
45
41
impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type;
46
42
fn param_metadata( ) -> sys:: GDExtensionClassMethodArgumentMetadata {
47
43
sys:: $param_metadata
48
44
}
49
45
) ;
50
46
} ;
51
47
52
- ( $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident, init, metadata = $param_metadata: ident) => {
53
- impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type, init;
54
- fn param_metadata( ) -> sys:: GDExtensionClassMethodArgumentMetadata {
55
- sys:: $param_metadata
56
- }
57
- ) ;
58
- } ;
59
-
60
- ( @@ $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident $( , $init: ident) ?; $( $extra: tt) * ) => {
48
+ ( @@ $T: ty, $from_fn: ident, $to_fn: ident, $variant_type: ident; $( $extra: tt) * ) => {
61
49
impl ToVariant for $T {
62
50
fn to_variant( & self ) -> Variant {
63
51
let variant = unsafe {
@@ -87,9 +75,7 @@ macro_rules! impl_variant_traits {
87
75
//
88
76
// This was changed in 4.1.
89
77
let result = unsafe {
90
- impl_variant_traits!( @@from_sys_init, from_sys_init $( , $init) ?) ;
91
-
92
- from_sys_init( |self_ptr| {
78
+ sys:: from_sys_init_or_init_default( |self_ptr| {
93
79
let converter = sys:: builtin_fn!( $to_fn) ;
94
80
converter( self_ptr, variant. var_sys( ) ) ;
95
81
} )
@@ -101,22 +87,6 @@ macro_rules! impl_variant_traits {
101
87
102
88
impl_variant_metadata!( $T, $variant_type; $( $extra) * ) ;
103
89
} ;
104
-
105
- ( @@from_sys_init, $from_sys_init: ident, init) => {
106
- #[ cfg( gdextension_api = "4.0" ) ]
107
- let $from_sys_init = Self :: from_sys_init_default;
108
- #[ cfg( not( gdextension_api = "4.0" ) ) ]
109
- let $from_sys_init = Self :: from_sys_init;
110
- } ;
111
-
112
- ( @@from_sys_init, $from_sys_init: ident) => {
113
- // let $from_sys_init = Self::from_sys_init;
114
-
115
- #[ cfg( gdextension_api = "4.0" ) ]
116
- let $from_sys_init = Self :: from_sys_init_default;
117
- #[ cfg( not( gdextension_api = "4.0" ) ) ]
118
- let $from_sys_init = Self :: from_sys_init;
119
- } ;
120
90
}
121
91
122
92
macro_rules! impl_variant_traits_int {
@@ -184,28 +154,28 @@ mod impls {
184
154
impl_variant_traits ! ( Aabb , aabb_to_variant, aabb_from_variant, Aabb ) ;
185
155
impl_variant_traits ! ( bool , bool_to_variant, bool_from_variant, Bool ) ;
186
156
impl_variant_traits ! ( Basis , basis_to_variant, basis_from_variant, Basis ) ;
187
- impl_variant_traits ! ( Callable , callable_to_variant, callable_from_variant, Callable , init ) ;
157
+ impl_variant_traits ! ( Callable , callable_to_variant, callable_from_variant, Callable ) ;
188
158
impl_variant_traits ! ( Vector2 , vector2_to_variant, vector2_from_variant, Vector2 ) ;
189
159
impl_variant_traits ! ( Vector3 , vector3_to_variant, vector3_from_variant, Vector3 ) ;
190
160
impl_variant_traits ! ( Vector4 , vector4_to_variant, vector4_from_variant, Vector4 ) ;
191
161
impl_variant_traits ! ( Vector2i , vector2i_to_variant, vector2i_from_variant, Vector2i ) ;
192
162
impl_variant_traits ! ( Vector3i , vector3i_to_variant, vector3i_from_variant, Vector3i ) ;
193
163
impl_variant_traits ! ( Quaternion , quaternion_to_variant, quaternion_from_variant, Quaternion ) ;
194
164
impl_variant_traits ! ( Color , color_to_variant, color_from_variant, Color ) ;
195
- impl_variant_traits ! ( GodotString , string_to_variant, string_from_variant, String , init ) ;
165
+ impl_variant_traits ! ( GodotString , string_to_variant, string_from_variant, String ) ;
196
166
impl_variant_traits ! ( StringName , string_name_to_variant, string_name_from_variant, StringName ) ;
197
167
impl_variant_traits ! ( NodePath , node_path_to_variant, node_path_from_variant, NodePath ) ;
198
168
// TODO use impl_variant_traits!, as soon as `Default` is available. Also consider auto-generating.
199
169
impl_variant_metadata ! ( Signal , /* signal_to_variant, signal_from_variant, */ Signal ) ;
200
- impl_variant_traits ! ( PackedByteArray , packed_byte_array_to_variant, packed_byte_array_from_variant, PackedByteArray , init ) ;
201
- impl_variant_traits ! ( PackedInt32Array , packed_int32_array_to_variant, packed_int32_array_from_variant, PackedInt32Array , init ) ;
202
- impl_variant_traits ! ( PackedInt64Array , packed_int64_array_to_variant, packed_int64_array_from_variant, PackedInt64Array , init ) ;
203
- impl_variant_traits ! ( PackedFloat32Array , packed_float32_array_to_variant, packed_float32_array_from_variant, PackedFloat32Array , init ) ;
204
- impl_variant_traits ! ( PackedFloat64Array , packed_float64_array_to_variant, packed_float64_array_from_variant, PackedFloat64Array , init ) ;
205
- impl_variant_traits ! ( PackedStringArray , packed_string_array_to_variant, packed_string_array_from_variant, PackedStringArray , init ) ;
206
- impl_variant_traits ! ( PackedVector2Array , packed_vector2_array_to_variant, packed_vector2_array_from_variant, PackedVector2Array , init ) ;
207
- impl_variant_traits ! ( PackedVector3Array , packed_vector3_array_to_variant, packed_vector3_array_from_variant, PackedVector3Array , init ) ;
208
- impl_variant_traits ! ( PackedColorArray , packed_color_array_to_variant, packed_color_array_from_variant, PackedColorArray , init ) ;
170
+ impl_variant_traits ! ( PackedByteArray , packed_byte_array_to_variant, packed_byte_array_from_variant, PackedByteArray ) ;
171
+ impl_variant_traits ! ( PackedInt32Array , packed_int32_array_to_variant, packed_int32_array_from_variant, PackedInt32Array ) ;
172
+ impl_variant_traits ! ( PackedInt64Array , packed_int64_array_to_variant, packed_int64_array_from_variant, PackedInt64Array ) ;
173
+ impl_variant_traits ! ( PackedFloat32Array , packed_float32_array_to_variant, packed_float32_array_from_variant, PackedFloat32Array ) ;
174
+ impl_variant_traits ! ( PackedFloat64Array , packed_float64_array_to_variant, packed_float64_array_from_variant, PackedFloat64Array ) ;
175
+ impl_variant_traits ! ( PackedStringArray , packed_string_array_to_variant, packed_string_array_from_variant, PackedStringArray ) ;
176
+ impl_variant_traits ! ( PackedVector2Array , packed_vector2_array_to_variant, packed_vector2_array_from_variant, PackedVector2Array ) ;
177
+ impl_variant_traits ! ( PackedVector3Array , packed_vector3_array_to_variant, packed_vector3_array_from_variant, PackedVector3Array ) ;
178
+ impl_variant_traits ! ( PackedColorArray , packed_color_array_to_variant, packed_color_array_from_variant, PackedColorArray ) ;
209
179
impl_variant_traits ! ( Plane , plane_to_variant, plane_from_variant, Plane ) ;
210
180
impl_variant_traits ! ( Projection , projection_to_variant, projection_from_variant, Projection ) ;
211
181
impl_variant_traits ! ( Rid , rid_to_variant, rid_from_variant, Rid ) ;
@@ -215,7 +185,7 @@ mod impls {
215
185
impl_variant_traits ! ( Transform3D , transform_3d_to_variant, transform_3d_from_variant, Transform3D ) ;
216
186
impl_variant_traits ! ( Dictionary , dictionary_to_variant, dictionary_from_variant, Dictionary ) ;
217
187
218
- impl_variant_traits ! ( i64 , int_to_variant, int_from_variant, Int , metadata = GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64 ) ;
188
+ impl_variant_traits ! ( i64 , int_to_variant, int_from_variant, Int , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64 ) ;
219
189
impl_variant_traits_int ! ( i8 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8 ) ;
220
190
impl_variant_traits_int ! ( i16 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16 ) ;
221
191
impl_variant_traits_int ! ( i32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32 ) ;
@@ -225,7 +195,7 @@ mod impls {
225
195
impl_variant_traits_int ! ( u32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32 ) ;
226
196
// u64 is not supported, because it cannot be represented on GDScript side, and implicitly converting to i64 is error-prone.
227
197
228
- impl_variant_traits ! ( f64 , float_to_variant, float_from_variant, Float , metadata = GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE ) ;
198
+ impl_variant_traits ! ( f64 , float_to_variant, float_from_variant, Float , GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE ) ;
229
199
impl_variant_traits_float ! ( f32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT ) ;
230
200
}
231
201
0 commit comments