Class: GObjectIntrospection::Loader::VirtualFunctionImplementor
- Inherits:
-
Object
- Object
- GObjectIntrospection::Loader::VirtualFunctionImplementor
- Defined in:
- lib/gobject-introspection/loader.rb
Instance Method Summary collapse
- #implement(implementor_gtype, name) ⇒ Object
-
#initialize(loader_class, gtype_prefix, infos) ⇒ VirtualFunctionImplementor
constructor
A new instance of VirtualFunctionImplementor.
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 |