class GirFFI::Builders::CallbackBuilder

Implements the creation of a callback type. The type will be attached to the appropriate namespace module, and will be defined as a callback for FFI.

Public Instance Methods

argument_ffi_types() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 23
def argument_ffi_types
  @argument_ffi_types ||= @info.argument_ffi_types
end
mapping_method_definition() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 19
def mapping_method_definition
  MappingMethodBuilder.for_callback(info).method_definition
end
return_ffi_type() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 27
def return_ffi_type
  @return_ffi_type ||= @info.return_ffi_type
end
setup_class() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 13
def setup_class
  setup_callback
  setup_constants
  klass.class_eval mapping_method_definition, __FILE__, __LINE__
end

Private Instance Methods

callback_sym() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 55
def callback_sym
  @classname.to_sym
end
container_module() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 43
def container_module
  @container_module ||=
    if @info.container
      type_info = @info.container
      field_info = type_info.container
      container_class_info = field_info.container
      namespace_module.const_get container_class_info.safe_name
    else
      namespace_module
    end
end
klass() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 39
def klass
  @klass ||= get_or_define_class container_module, @classname, CallbackBase
end
setup_callback() click to toggle source
# File lib/gir_ffi/builders/callback_builder.rb, line 33
def setup_callback
  optionally_define_constant klass, :Callback do
    lib.callback callback_sym, argument_ffi_types, return_ffi_type
  end
end