Class: Fiddle::Pinned
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/fiddle/ffi_backend.rb, ext/fiddle/pinned.c |
Class Method Summary
- .new(object) ⇒ Pinned constructor
Instance Attribute Summary
- #cleared? ⇒ Boolean readonly
Instance Method Summary
- #clear
-
#new(object) ⇒ Pinned
constructor
Create a new pinned object reference.
- #ref
Constructor Details
.new(object) ⇒ Pinned
# File 'lib/fiddle/ffi_backend.rb', line 580
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.
# 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 595
def cleared? @object.nil? end
Instance Method Details
#clear
[ GitHub ]# File 'lib/fiddle/ffi_backend.rb', line 591
def clear @object = nil end
#ref
[ GitHub ]# File 'lib/fiddle/ffi_backend.rb', line 584
def ref if @object.nil? raise ClearedReferenceError, "`ref` called on a cleared object" end @object end