NAME¶
Resource - shared object
SYNOPSIS¶
#include <InterViews/resource.h>
DESCRIPTION¶
Resource is a class that provides a simple form of reference counting for
shared objects. Every resource has a reference count that is initially set to
zero and must be explicitly incremented through a call to Reference. A
resource should not be deleted like other objects; instead, the static member
function unref should be used to unreference the object.
When a resource is unreferenced, the reference count is decremented unless it is
already zero. If the count is zero, the object is destroyed.
PUBLIC OPERATIONS¶
- Resource()
- Create a new resource object with its reference count set
to zero.
- void ref()
- Increment the resource's reference count.
- void unref()
- Decrement the resource's reference count, if it is
positive, and delete this if the count is zero.
- static void ref(Resource*)
- If the resource is not nil, call ref on it. Otherwise do
nothing.
- static void unref(Resource*)
- If the resource is not nil, call unref on it. Otherwise do
nothing.
- void Reference()
- This function is equivalent to ref and is provided solely
for backward compatibility. It will be removed in a future version.
- void Unreference()
- This function is equivalent to unref and is provided solely
for backward compatibility. It will be removed in a future version.
FRIEND OPERATIONS¶
- void Unref(Resource*)
- This function is equivalent to static unref and is provided
solely for backward compatibility. It will be removed in a future
version.
BUGS¶
This scheme relies on manual referencing, which is more efficient, but also more
dangerous.
When garbage collection is supported by the runtime system, resources will be
unnecessary.