class FFI::AutoPointer::Releaser

@abstract Base class for {AutoPointer}‘s releasers.

All subclasses of Releaser should define a +#release(ptr)+ method.

A releaser is an object in charge of release an {AutoPointer}.

Public Class Methods

new(ptr, proc) click to toggle source

@param [Pointer] ptr @param [call] proc @return [nil] A new instance of Releaser.

# File lib/ffi/autopointer.rb, line 106
def initialize(ptr, proc)
  @ptr = ptr
  @proc = proc
  @autorelease = true
end

Public Instance Methods

autorelease=(autorelease) click to toggle source

@param [Boolean] autorelease @return [Boolean] autorelease Set autorelease attribute for pointer managed by Releaser.

# File lib/ffi/autopointer.rb, line 126
def autorelease=(autorelease)
  @autorelease = autorelease if @ptr
end
call(*args) click to toggle source

@param args Release pointer if autorelease is set.

# File lib/ffi/autopointer.rb, line 132
def call(*args)
  release(@ptr) if @autorelease && @ptr
end
free() click to toggle source

@return [nil] Free pointer.

# File lib/ffi/autopointer.rb, line 114
def free
  if @ptr
    release(@ptr)
    @autorelease = false
    @ptr = nil
    @proc = nil
  end
end