class RubyVM::RJIT::CPointer::Struct
Note: We’d like to avoid alphabetic method names to avoid a conflict with member methods. to_i
and to_s
are considered an exception.
Public Class Methods
new(addr, sizeof, members)
click to toggle source
@param name [String] @param sizeof [Integer] @param members [Hash{ Symbol => [RubyVM::RJIT::CType::*, Integer, TrueClass] }]
# File ruby_vm/rjit/c_pointer.rb, line 11 def initialize(addr, sizeof, members) @addr = addr @sizeof = sizeof @members = members end
Public Instance Methods
-(struct)
click to toggle source
Pointer
diff
# File ruby_vm/rjit/c_pointer.rb, line 28 def -(struct) raise ArgumentError if self.class != struct.class (@addr - struct.to_i) / @sizeof end
[](member)
click to toggle source
Primitive API that does no automatic dereference TODO: remove this? @param member [Symbol]
# File ruby_vm/rjit/c_pointer.rb, line 36 def [](member) type, offset = @members.fetch(member) type.new(@addr + offset / 8) end
to_i()
click to toggle source
Get a raw address
# File ruby_vm/rjit/c_pointer.rb, line 18 def to_i @addr end
to_s()
click to toggle source
Serialized address for generated code
# File ruby_vm/rjit/c_pointer.rb, line 23 def to_s "0x#{@addr.to_s(16)}" end