Usage:
add dependency R_method(obj, dependant)
add(obj, dependant, method = :finalize, *opt) add_dependency(obj, dependant, method = :finalize, *opt)
delete dependency R_method(obj, dependant)
delete(obj_or_id, dependant, method = :finalize) delete_dependency(obj_or_id, dependant, method = :finalize)
delete dependency R_*(obj, dependant)
delete_all_dependency(obj_or_id, dependant)
delete dependency R_method(*, dependant)
delete_by_dependant(dependant, method = :finalize)
delete dependency R_*(*, dependant)
delete_all_by_dependant(dependant)
delete all dependency R_*(*, *)
delete_all
finalize the dependant connected by dependency R_method(obj, dependtant).
finalize(obj_or_id, dependant, method = :finalize) finalize_dependency(obj_or_id, dependant, method = :finalize)
finalize all dependants connected by dependency R_*(obj, dependtant).
finalize_all_dependency(obj_or_id, dependant)
finalize the dependant connected by dependency R_method(*, dependtant).
finalize_by_dependant(dependant, method = :finalize)
finalize all dependants connected by dependency R_*(*, dependant).
finalize_all_by_dependant(dependant)
finalize all dependency registered to the Finalizer.
finalize_all
stop invoking Finalizer on GC.
safe{..}
add dependency R_method(obj, dependant)
# File finalize.rb, line 58
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 106
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 85
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 98
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 71
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 registered to the Finalizer.
# File finalize.rb, line 156
def finalize_all
for id, assocs in @dependency
for dependant, method, *opt in assocs
dependant.send(method, id, *opt)
end
assocs.clear
end
end
finalize all dependants connected by dependency R_*(*, dependtant)
# File finalize.rb, line 149
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 128
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 141
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 113
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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.