class FFI::Pointer

def self.size

Returns:
  • (Numeric) -
def self.size
  SIZE
end

def read_array_of_type(type, reader, length)

Returns:
  • (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)

Returns:
  • (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)

Returns:
  • (String) -

Parameters:
  • len (Numeric) -- length of string to return
def read_string_length(len)
  get_bytes(0, len)
end

def read_string_to_null

Returns:
  • (String) -
def read_string_to_null
  get_string(0)
end

def write_array_of_type(type, writer, ary)

Returns:
  • (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)

Returns:
  • (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)

Returns:
  • (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