Class: Fiddley::MemoryPointer

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

Constant Summary

Constants included from Utils

Utils::LONG_SIZE, Utils::POINTER_SIZE, Utils::SIZET_FORMAT, Utils::SIZET_TYPE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

str2value, type2size, type2str, value2str

Constructor Details

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

Returns a new instance of MemoryPointer.



12
13
14
15
# File 'lib/fiddley/memory_pointer.rb', line 12

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

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



17
18
19
# File 'lib/fiddley/memory_pointer.rb', line 17

def size
  @size
end

Instance Method Details

#get_bytes(offset, len) ⇒ Object



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

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

#get_string(offset, len = nil) ⇒ Object



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

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

#put_bytes(offset, str, len = nil) ⇒ Object



93
94
95
# File 'lib/fiddley/memory_pointer.rb', line 93

def put_bytes(offset, str, len = nil)
  @ptr[offset, len ? len : str.bytesize] = len ? str[0, len] : str
end

#put_string(offset, str) ⇒ Object



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

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

#read_bytes(len) ⇒ Object



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

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

#read_string(len = nil) ⇒ Object



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

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

#to_ptrObject



19
20
21
# File 'lib/fiddley/memory_pointer.rb', line 19

def to_ptr
  @ptr
end

#write_bytes(str, len = nil) ⇒ Object



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

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

#write_string(str, len = nil) ⇒ Object



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

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

#write_string_length(str, len) ⇒ Object



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

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