File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11require_relative 'yaml_ast'
22
3+ def has_typedef? ( name )
4+ $all_types. any? { |t | t . type . respond_to? ( :name ) && t . type . name == name }
5+ end
6+
37def to_ffi_name ( name , default = true )
48 case name
59 when nil
@@ -341,14 +345,16 @@ def to_ffi
341345 m . type . to_ffi
342346 elsif m . type . is_a? ( Pointer )
343347 ':pointer'
344- elsif m . type . name && ! m . type . is_a? ( Struct ) && ! m . type . is_a? ( Union )
348+ elsif m . type . name && has_typedef? ( m . type . name )
345349 to_ffi_name ( m . type . name )
346350 elsif m . type . is_a? ( Struct )
347351 s = m . type . name ? $all_structs. find { |st | st . name == m . type . name } : m . type
348352 "(Class::new(#{ FFI_STRUCT } ) { layout #{ gen_layout ( s . to_ffi ) } }.by_value)"
349353 elsif m . type . is_a? ( Union )
350354 u = m . type . name ? $all_unions&.find { |un | un . name == m . type . name } : m . type
351355 "(Class::new(#{ FFI_UNION } ) { layout #{ gen_layout ( u . to_ffi ) } }.by_value)"
356+ elsif m . type . name
357+ to_ffi_name ( m . type . name )
352358 else
353359 raise "unknown type: #{ m . type } "
354360 end
You can’t perform that action at this time.
0 commit comments