Class: GirFFI::Builders::ObjectBuilder

Inherits:
RegisteredTypeBuilder show all
Includes:
WithLayout
Defined in:
lib/gir_ffi/builders/object_builder.rb

Overview

Implements the creation of a class representing a GObject Object.

Direct Known Subclasses

UnintrospectableBuilder, UserDefinedBuilder

Defined Under Namespace

Classes: ObjectBaseBuilder

Instance Attribute Summary

Attributes inherited from GirFFI::BaseTypeBuilder

#info

Instance Method Summary collapse

Methods included from WithLayout

#layout_specification

Methods inherited from RegisteredTypeBuilder

#setup_instance_method, #setup_method, #target_gtype

Methods inherited from GirFFI::BaseTypeBuilder

#build_class, #initialize, #instantiate_class

Methods included from GirFFI::BuilderHelper

#get_or_define_class, #get_or_define_module, #optionally_define_constant

Constructor Details

This class inherits a constructor from GirFFI::BaseTypeBuilder

Instance Method Details

#ancestor_infosObject



35
36
37
# File 'lib/gir_ffi/builders/object_builder.rb', line 35

def ancestor_infos
  @ancestor_infos ||= [info] + info.interfaces + parent_ancestor_infos
end

#eligible_fieldsObject



39
40
41
42
43
44
45
46
# File 'lib/gir_ffi/builders/object_builder.rb', line 39

def eligible_fields
  info.fields.reject do |finfo|
    fname = finfo.name
    fname == 'parent_instance' ||
      info.find_instance_method("get_#{fname}") ||
      info.find_property(fname)
  end
end

#eligible_propertiesObject



48
49
50
51
52
# File 'lib/gir_ffi/builders/object_builder.rb', line 48

def eligible_properties
  info.properties.reject do |pinfo|
    info.find_instance_method("get_#{pinfo.name}")
  end
end

#find_property(property_name) ⇒ Object



27
28
29
# File 'lib/gir_ffi/builders/object_builder.rb', line 27

def find_property(property_name)
  seek_in_ancestor_infos { |info| info.find_property property_name }
end

#find_signal(signal_name) ⇒ Object



23
24
25
# File 'lib/gir_ffi/builders/object_builder.rb', line 23

def find_signal(signal_name)
  seek_in_ancestor_infos { |info| info.find_signal signal_name }
end

#object_class_structObject



31
32
33
# File 'lib/gir_ffi/builders/object_builder.rb', line 31

def object_class_struct
  @object_class_struct ||= Builder.build_class object_class_struct_info
end