Panda3D
Loading...
Searching...
No Matches
memoryInfo.h
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 memoryInfo.h
10 * @author drose
11 * @date 2001-06-04
12 */
13
14#ifndef MEMORYINFO_H
15#define MEMORYINFO_H
16
17#include "pandabase.h"
18
19#ifdef DO_MEMORY_USAGE
20
21#include "typeHandle.h"
22
23class ReferenceCount;
24class TypedObject;
25
26/**
27 * This is a supporting class for MemoryUsage. It records the detailed
28 * information for a particular pointer allocated by Panda code. This record
29 * is only kept if track-mem-usage is configured #t.
30 *
31 * It's not exported from the DLL, and it doesn't even exist if we're
32 * compiling NDEBUG.
33 */
34class MemoryInfo {
35public:
36 MemoryInfo();
37
38public:
39 // Members to view the MemoryInfo structure.
40 TypeHandle get_type();
41
42 INLINE void *get_void_ptr() const;
43 INLINE ReferenceCount *get_ref_ptr() const;
44 INLINE TypedObject *get_typed_ptr() const;
45
46 INLINE bool is_size_known() const;
47 INLINE size_t get_size() const;
48
49 INLINE double get_time() const;
50
51private:
52 // Members to set up the MemoryInfo structure.
53 void determine_dynamic_type();
54 bool update_type_handle(TypeHandle &destination, TypeHandle refined);
55
56private:
57 enum Flags {
58 F_size_known = 0x0001,
59 F_reconsider_dynamic_type = 0x0002,
60 };
61
62 void *_void_ptr;
63 ReferenceCount *_ref_ptr;
64 TypedObject *_typed_ptr;
65 size_t _size;
66 TypeHandle _static_type;
67 TypeHandle _dynamic_type;
68 int _flags;
69
70 double _time;
71 int _freeze_index;
72
73 friend class MemoryUsage;
74};
75
76#include "memoryInfo.I"
77
78#else
79class MemoryInfo;
80
81#endif // DO_MEMORY_USAGE
82
83#endif
This class is used strictly for debugging purposes, specifically for tracking memory leaks of referen...
Definition memoryUsage.h:35
A base class for all things that want to be reference-counted.
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
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.