@@ -37,27 +37,15 @@ macro_rules! impl_variant_traits {
3737 impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type; ) ;
3838 } ;
3939
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) => {
4541 impl_variant_traits!( @@ $T, $from_fn, $to_fn, $variant_type;
4642 fn param_metadata( ) -> sys:: GDExtensionClassMethodArgumentMetadata {
4743 sys:: $param_metadata
4844 }
4945 ) ;
5046 } ;
5147
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) * ) => {
6149 impl ToVariant for $T {
6250 fn to_variant( & self ) -> Variant {
6351 let variant = unsafe {
@@ -87,9 +75,7 @@ macro_rules! impl_variant_traits {
8775 //
8876 // This was changed in 4.1.
8977 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| {
9379 let converter = sys:: builtin_fn!( $to_fn) ;
9480 converter( self_ptr, variant. var_sys( ) ) ;
9581 } )
@@ -101,22 +87,6 @@ macro_rules! impl_variant_traits {
10187
10288 impl_variant_metadata!( $T, $variant_type; $( $extra) * ) ;
10389 } ;
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- } ;
12090}
12191
12292macro_rules! impl_variant_traits_int {
@@ -184,28 +154,28 @@ mod impls {
184154 impl_variant_traits ! ( Aabb , aabb_to_variant, aabb_from_variant, Aabb ) ;
185155 impl_variant_traits ! ( bool , bool_to_variant, bool_from_variant, Bool ) ;
186156 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 ) ;
188158 impl_variant_traits ! ( Vector2 , vector2_to_variant, vector2_from_variant, Vector2 ) ;
189159 impl_variant_traits ! ( Vector3 , vector3_to_variant, vector3_from_variant, Vector3 ) ;
190160 impl_variant_traits ! ( Vector4 , vector4_to_variant, vector4_from_variant, Vector4 ) ;
191161 impl_variant_traits ! ( Vector2i , vector2i_to_variant, vector2i_from_variant, Vector2i ) ;
192162 impl_variant_traits ! ( Vector3i , vector3i_to_variant, vector3i_from_variant, Vector3i ) ;
193163 impl_variant_traits ! ( Quaternion , quaternion_to_variant, quaternion_from_variant, Quaternion ) ;
194164 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 ) ;
196166 impl_variant_traits ! ( StringName , string_name_to_variant, string_name_from_variant, StringName ) ;
197167 impl_variant_traits ! ( NodePath , node_path_to_variant, node_path_from_variant, NodePath ) ;
198168 // TODO use impl_variant_traits!, as soon as `Default` is available. Also consider auto-generating.
199169 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 ) ;
209179 impl_variant_traits ! ( Plane , plane_to_variant, plane_from_variant, Plane ) ;
210180 impl_variant_traits ! ( Projection , projection_to_variant, projection_from_variant, Projection ) ;
211181 impl_variant_traits ! ( Rid , rid_to_variant, rid_from_variant, Rid ) ;
@@ -215,7 +185,7 @@ mod impls {
215185 impl_variant_traits ! ( Transform3D , transform_3d_to_variant, transform_3d_from_variant, Transform3D ) ;
216186 impl_variant_traits ! ( Dictionary , dictionary_to_variant, dictionary_from_variant, Dictionary ) ;
217187
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 ) ;
219189 impl_variant_traits_int ! ( i8 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8 ) ;
220190 impl_variant_traits_int ! ( i16 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16 ) ;
221191 impl_variant_traits_int ! ( i32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32 ) ;
@@ -225,7 +195,7 @@ mod impls {
225195 impl_variant_traits_int ! ( u32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32 ) ;
226196 // u64 is not supported, because it cannot be represented on GDScript side, and implicitly converting to i64 is error-prone.
227197
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 ) ;
229199 impl_variant_traits_float ! ( f32 , GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT ) ;
230200}
231201
0 commit comments