| Module | Finalizer |
| In: |
finalize.rb
|
finalizer.rb -
$Release Version: 0.3$
$Revision: 1.4 $
$Date: 1998/02/27 05:34:33 $
by Keiju ISHITSUKA
—
Usage:
add(obj, dependant, method = :finalize, *opt)
add_dependency(obj, dependant, method = :finalize, *opt)
add dependency R_method(obj, dependant)
delete(obj_or_id, dependant, method = :finalize)
delete_dependency(obj_or_id, dependant, method = :finalize)
delete dependency R_method(obj, dependant)
delete_all_dependency(obj_or_id, dependant)
delete dependency R_*(obj, dependant)
delete_by_dependant(dependant, method = :finalize)
delete dependency R_method(*, dependant)
delete_all_by_dependant(dependant)
delete dependency R_*(*, dependant)
delete_all
delete all dependency R_*(*, *)
finalize(obj_or_id, dependant, method = :finalize)
finalize_dependency(obj_or_id, dependant, method = :finalize)
finalize the dependant connected by dependency R_method(obj, dependtant).
finalize_all_dependency(obj_or_id, dependant)
finalize all dependants connected by dependency R_*(obj, dependtant).
finalize_by_dependant(dependant, method = :finalize)
finalize the dependant connected by dependency R_method(*, dependtant).
finalize_all_by_dependant(dependant)
finalize all dependants connected by dependency R_*(*, dependant).
finalize_all
finalize all dependency registered to the Finalizer.
safe{..}
stop invoking Finalizer on GC.
| RCS_ID | = | '-$Id: finalize.rb,v 1.4 1998/02/27 05:34:33 keiju Exp keiju $-' |
| add_dependency | -> | add |
| delete_dependency | -> | delete |
| finalize_dependency | -> | finalize |
add dependency R_method(obj, dependant)
# File finalize.rb, line 51 def add_dependency(obj, dependant, method = :finalize, *opt) ObjectSpace.call_finalizer(obj) method = method.intern unless method.kind_of?(Integer) assoc = [dependant, method].concat(opt) if dep = @dependency[obj.object_id] dep.push assoc else @dependency[obj.object_id] = [assoc] end end
delete dependency R_*(*, dependant)
# File finalize.rb, line 99 def delete_all_by_dependant(dependant) for id in @dependency.keys delete_all_dependency(id, dependant) end end
delete dependency R_*(obj, dependant)
# File finalize.rb, line 78 def delete_all_dependency(id, dependant) id = id.object_id unless id.kind_of?(Integer) method = method.intern unless method.kind_of?(Integer) for assoc in @dependency[id] assoc.delete_if do |d, m, *o| d == dependant end @dependency.delete(id) if assoc.empty? end end
delete dependency R_method(*, dependant)
# File finalize.rb, line 91 def delete_by_dependant(dependant, method = :finalize) method = method.intern unless method.kind_of?(Integer) for id in @dependency.keys delete(id, dependant, method) end end
delete dependency R_method(obj, dependant)
# File finalize.rb, line 64 def delete_dependency(id, dependant, method = :finalize) id = id.object_id unless id.kind_of?(Integer) method = method.intern unless method.kind_of?(Integer) for assoc in @dependency[id] assoc.delete_if do |d, m, *o| d == dependant && m == method end @dependency.delete(id) if assoc.empty? end end
finalize all dependants connected by dependency R_*(*, dependtant)
# File finalize.rb, line 142 def finalize_all_by_dependant(dependant) for id in @dependency.keys finalize_all_dependency(id, dependant) end end
finalize all dependants connected by dependency R_*(obj, dependtant)
# File finalize.rb, line 121 def finalize_all_dependency(id, dependant) id = id.object_id unless id.kind_of?(Integer) method = method.intern unless method.kind_of?(Integer) for assoc in @dependency[id] assoc.delete_if do |d, m, *o| d.send(m, id, *o) if ret = d == dependant end @dependency.delete(id) if assoc.empty? end end
finalize the dependant connected by dependency R_method(*, dependtant)
# File finalize.rb, line 134 def finalize_by_dependant(dependant, method = :finalize) method = method.intern unless method.kind_of?(Integer) for id in @dependency.keys finalize(id, dependant, method) end end
finalize the depandant connected by dependency R_method(obj, dependtant)
# File finalize.rb, line 106 def finalize_dependency(id, dependant, method = :finalize) id = id.object_id unless id.kind_of?(Integer) method = method.intern unless method.kind_of?(Integer) for assocs in @dependency[id] assocs.delete_if do |d, m, *o| d.send(m, id, *o) if ret = d == dependant && m == method ret end @dependency.delete(id) if assoc.empty? end end