Class: FFI::AutoPointer::Releaser Abstract
- Inherits:
-
Object
- Object
- FFI::AutoPointer::Releaser
- 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.
Instance Attribute Summary collapse
-
#autorelease ⇒ Object
Returns the value of attribute autorelease.
Instance Method Summary collapse
-
#call(*args) ⇒ Object
Release pointer if
autorelease
is set. -
#free ⇒ nil
Free pointer.
-
#initialize(ptr, proc) ⇒ nil
constructor
A new instance of Releaser.
-
#release(ptr) ⇒ nil
Release
ptr
by using Proc or Method defined atptr
initialization.
Constructor Details
#initialize(ptr, proc) ⇒ nil
A new instance of Releaser.
131 132 133 134 135 |
# File 'lib/ffi/autopointer.rb', line 131 def initialize(ptr, proc) @ptr = ptr @proc = proc @autorelease = true end |
Instance Attribute Details
#autorelease ⇒ Object
Returns the value of attribute autorelease.
125 126 127 |
# File 'lib/ffi/autopointer.rb', line 125 def autorelease @autorelease end |
Instance Method Details
#call(*args) ⇒ Object
Release pointer if autorelease
is set.
150 151 152 |
# File 'lib/ffi/autopointer.rb', line 150 def call(*args) release(@ptr) if @autorelease && @ptr end |
#free ⇒ nil
Free pointer.
139 140 141 142 143 144 145 146 |
# File 'lib/ffi/autopointer.rb', line 139 def free if @ptr release(@ptr) @autorelease = false @ptr = nil @proc = nil end end |
#release(ptr) ⇒ nil
Release ptr
by using Proc or Method defined at ptr
initialization.
159 160 161 |
# File 'lib/ffi/autopointer.rb', line 159 def release(ptr) @proc.call(ptr) end |