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}.
Attributes
Public Class Methods
@param [Pointer] ptr @param [#call] proc @return [nil] A new instance of Releaser
.
# File lib/ffi/autopointer.rb, line 123 def initialize(ptr, proc) @ptr = ptr @proc = proc @autorelease = true end
Public Instance Methods
@param args Release pointer if autorelease
is set.
# File lib/ffi/autopointer.rb, line 142 def call(*args) release(@ptr) if @autorelease && @ptr end
@return [nil] Free pointer.
# File lib/ffi/autopointer.rb, line 131 def free if @ptr release(@ptr) @autorelease = false @ptr = nil @proc = nil end end
Release ptr
by using Proc or Method defined at ptr
{AutoPointer#initialize initialization}.
@param [Pointer] ptr @return [nil]
# File lib/ffi/autopointer.rb, line 151 def release(ptr) @proc.call(ptr) end