Class: FFI::AutoPointer::Releaser Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/ffi/autopointer.rb

Overview

This class is abstract.

Base class for FFI::AutoPointer's releasers.

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

A releaser is an object in charge of release an FFI::AutoPointer.

Direct Known Subclasses

CallableReleaser, DefaultReleaser

Instance Method Summary (collapse)

Constructor Details

- (nil) initialize(ptr, proc)

A new instance of Releaser.

Parameters:



106
107
108
109
110
# File 'lib/ffi/autopointer.rb', line 106

def initialize(ptr, proc)
  @ptr = ptr
  @proc = proc
  @autorelease = true
end

Instance Method Details

- (Boolean) autorelease=(autorelease)

Set autorelease attribute for pointer managed by Releaser.

Parameters:

  • autorelease (Boolean)

Returns:

  • (Boolean)

    autorelease



126
127
128
# File 'lib/ffi/autopointer.rb', line 126

def autorelease=(autorelease)
  @autorelease = autorelease if @ptr
end

- (Object) call(*args)

Release pointer if autorelease is set.

Parameters:

  • args


132
133
134
# File 'lib/ffi/autopointer.rb', line 132

def call(*args)
  release(@ptr) if @autorelease && @ptr
end

- (nil) free

Free pointer.

Returns:

  • (nil)


114
115
116
117
118
119
120
121
# File 'lib/ffi/autopointer.rb', line 114

def free
  if @ptr
    release(@ptr)
    @autorelease = false
    @ptr = nil
    @proc = nil
  end
end