class GirFFI::ClassBase

Base class for all generated classes. Contains code for dealing with the generated Struct classes.

Public Class Methods

_builder() click to toggle source

@deprecated Compatibility function. Remove in version 0.5.0.

# File lib/gir_ffi/class_base.rb, line 49
def _builder
  gir_ffi_builder
end
_setup_instance_method(name) click to toggle source

@deprecated Compatibility function. Remove in version 0.5.0.

# File lib/gir_ffi/class_base.rb, line 67
def _setup_instance_method name
  setup_instance_method name
end
_setup_method(name) click to toggle source

@deprecated Compatibility function. Remove in version 0.5.0.

# File lib/gir_ffi/class_base.rb, line 58
def _setup_method name
  setup_method name
end
allocate() click to toggle source
# File lib/gir_ffi/class_base.rb, line 93
def allocate
  obj = _real_new
  obj.instance_variable_set :@struct, self::Struct.new
  obj
end
direct_wrap(ptr) click to toggle source

Wrap the passed pointer in an instance of the current class. Will not do any casting to subtypes.

# File lib/gir_ffi/class_base.rb, line 86
def direct_wrap ptr
  return nil if ptr.nil? or ptr.null?
  obj = _real_new
  obj.instance_variable_set :@struct, self::Struct.new(ptr.to_ptr)
  obj
end
ffi_structure() click to toggle source

@deprecated Compatibility function. Remove in version 0.5.0.

# File lib/gir_ffi/class_base.rb, line 40
def ffi_structure
  self::Struct
end
from(val) click to toggle source

Pass-through casting method. This may become a type checking method. It is overridden by GValue to implement wrapping of plain Ruby objects.

# File lib/gir_ffi/class_base.rb, line 102
def from val
  val
end
gir_ffi_builder() click to toggle source
# File lib/gir_ffi/class_base.rb, line 53
def gir_ffi_builder
  self.const_get :GIR_FFI_BUILDER
end
gir_info() click to toggle source
# File lib/gir_ffi/class_base.rb, line 44
def gir_info
  self.const_get :GIR_INFO
end
setup_and_call(method, *arguments, &block) click to toggle source
# File lib/gir_ffi/class_base.rb, line 25
def self.setup_and_call method, *arguments, &block
  result = self.ancestors.any? do |klass|
    klass.respond_to?(:_setup_method) &&
      klass._setup_method(method.to_s)
  end

  unless result
    raise RuntimeError, "Unable to set up method #{method} in #{self}"
  end

  self.send method, *arguments, &block
end
setup_instance_method(name) click to toggle source
# File lib/gir_ffi/class_base.rb, line 71
def setup_instance_method name
  _builder.setup_instance_method name
end
setup_method(name) click to toggle source
# File lib/gir_ffi/class_base.rb, line 62
def setup_method name
  _builder.setup_method name
end
wrap(ptr) click to toggle source

Wrap the passed pointer in an instance of the current class, or a descendant type if applicable.

# File lib/gir_ffi/class_base.rb, line 80
def wrap ptr
  direct_wrap ptr
end

Public Instance Methods

setup_and_call(method, *arguments, &block) click to toggle source
# File lib/gir_ffi/class_base.rb, line 12
def setup_and_call method, *arguments, &block
  result = self.class.ancestors.any? do |klass|
    klass.respond_to?(:_setup_instance_method) &&
      klass._setup_instance_method(method.to_s)
  end

  unless result
    raise RuntimeError, "Unable to set up instance method #{method} in #{self}"
  end

  self.send method, *arguments, &block
end