class FFI::Pointer
def self.size
-
(Numeric)
-
def self.size SIZE end
def read_array_of_type(type, reader, length)
-
(Array)
-
Parameters:
-
length
(Numeric
) -- -
reader
(Symbol
) -- method to send to +self+ to read +type+ -
type
(Type
) -- type of data to read from pointer's contents
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_string(len=nil)
-
(String)
-
Parameters:
-
len
(nil, Numeric
) -- length of string to return
def read_string(len=nil) if len get_bytes(0, len) else get_string(0) end end
def read_string_length(len)
-
(String)
-
Parameters:
-
len
(Numeric
) -- length of string to return
def read_string_length(len) get_bytes(0, len) end
def read_string_to_null
-
(String)
-
def read_string_to_null get_string(0) end
def write_array_of_type(type, writer, ary)
-
(self)
-
Parameters:
-
ary
(Array
) -- -
writer
(Symbol
) -- method to send to +self+ to write +type+ -
type
(Type
) -- type of data to write to pointer's contents
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_string(str, len=nil)
-
(self)
-
Parameters:
-
len
(Numeric
) -- length of string to return -
str
(String
) -- string to write
def write_string(str, len=nil) len = str.bytesize unless len # Write the string data without NUL termination put_bytes(0, str, 0, len) end
def write_string_length(str, len)
-
(self)
-
Parameters:
-
len
(Numeric
) -- length of string to return -
str
(String
) -- string to write
def write_string_length(str, len) put_bytes(0, str, 0, len) end