In Files

  • weakref.rb

Parent

Namespace

Class/Module Index [+]

Quicksearch

WeakRef

Public Class Methods

new(orig) click to toggle source
 
               # File weakref.rb, line 41
def initialize(orig)
  @__id = orig.object_id
  ObjectSpace.define_finalizer orig, @@final
  ObjectSpace.define_finalizer self, @@final
  @@mutex.synchronize {
    @@id_map[@__id] = [] unless @@id_map[@__id]
  }
  @@id_map[@__id].push self.object_id
  @@id_rev_map[self.object_id] = @__id
  super
end
            

Public Instance Methods

__getobj__() click to toggle source
 
               # File weakref.rb, line 53
def __getobj__
  unless @@id_rev_map[self.object_id] == @__id
    Kernel::raise RefError, "Invalid Reference - probably recycled", Kernel::caller(2)
  end
  begin
    ObjectSpace._id2ref(@__id)
  rescue RangeError
    Kernel::raise RefError, "Invalid Reference - probably recycled", Kernel::caller(2)
  end
end
            
__setobj__(obj) click to toggle source
 
               # File weakref.rb, line 63
def __setobj__(obj)
end
            
weakref_alive?() click to toggle source
 
               # File weakref.rb, line 66
def weakref_alive?
  @@id_rev_map[self.object_id] == @__id
end