class Fiddle::Pinned - fiddle: Ruby Standard Library Documentation

# class Fiddle::Pinned

### Public Class Methods

new(object) click to toggle source

    # File fiddle/lib/fiddle/ffi_backend.rb, line 557
    def initialize(object)
      @object = object
    end

Fiddle::Pinned.new(object) → pinned_object click to toggle source

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

    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;
    }

### Public Instance Methods

clear() click to toggle source

Clear the reference to the object this is pinning.

    # File fiddle/lib/fiddle/ffi_backend.rb, line 568
    def clear
      @object = nil
    end

cleared?() click to toggle source

Returns true if the reference has been cleared, otherwise returns false.

    # File fiddle/lib/fiddle/ffi_backend.rb, line 572
    def cleared?
      @object.nil?
    end

ref() click to toggle source

Return the object that this pinned instance references.

    # File fiddle/lib/fiddle/ffi_backend.rb, line 561
    def ref
      if @object.nil?
        raise ClearedReferenceError, "`ref` called on a cleared object"
      end
      @object
    end