Class: GirFFI::Builders::CallbackBuilder
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
#info
Instance Method Summary
collapse
#build_class, #initialize, #instantiate_class
#get_or_define_class, #get_or_define_module, #optionally_define_constant
Instance Method Details
#argument_ffi_types ⇒ Object
39
40
41
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 39
def argument_ffi_types
@argument_ffi_types ||= @info.argument_ffi_types
end
|
#callback_sym ⇒ Object
35
36
37
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 35
def callback_sym
@classname.to_sym
end
|
#klass ⇒ Object
23
24
25
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 23
def klass
@klass ||= get_or_define_class namespace_module, @classname, CallbackBase
end
|
#mapping_method_definition ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 27
def mapping_method_definition
return_value_info = ReturnValueInfo.new(info.return_type,
info.caller_owns,
info.skip_return?)
MappingMethodBuilder.for_callback(info.args,
return_value_info).method_definition
end
|
#return_ffi_type ⇒ Object
43
44
45
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 43
def return_ffi_type
@return_ffi_type ||= @info.return_ffi_type
end
|
#setup_callback ⇒ Object
17
18
19
20
21
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 17
def setup_callback
optionally_define_constant klass, :Callback do
lib.callback callback_sym, argument_ffi_types, return_ffi_type
end
end
|
#setup_class ⇒ Object
11
12
13
14
15
|
# File 'lib/gir_ffi/builders/callback_builder.rb', line 11
def setup_class
setup_callback
setup_constants
klass.class_eval mapping_method_definition
end
|