class GirFFI::Builders::StructBuilder

Implements the creation of a class representing a Struct.

Public Class Methods

new(info, superclass: nil) click to toggle source
Calls superclass method GirFFI::BaseTypeBuilder::new
# File lib/gir_ffi/builders/struct_builder.rb, line 13
def initialize(info, superclass: nil)
  @superclass = superclass
  super info
end

Public Instance Methods

superclass() click to toggle 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

gtype_struct_parent() click to toggle 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
klass() click to toggle source
# File lib/gir_ffi/builders/struct_builder.rb, line 34
def klass
  @klass ||= get_or_define_class(namespace_module, @classname) { superclass }
end
layout_superclass() click to toggle source
# File lib/gir_ffi/builders/struct_builder.rb, line 30
def layout_superclass
  GirFFI::Struct
end
parent_field_type() click to toggle source
# File lib/gir_ffi/builders/struct_builder.rb, line 42
def parent_field_type
  fields.first&.field_type
end
parent_info() click to toggle source
# File lib/gir_ffi/builders/struct_builder.rb, line 38
def parent_info
  @parent_info ||= parent_field_type&.interface
end