libbbb  1.2.1
Groups common code used in some applications and libraries.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
memtrack.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __MEMTRACK_INC__
21 #define __MEMTRACK_INC__
22 //
23 //
24 //
25 //
26 /* INCLUDES ------------------------------------------------------------ */
27 
28 #include <libbbb/libbbb.h>
29 
30 /* INCLUDES ============================================================ */
31 //
32 //
33 //
34 //
35 /* DEFINITIONS --------------------------------------------------------- */
36 
37 #ifdef BB_MEMTRACK
38 
39 # include <QString>
40 # include <QList>
41 # include <QStringList>
42 
43 #ifndef STR_HELPER
44 # define STR_HELPER(a) #a
45 #endif
46 
47 #ifndef STRINGIFY
48 # define STRINGIFY(a) STR_HELPER(a)
49 #endif
50 
51 
55 # define BBM_TRACK(n) public: \
56  QString BB_MEMTRACK_name ( void ) const \
57  { return STRINGIFY(n); } \
58  private:
59 
60 
61 
62 class MemTrack;
63 
64 #else
65 
66 # define BBM_TRACK(n)
67 
68 #endif
69 
70 /* DEFINITIONS ========================================================= */
71 //
72 //
73 //
74 //
75 /* CLASS --------------------------------------------------------------- */
76 
77 
81 class
82  BBBSHARED_EXPORT
83  MemTrackMng {
84 #ifdef BB_MEMTRACK
85  //
86  //
87  //
88  //
89  /* DEFINITIONS ----------------------------------------------------- */
90 
91  /* DEFINITIONS ===================================================== */
92  //
93  //
94  //
95  //
96  /* DATA ------------------------------------------------------------ */
97 
98 private:
99 
100 
104  QList<MemTrack*> allocated_;
105 
106 
110  QList<MemTrack*> freed_;
111 
112 
113 
117  static MemTrackMng * manager_;
118 
119 
120  /* DATA ============================================================ */
121  //
122  //
123  //
124  //
125  /* FUNCTIONS ------------------------------------------------------- */
126 
127 private:
128 
129 
133  MemTrackMng ( void ) { manager_ = this; }
134 
135 
139  ~MemTrackMng ( void );
140 
141 
142 public:
143 
144 
148  static MemTrackMng * uniq ( void )
149  {
150  if ( manager_ == NULL ) new MemTrackMng();
151  return manager_;
152  }
153 
154 
158  static void wasAllocated ( MemTrack * inst );
159 
160 
164  static void wasFreed ( MemTrack * inst );
165 
166 
170  static bool isAllocated ( MemTrack * inst );
171 
172 
176  static bool isFreed ( MemTrack * inst );
177 
178 
182  static void getAllocated ( QStringList & sl );
183 
184 
188  static void getFreed ( QStringList & sl );
189 
190 
194  static void toString ( QStringList & sl );
195 
196 
200  static void dump ( void );
201 
202 
206  static void dumpAllocated ( void );
207 
208 
212  static int allocatedCount ( void )
213  { return uniq()->allocated_.count(); }
214 
215 
219  static int freedCount ( void )
220  { return uniq()->freed_.count(); }
221 
222 
226  static void reinit ( void )
227  { uniq()->freed_.clear(); }
228 
229 
230 #endif // BB_MEMTRACK
231 
232 
233  /* FUNCTIONS ======================================================= */
234  //
235  //
236  //
237  //
238 }; /* class MemTrack */
239 
240 /* CLASS =============================================================== */
241 //
242 //
243 //
244 //
245 /* CLASS --------------------------------------------------------------- */
246 
256 class
257  BBBSHARED_EXPORT
258  MemTrack {
259  //
260  //
261  //
262  //
263  /* DEFINITIONS ----------------------------------------------------- */
264 
265  /* DEFINITIONS ===================================================== */
266  //
267  //
268  //
269  //
270  /* DATA ------------------------------------------------------------ */
271 
272 private:
273 
274 
275 
276  /* DATA ============================================================ */
277  //
278  //
279  //
280  //
281  /* FUNCTIONS ------------------------------------------------------- */
282 
283 public:
284 
285 
286 #ifdef BB_MEMTRACK
287 
291  MemTrack ( void );
292 
293 
294 
298  virtual ~MemTrack ( void );
299 
300 
304  virtual QString BB_MEMTRACK_name ( void ) const = 0;
305 
306 
307 #else
308 
309 
313  MemTrack ( void ) {}
314 
315 
316 #endif // BB_MEMTRACK
317 
318 
319  /* FUNCTIONS ======================================================= */
320  //
321  //
322  //
323  //
324 }; /* class MemTrack */
325 
326 /* CLASS =============================================================== */
327 //
328 //
329 //
330 //
331 #endif // __MEMTRACK_INC__
332 /* ------------------------------------------------------------------------- */
333 /* ========================================================================= */