Class: NativeMallocBuffer
- Inherits:
-
Object
- Object
- NativeMallocBuffer
- Includes:
- NativeBuffer
- Defined in:
- lib/oinky/nbuffer.rb,
lib/oinky/nbuffer.rb
Overview
This is a specific implementation of NativeBuffer. It uses malloc/free.
Instance Attribute Summary collapse
-
#length ⇒ Object
readonly
Returns the value of attribute length.
-
#ptr ⇒ Object
readonly
Returns the value of attribute ptr.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(v = 0) ⇒ NativeMallocBuffer
constructor
A new instance of NativeMallocBuffer.
Methods included from NativeBuffer
#<=>, #clone, #each_byte, #each_char, #inspect, #rb_str
Constructor Details
#initialize(v = 0) ⇒ NativeMallocBuffer
Returns a new instance of NativeMallocBuffer.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/oinky/nbuffer.rb', line 120 def initialize(v = 0) if (v.is_a? Fixnum) @ptr = FFI::MemoryPointer.new :pointer size = v if size > 0 @ptr = LibC.malloc(size) @length = size else @ptr = nil @length = 0 end elsif v.is_a? String size = v.length @ptr = LibC.malloc(size) LibC.memcpy(@ptr, v, size) @length = size elsif v.is_a? NativeBuffer size = v.length @ptr = LibC.malloc(size) LibC.memcpy(@ptr, v.ptr, size) @length = size else raise OinkyException.new("Invalid initialize parameter to NativeMallocBuffer.new") end ObjectSpace.define_finalizer( self, self.class.finalize(@ptr) ) end |
Instance Attribute Details
#length ⇒ Object (readonly)
Returns the value of attribute length.
118 119 120 |
# File 'lib/oinky/nbuffer.rb', line 118 def length @length end |
#ptr ⇒ Object (readonly)
Returns the value of attribute ptr.
118 119 120 |
# File 'lib/oinky/nbuffer.rb', line 118 def ptr @ptr end |
Class Method Details
.finalize(ptr) ⇒ Object
148 149 150 |
# File 'lib/oinky/nbuffer.rb', line 148 def self.finalize(ptr) proc { LibC.free(ptr) } end |