Implements the creation of a signal module for handling a particular signal. The type will be attached to the appropriate class.
# File lib/gir_ffi/builders/signal_builder.rb, line 82 def container_class @container_class ||= Builder.build_class(container_info) end
# File lib/gir_ffi/builders/signal_builder.rb, line 86 def container_info @container_info ||= info.container end
# File lib/gir_ffi/builders/signal_builder.rb, line 59 def instantiate_class @klass ||= get_or_define_module container_class, @classname unless already_set_up @klass.extend SignalBase setup_constants @klass.class_eval mapping_method_definition end @klass end
# File lib/gir_ffi/builders/signal_builder.rb, line 69 def mapping_method_definition arg_infos = info.args container_type_info = SignalReceiverTypeInfo.new(container_info) arg_infos.unshift SignalReceiverArgumentInfo.new(container_type_info) user_data_type_info = UserDataTypeInfo.new user_data_argument_info = UserDataArgumentInfo.new(user_data_type_info, arg_infos.length) arg_infos.push user_data_argument_info MappingMethodBuilder.new(arg_infos, info.return_type).method_definition end