class RubyVM::RJIT::CPointer::Pointer
Attributes
              type[R]
            
            Public Class Methods
                              new(addr, type)
                              click to toggle source
                            
                            @param addr [Integer] @param type [Class] RubyVM::RJIT::CType::*
# File ruby_vm/rjit/c_pointer.rb, line 280 def initialize(addr, type) @addr = addr @type = type end
Private Class Methods
                              define(block)
                              click to toggle source
                            
                            
                                  Calls superclass method
                                  
                              
                              # File ruby_vm/rjit/c_pointer.rb, line 321 def self.define(block) Class.new(self) do define_method(:initialize) do |addr| super(addr, block.call) end # Type-level []=: Used by struct fields # @param addr [Integer] # @param value [Integer, RubyVM::RJIT::CPointer::Struct] an address itself, or an object that return an address with to_i define_singleton_method(:[]=) do |addr, value| value = value.to_i Fiddle::Pointer.new(addr)[0, Fiddle::SIZEOF_VOIDP] = [value].pack(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP]) end end end
Public Instance Methods
                              *()
                              click to toggle source
                            
                            Dereference
# File ruby_vm/rjit/c_pointer.rb, line 292 def * return nil if dest_addr == 0 @type.new(dest_addr) end
                              +(index)
                              click to toggle source
                            
                            Move addr to addess this pointer like an array
# File ruby_vm/rjit/c_pointer.rb, line 286 def +(index) raise ArgumentError unless index.is_a?(Integer) Pointer.new(@addr + index * Fiddle::SIZEOF_VOIDP, @type) end
                              [](index)
                              click to toggle source
                            
                            Array access
# File ruby_vm/rjit/c_pointer.rb, line 298 def [](index) (self + index).* end
                              []=(index, value)
                              click to toggle source
                            
                            Array set @param index [Integer] @param value [Integer, RubyVM::RJIT::CPointer::Struct] an address itself or an object that return an address with to_i
# File ruby_vm/rjit/c_pointer.rb, line 305 def []=(index, value) Fiddle::Pointer.new(@addr + index * Fiddle::SIZEOF_VOIDP)[0, Fiddle::SIZEOF_VOIDP] = [value.to_i].pack(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP]) end
                              to_i()
                              click to toggle source
                            
                            Get a raw address
# File ruby_vm/rjit/c_pointer.rb, line 311 def to_i @addr end
Private Instance Methods
                              dest_addr()
                              click to toggle source
                            
                            # File ruby_vm/rjit/c_pointer.rb, line 317 def dest_addr Fiddle::Pointer.new(@addr)[0, Fiddle::SIZEOF_VOIDP].unpack1(Fiddle::PackInfo::PACK_MAP[Fiddle::TYPE_VOIDP]) end