@@ -273,63 +273,3 @@ impl PropertyInfo {
273273 }
274274 }
275275}
276-
277- #[ derive( Debug ) ]
278- pub struct MethodInfo {
279- pub id : i32 ,
280- pub method_name : StringName ,
281- pub class_name : ClassName ,
282- pub return_type : PropertyInfo ,
283- pub arguments : Vec < PropertyInfo > ,
284- pub default_arguments : Vec < Variant > ,
285- pub flags : global:: MethodFlags ,
286- }
287-
288- impl MethodInfo {
289- /// Converts to the FFI type. Keep this object allocated while using that!
290- ///
291- /// The struct returned by this function contains pointers into the fields of `self`. `self` should therefore not be dropped while the
292- /// [`sys::GDExtensionMethodInfo`] is still in use.
293- ///
294- /// This function also leaks memory that has to be cleaned up by the caller once it is no longer used. Specifically the `arguments` and
295- /// `default_arguments` vectors have to be reconstructed from the pointer and length and then dropped/freed.
296- ///
297- /// Each vector can be reconstructed with `Vec::from_raw_parts` since the pointers were created with `Vec::into_boxed_slice`, which
298- /// guarantees that the vector capacity and length are equal.
299- pub fn method_sys ( & self ) -> sys:: GDExtensionMethodInfo {
300- use crate :: obj:: EngineBitfield as _;
301-
302- let argument_count = self . arguments . len ( ) as u32 ;
303- let argument_vec = self
304- . arguments
305- . iter ( )
306- . map ( |arg| arg. property_sys ( ) )
307- . collect :: < Vec < _ > > ( )
308- . into_boxed_slice ( ) ;
309-
310- // SAFETY: dereferencing the new box pointer is fine as it is guaranteed to not be null
311- let arguments = unsafe { ( * Box :: into_raw ( argument_vec) ) . as_mut_ptr ( ) } ;
312-
313- let default_argument_count = self . default_arguments . len ( ) as u32 ;
314- let default_argument_vec = self
315- . default_arguments
316- . iter ( )
317- . map ( |arg| arg. var_sys ( ) )
318- . collect :: < Vec < _ > > ( )
319- . into_boxed_slice ( ) ;
320-
321- // SAFETY: dereferencing the new box pointer is fine as it is guaranteed to not be null
322- let default_arguments = unsafe { ( * Box :: into_raw ( default_argument_vec) ) . as_mut_ptr ( ) } ;
323-
324- sys:: GDExtensionMethodInfo {
325- id : self . id ,
326- name : self . method_name . string_sys ( ) ,
327- return_value : self . return_type . property_sys ( ) ,
328- argument_count,
329- arguments,
330- default_argument_count,
331- default_arguments,
332- flags : u32:: try_from ( self . flags . ord ( ) ) . expect ( "flags should be valid" ) ,
333- }
334- }
335- }
0 commit comments