Class: Fiddley::MemoryPointer

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/fiddley/memory_pointer.rb

Constant Summary

Constants included from Utils

Utils::SIZET_FORMAT, Utils::SIZET_TYPE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

str2value, type2offset_size, type2size, type2str, type2type, value2str

Constructor Details

#initialize(type, num = 1, clear = true) ⇒ MemoryPointer

Returns a new instance of MemoryPointer.



12
13
14
15
16
17
18
19
20
# File 'lib/fiddley/memory_pointer.rb', line 12

def initialize(type, num = 1, clear = true)
  if num.is_a?(Fiddle::Pointer)
    @ptr = num
    @size = @ptr.size
  else
    @size = type2size(type) * num
    @ptr = Fiddle::Pointer.malloc(@size)
  end
end

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



22
23
24
# File 'lib/fiddley/memory_pointer.rb', line 22

def size
  @size
end

Instance Method Details

#get_bytes(offset, len) ⇒ Object



106
107
108
# File 'lib/fiddley/memory_pointer.rb', line 106

def get_bytes(offset, len)
  @ptr[offset, len]
end

#get_string(offset, len = nil) ⇒ Object



126
127
128
# File 'lib/fiddley/memory_pointer.rb', line 126

def get_string(offset, len = nil)
  @ptr[offset, len ? len : @size - offset]
end

#put_bytes(offset, str, idx = 0, len = str.bytesize - idx) ⇒ Object



98
99
100
# File 'lib/fiddley/memory_pointer.rb', line 98

def put_bytes(offset, str, idx = 0, len = str.bytesize - idx)
  @ptr[offset, len] = str[idx, len]
end

#put_string(offset, str) ⇒ Object



114
115
116
# File 'lib/fiddley/memory_pointer.rb', line 114

def put_string(offset, str)
  @ptr[offset, str.bytesize] = str
end

#read_bytes(len) ⇒ Object



110
111
112
# File 'lib/fiddley/memory_pointer.rb', line 110

def read_bytes(len)
  get_bytes(0, len)
end

#read_string(len = nil) ⇒ Object



130
131
132
# File 'lib/fiddley/memory_pointer.rb', line 130

def read_string(len = nil)
  get_string(0, len)
end

#to_ptrObject



24
25
26
# File 'lib/fiddley/memory_pointer.rb', line 24

def to_ptr
  @ptr
end

#write_bytes(str, idx = 0, len = nil) ⇒ Object



102
103
104
# File 'lib/fiddley/memory_pointer.rb', line 102

def write_bytes(str, idx = 0, len = nil)
  put_bytes(0, str, idx, len)
end

#write_string(str, len = nil) ⇒ Object



118
119
120
# File 'lib/fiddley/memory_pointer.rb', line 118

def write_string(str, len = nil)
  put_string(0, len ? str[0, len] : str)
end

#write_string_length(str, len) ⇒ Object



122
123
124
# File 'lib/fiddley/memory_pointer.rb', line 122

def write_string_length(str, len)
  put_string(0, str[0, len])
end