Frapper  1.0a
InstanceCounterMacros.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of FRAPPER
4 research.animationsinstitut.de
5 sourceforge.net/projects/frapper
6 
7 Copyright (c) 2008-2009 Filmakademie Baden-Wuerttemberg, Institute of Animation
8 
9 This program is free software; you can redistribute it and/or modify it under
10 the terms of the GNU Lesser General Public License as published by the Free Software
11 Foundation; version 2.1 of the License.
12 
13 This program is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16 
17 You should have received a copy of the GNU Lesser General Public License along with
18 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
21 -----------------------------------------------------------------------------
22 */
23 
32 
33 #ifndef INSTANCE_COUNTER_MACROS_H
34 #define INSTANCE_COUNTER_MACROS_H
35 
36 #include "Log.h"
37 
38 
48 #define ADD_INSTANCE_COUNTER \
49 public:\
50  static int s_numberOfInstances;\
51  static int s_totalNumberOfInstances;\
52 private:
53 
54 
64 #define INIT_INSTANCE_COUNTER(className) \
65  int className::s_numberOfInstances = 0;\
66  int className::s_totalNumberOfInstances = 0;
67 
68 
78 #define INC_INSTANCE_COUNTER \
79  ++s_numberOfInstances;\
80  ++s_totalNumberOfInstances;
81 
82 
92 #define DEC_INSTANCE_COUNTER \
93  --s_numberOfInstances;
94 
95 
104 #define SHOW_INSTANCE_COUNTER(className) \
105  Log::debug(QString("%1 of %2 instances of class " #className " left").arg(className::s_numberOfInstances).arg(className::s_totalNumberOfInstances), "main");
106 
107 
108 #endif