class GirFFI::Builders::StructBuilder
Implements the creation of a class representing a Struct
.
Public Class Methods
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 13 def initialize(info, superclass: nil) @superclass = superclass super info end
Calls superclass method
GirFFI::BaseTypeBuilder::new
Public Instance Methods
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 18 def superclass @superclass ||= if info.gtype_struct? gtype_struct_parent elsif GObject.type_fundamental(info.gtype) == GObject::TYPE_BOXED BoxedBase else StructBase end end
Private Instance Methods
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 46 def gtype_struct_parent full_name = info.full_name if full_name == "GObject::InitiallyUnownedClass" GObject::ObjectClass else raise "Unable to calculate parent class for #{full_name}" unless parent_info Builder.build_class parent_info end end
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 34 def klass @klass ||= get_or_define_class(namespace_module, @classname) { superclass } end
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 30 def layout_superclass GirFFI::Struct end
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 42 def parent_field_type fields.first&.field_type end
Source
# File lib/gir_ffi/builders/struct_builder.rb, line 38 def parent_info @parent_info ||= parent_field_type&.interface end