class FFI::Pointer
def self.size
def self.size SIZE end
def read_array_of_int(length)
def read_array_of_int(length) get_array_of_int32(0, length) end
def read_array_of_long(length)
def read_array_of_long(length) get_array_of_long(0, length) end
def read_array_of_pointer(length)
def read_array_of_pointer(length) read_array_of_type(:pointer, :read_pointer, length) end
def read_array_of_type(type, reader, length)
def read_array_of_type(type, reader, length) ary = [] size = FFI.type_size(type) tmp = self length.times { |j| ary << tmp.send(reader) tmp += size unless j == length-1 # avoid OOB } ary end
def read_float
def read_float get_float32(0) end
def read_int
def read_int get_int32(0) end
def read_long
def read_long get_long(0) end
def read_long_long
def read_long_long get_int64(0) end
def read_pointer
def read_pointer get_pointer(0) end
def read_string(len=nil)
def read_string(len=nil) if len get_bytes(0, len) else get_string(0) end end
def read_string_length(len)
def read_string_length(len) get_bytes(0, len) end
def read_string_to_null
def read_string_to_null get_string(0) end
def write_array_of_int(ary)
def write_array_of_int(ary) put_array_of_int32(0, ary) end
def write_array_of_long(ary)
def write_array_of_long(ary) put_array_of_long(0, ary) end
def write_array_of_pointer(ary)
def write_array_of_pointer(ary) write_array_of_type(:pointer, :write_pointer, ary) end
def write_array_of_type(type, writer, ary)
def write_array_of_type(type, writer, ary) size = FFI.type_size(type) tmp = self ary.each_with_index {|i, j| tmp.send(writer, i) tmp += size unless j == ary.length-1 # avoid OOB } self end
def write_float(obj)
def write_float(obj) put_float32(0, obj) end
def write_int(obj)
def write_int(obj) put_int32(0, obj) end
def write_long(obj)
def write_long(obj) put_long(0, obj) end
def write_long_long(obj)
def write_long_long(obj) put_int64(0, obj) end
def write_pointer(ptr)
def write_pointer(ptr) put_pointer(0, ptr) end
def write_string(str, len=nil)
def write_string(str, len=nil) len = str.size unless len # Write the string data without NUL termination put_bytes(0, str, 0, len) end
def write_string_length(str, len)
def write_string_length(str, len) put_bytes(0, str, 0, len) end