Panda3D
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 
23 class ReferenceCount;
24 class 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  */
34 class MemoryInfo {
35 public:
36  MemoryInfo();
37 
38 public:
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 
51 private:
52  // Members to set up the MemoryInfo structure.
53  void determine_dynamic_type();
54  bool update_type_handle(TypeHandle &destination, TypeHandle refined);
55 
56 private:
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
79 class MemoryInfo;
80 
81 #endif // DO_MEMORY_USAGE
82 
83 #endif
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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.
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