Parent

FFI::Pointer

Constants

SIZE

Pointer size

Public Class Methods

size() click to toggle source

Return the size of a pointer on the current platform, in bytes @return [Numeric]

# File lib/ffi/pointer.rb, line 30
def self.size
  SIZE
end

Public Instance Methods

read_array_of_type(type, reader, length) click to toggle source

@param [Type] type type of data to read from pointer's contents @param [Symbol] reader method to send to self to read type @param [Numeric] length @return [Array] Read an array of type of length length. @example

ptr.read_array_of_type(TYPE_UINT8, :get_uint8, 4) # -> [1, 2, 3, 4]
# File lib/ffi/pointer.rb, line 94
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
read_string(len=nil) click to toggle source

@param [nil,Numeric] len length of string to return @return [String] Read pointer's contents as a string, or the first len bytes of the equivalent string if len is not nil.

# File lib/ffi/pointer.rb, line 38
def read_string(len=nil)
  if len
    get_bytes(0, len)
  else
    get_string(0)
  end
end
read_string_length(len) click to toggle source

@param [Numeric] len length of string to return @return [String] Read the first len bytes of pointer's contents as a string.

Same as:

ptr.read_string(len)  # with len not nil
# File lib/ffi/pointer.rb, line 52
def read_string_length(len)
  get_bytes(0, len)
end
read_string_to_null() click to toggle source

@return [String] Read pointer's contents as a string.

Same as:

ptr.read_string  # with no len
# File lib/ffi/pointer.rb, line 61
def read_string_to_null
  get_string(0)
end
write_array_of_type(type, writer, ary) click to toggle source

@param [Type] type type of data to write to pointer's contents @param [Symbol] writer method to send to self to write type @param [Array] ary @return [self] Write ary in pointer's contents as type. @example

ptr.write_array_of_type(TYPE_UINT8, :put_uint8, [1, 2, 3 ,4])
# File lib/ffi/pointer.rb, line 112
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
write_string(str, len=nil) click to toggle source

@param [String] str string to write @param [Numeric] len length of string to return @return [self] Write str in pointer's contents, or first len bytes if len is not nil.

# File lib/ffi/pointer.rb, line 81
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
write_string_length(str, len) click to toggle source

@param [String] str string to write @param [Numeric] len length of string to return @return [self] Write len first bytes of str in pointer's contents.

Same as:

ptr.write_string(str, len)   # with len not nil
# File lib/ffi/pointer.rb, line 72
def write_string_length(str, len)
  put_bytes(0, str, 0, len)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.