Class: GObjectIntrospection::Loader::VirtualFunctionImplementor

Inherits:
Object
  • Object
show all
Defined in:
lib/gobject-introspection/loader.rb

Instance Method Summary collapse

Constructor Details

#initialize(loader_class, gtype_prefix, infos) ⇒ VirtualFunctionImplementor

Returns a new instance of VirtualFunctionImplementor.



831
832
833
834
835
836
837
838
839
840
841
# File 'lib/gobject-introspection/loader.rb', line 831

def initialize(loader_class, gtype_prefix, infos)
  @loader_class = loader_class
  @gtype_prefix = gtype_prefix
  @infos = {}
  prefix = GLib::VIRTUAL_FUNCTION_IMPLEMENTATION_PREFIX
  infos.each do |info|
    name = info.name
    @infos[:"#{prefix}#{name}"] = info
    @infos[:"#{prefix}#{gtype_prefix}_#{name}"] = info
  end
end

Instance Method Details

#implement(implementor_gtype, name) ⇒ Object



843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
# File 'lib/gobject-introspection/loader.rb', line 843

def implement(implementor_gtype, name)
  info = @infos[name]
  return false if info.nil?
  container = info.container
  vtable_gtype = container.gtype
  if container.respond_to?(:class_struct)
    struct = container.class_struct
  else
    return false unless implementor_gtype.type_is_a?(vtable_gtype)
    struct = container.iface_struct
  end
  field = struct.find_field(info.name)
  @loader_class.implement_virtual_function(field,
                                           implementor_gtype,
                                           vtable_gtype,
                                           name.to_s)
  true
end