class Ref::WeakReference::ReferencePointer

Public Class Methods

new(object) click to toggle source
# File lib/ref/weak_reference/pure_ruby.rb, line 9
def initialize(object)
  @referenced_object_id = object.__id__
  add_backreference(object)
end

Public Instance Methods

cleanup() click to toggle source
# File lib/ref/weak_reference/pure_ruby.rb, line 14
def cleanup
  obj = ObjectSpace._id2ref(@referenced_object_id) rescue nil
  remove_backreference(obj) if obj
end
object() click to toggle source
# File lib/ref/weak_reference/pure_ruby.rb, line 19
def object
  obj = ObjectSpace._id2ref(@referenced_object_id)
  obj if verify_backreferences(obj)
rescue RangeError
  nil
end

Private Instance Methods

supports_backreference?(obj) click to toggle source
# File lib/ref/weak_reference/pure_ruby.rb, line 55
def supports_backreference?(obj)
  obj.respond_to?(:instance_variable_get) && obj.respond_to?(:instance_variable_defined?)
rescue NoMethodError
  false
end