Panda3D
Loading...
Searching...
No Matches
memoryUsagePointers.I
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file memoryUsagePointers.I
10 * @author drose
11 * @date 2000-05-25
12 */
13
14/**
15 *
16 */
17INLINE MemoryUsagePointers::Entry::
18Entry(ReferenceCount *ref_ptr, TypedObject *typed_ptr,
19 TypeHandle type, double age) :
20 _ref_ptr(ref_ptr),
21 _typed_ptr(typed_ptr),
22 _type(type),
23 _age(age)
24{
25 _ref_ptr->ref();
26}
27
28/**
29 *
30 */
31INLINE MemoryUsagePointers::Entry::
32Entry(const Entry &copy) :
33 _ref_ptr(copy._ref_ptr),
34 _typed_ptr(copy._typed_ptr),
35 _type(copy._type),
36 _age(copy._age)
37{
38 _ref_ptr->ref();
39}
40
41/**
42 *
43 */
44INLINE void MemoryUsagePointers::Entry::
45operator = (const Entry &copy) {
46 if (_ref_ptr != copy._ref_ptr) {
47 _ref_ptr->unref();
48 _ref_ptr = copy._ref_ptr;
49 // We can't call unref_delete(), because we don't know what kind of
50 // pointer it is precisely. Potential leak.
51 _ref_ptr->ref();
52 }
53 _typed_ptr = copy._typed_ptr;
54 _type = copy._type;
55 _age = copy._age;
56}
57
58/**
59 *
60 */
61INLINE MemoryUsagePointers::Entry::
62~Entry() {
63 // We can't call unref_delete(), because we don't know what kind of pointer
64 // it is precisely. Potential leak.
65 _ref_ptr->unref();
66}
A base class for all things that want to be reference-counted.
void ref() const
Explicitly increments the reference count.
virtual bool unref() const
Explicitly decrements the reference count.
TypeHandle is the identifier used to differentiate C++ class types.
Definition typeHandle.h:81
This is an abstract class that all classes which use TypeHandle, and also provide virtual functions t...
Definition typedObject.h:88