class GirFFI::Builders::VFuncBuilder

Implements the creation of a class representing the implementation of a vfunc. This class will be able to turn a proc into an FFI::Function that can serve as such an implementation in C. The class will be namespaced inside class defining the vfunc.

Public Instance Methods

argument_ffi_types() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 44
def argument_ffi_types
  @argument_ffi_types ||= info.argument_ffi_types
    .unshift(receiver_type_info.to_callback_ffi_type)
end
container_class() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 36
def container_class
  @container_class ||= Builder.build_class(container_info)
end
container_info() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 40
def container_info
  @container_info ||= info.container
end
klass() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 22
def klass
  @klass ||= get_or_define_class container_class, @classname, CallbackBase
end
mapping_method_definition() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 26
def mapping_method_definition
  receiver_info = ReceiverArgumentInfo.new receiver_type_info

  MappingMethodBuilder.for_vfunc(receiver_info, info).method_definition
end
receiver_type_info() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 32
def receiver_type_info
  ReceiverTypeInfo.new(container_info)
end
return_ffi_type() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 49
def return_ffi_type
  @return_ffi_type ||= info.return_ffi_type
end
setup_class() click to toggle source
# File lib/gir_ffi/builders/vfunc_builder.rb, line 17
def setup_class
  setup_constants
  klass.class_eval mapping_method_definition, __FILE__, __LINE__
end