Class: GirFFI::Builders::SignalClosureBuilder
Overview
Implements the creation of a closure class for handling a particular signal. The type will be attached to the appropriate class.
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
#container_class ⇒ Object
36
37
38
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 36
def container_class
@container_class ||= Builder.build_class(container_info)
end
|
#container_info ⇒ Object
40
41
42
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 40
def container_info
@container_info ||= info.container
end
|
#klass ⇒ Object
32
33
34
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 32
def klass
@klass ||= get_or_define_class container_class, @classname, GObject::RubyClosure
end
|
#marshaller_definition ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 18
def marshaller_definition
arg_infos = info.args
container_type_info = ReceiverTypeInfo.new(container_info)
receiver_info = ReceiverArgumentInfo.new(container_type_info)
return_value_info = ReturnValueInfo.new(info.return_type,
info.caller_owns,
info.skip_return?)
MarshallingMethodBuilder.for_signal(receiver_info,
arg_infos,
return_value_info).method_definition
end
|
#setup_class ⇒ Object
9
10
11
12
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 9
def setup_class
setup_constants
klass.class_eval marshaller_definition
end
|
#setup_method(_method) ⇒ Object
14
15
16
|
# File 'lib/gir_ffi/builders/signal_closure_builder.rb', line 14
def setup_method(_method)
nil
end
|