123456789_123456789_123456789_123456789_123456789_

Class: Fiddle::Pinned

Relationships & Source Files
Inherits: Object
Defined in: lib/fiddle/ffi_backend.rb,
ext/fiddle/pinned.c

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(object) ⇒ Pinned

[ GitHub ]

  
# File 'lib/fiddle/ffi_backend.rb', line 557

def initialize(object)
  @object = object
end

#new(object) ⇒ Pinned

Create a new pinned object reference. The Pinned instance will prevent the GC from moving object.

[ GitHub ]

  
# File 'ext/fiddle/pinned.c', line 52

static VALUE
initialize(VALUE self, VALUE ref)
{
    struct pinned_data *data;
    TypedData_Get_Struct(self, struct pinned_data, &pinned_data_type, data);
    RB_OBJ_WRITE(self, &data->ptr, ref);
    return self;
}

Instance Attribute Details

#cleared?Boolean (readonly)

[ GitHub ]

  
# File 'lib/fiddle/ffi_backend.rb', line 572

def cleared?
  @object.nil?
end

Instance Method Details

#clear

[ GitHub ]

  
# File 'lib/fiddle/ffi_backend.rb', line 568

def clear
  @object = nil
end

#ref

[ GitHub ]

  
# File 'lib/fiddle/ffi_backend.rb', line 561

def ref
  if @object.nil?
    raise ClearedReferenceError, "`ref` called on a cleared object"
  end
  @object
end