class FFI::AutoPointer
def initialize(ptr, proc=nil, &block)
- Note: -
Note: - The safest, and therefore preferred, calling
Note: -
Note: - WARNING: passing a proc _may_ cause your pointer to never be
Returns:
-
(self)
- -
(self)
- -
(self)
- -
(self)
-
Parameters:
-
pointer
(Pointer
) -- -
pointer
(Pointer
) -- -
pointer
(Pointer
) -- -
method
(Method
) -- -
pointer
(Pointer
) --
Overloads:
-
initialize(pointer)
-
initialize(pointer) { |p| ... }
-
initialize(pointer, proc)
-
initialize(pointer, method)
Other tags:
- Yieldparam: p - +pointer+ passed to the block
def initialize(ptr, proc=nil, &block) super(ptr.type_size, ptr) raise TypeError, "Invalid pointer" if ptr.nil? || !ptr.kind_of?(Pointer) \ || ptr.kind_of?(MemoryPointer) || ptr.kind_of?(AutoPointer) @releaser = if proc if not proc.respond_to?(:call) raise RuntimeError.new("proc must be callable") end CallableReleaser.new(ptr, proc) else if not self.class.respond_to?(:release) raise RuntimeError.new("no release method defined") end DefaultReleaser.new(ptr, self.class) end ObjectSpace.define_finalizer(self, @releaser) self end