module Inline::C::Pointer

Attributes

ruby_managed[R]

Public Class Methods

new(memory_address, ruby_managed=false) click to toggle source
# File lib/inline_acceleration.rb, line 436
def initialize(memory_address, ruby_managed=false)
  @memory_address = ValueSafe.new()
  @memory_address.value = memory_address
  @ruby_managed = ruby_managed
  
  if ruby_managed
    @@registered_pointers[self.object_id] = memory_address
    ObjectSpace.define_finalizer(self, lambda { |id|
      memory_address = @@registered_pointers.delete(id)
      if !@@registered_pointers.has_value?(memory_address)
        Inline::C.internal_c_functions_module.C_Pointer_free_memory(memory_address)
      end
    })
  end
end

Public Instance Methods

==(other) click to toggle source
# File lib/inline_acceleration.rb, line 456
def ==(other)
 (other.is_a? Pointer) && Inline::C.internal_c_functions_module.C_Pointer_equals(self.memory_address, other.memory_address)
end
memory_address() click to toggle source
# File lib/inline_acceleration.rb, line 452
def memory_address
  @memory_address.value
end