Class: GirFFI::Builders::CallbackBuilder

Inherits:
GirFFI::BaseTypeBuilder show all
Defined in:
lib/gir_ffi/builders/callback_builder.rb

Overview

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.

Instance Attribute Summary

Attributes inherited from GirFFI::BaseTypeBuilder

#info

Instance Method Summary collapse

Methods inherited from GirFFI::BaseTypeBuilder

#build_class, #initialize

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

#argument_ffi_typesObject



41
42
43
# File 'lib/gir_ffi/builders/callback_builder.rb', line 41

def argument_ffi_types
  @argument_ffi_types ||= @info.argument_ffi_types
end

#callback_symObject



37
38
39
# File 'lib/gir_ffi/builders/callback_builder.rb', line 37

def callback_sym
  @classname.to_sym
end

#instantiate_classObject



11
12
13
# File 'lib/gir_ffi/builders/callback_builder.rb', line 11

def instantiate_class
  setup_class unless already_set_up
end

#klassObject



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

def klass
  @klass ||= get_or_define_class namespace_module, @classname, CallbackBase
end

#mapping_method_definitionObject



31
32
33
34
35
# File 'lib/gir_ffi/builders/callback_builder.rb', line 31

def mapping_method_definition
  return_value_info = ReturnValueInfo.new info.return_type
  MappingMethodBuilder.for_callback(info.args,
                                    return_value_info).method_definition
end

#return_ffi_typeObject



45
46
47
# File 'lib/gir_ffi/builders/callback_builder.rb', line 45

def return_ffi_type
  @return_ffi_type ||= @info.return_ffi_type
end

#setup_callbackObject



21
22
23
24
25
# File 'lib/gir_ffi/builders/callback_builder.rb', line 21

def setup_callback
  optionally_define_constant klass, :Callback do
    lib.callback callback_sym, argument_ffi_types, return_ffi_type
  end
end

#setup_classObject



15
16
17
18
19
# File 'lib/gir_ffi/builders/callback_builder.rb', line 15

def setup_class
  setup_callback
  setup_constants
  klass.class_eval mapping_method_definition
end