#include <referenceCount.h>
Inheritance diagram for ReferenceCount:
Public Member Functions | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
Static Public Member Functions | |
TypeHandle | get_class_type () |
void | init_type () |
Protected Member Functions | |
ReferenceCount () | |
The ReferenceCount constructor is protected because you almost never want to create just a ReferenceCount object by itself, and it's probably a mistake if you try. | |
ReferenceCount (const ReferenceCount &) | |
The copies of reference-counted objects do not themselves inherit the reference count! | |
void | operator= (const ReferenceCount &) |
The copies of reference-counted objects do not themselves inherit the reference count! | |
~ReferenceCount () | |
The ReferenceCount destructor is protected to discourage users from accidentally trying to delete a ReferenceCount pointer directly. | |
Private Attributes | |
int | _ref_count |
Static Private Attributes | |
TypeHandle | _type_handle |
ReferenceCount works in conjunction with PointerTo to automatically delete objects when the last pointer to them goes away.
Definition at line 51 of file referenceCount.h.
|
The ReferenceCount constructor is protected because you almost never want to create just a ReferenceCount object by itself, and it's probably a mistake if you try. ReferenceCount doesn't store any useful information in its own right; its only purpose is to add reference-counting to some other class via inheritance. Definition at line 53 of file referenceCount.I. References _ref_count, and INLINE. |
|
The copies of reference-counted objects do not themselves inherit the reference count! This copy constructor is protected because you almost never want to create just a ReferenceCount object by itself, and it's probably a mistake if you try. Definition at line 79 of file referenceCount.I. |
|
The ReferenceCount destructor is protected to discourage users from accidentally trying to delete a ReferenceCount pointer directly. This is almost always a bad idea, since the destructor is not virtual, and you've almost certainly got some pointer to something that inherits from ReferenceCount, not just a plain old ReferenceCount object. Definition at line 136 of file referenceCount.I. References _ref_count, INLINE, and test_ref_count_integrity(). |
|
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
|
The copies of reference-counted objects do not themselves inherit the reference count! This copy assignment operator is protected because you almost never want to copy just a ReferenceCount object by itself, and it's probably a mistake if you try. Definition at line 107 of file referenceCount.I. References _ref_count. Referenced by TypedWritableReferenceCount::TypedWritableReferenceCount(). |
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ~ReferenceCount(). |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Definition at line 74 of file referenceCount.h. Referenced by operator=(), ReferenceCount(), and ~ReferenceCount(). |
|