class GirFFI::Builders::SignalBuilder

Implements the creation of a signal module for handling a particular signal. The type will be attached to the appropriate class.

Public Instance Methods

container_class() click to toggle source
# File lib/gir_ffi/builders/signal_builder.rb, line 82
def container_class
  @container_class ||= Builder.build_class(container_info)
end
container_info() click to toggle source
# File lib/gir_ffi/builders/signal_builder.rb, line 86
def container_info
  @container_info ||= info.container
end
instantiate_class() click to toggle source
# 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
mapping_method_definition() click to toggle source
# 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