doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / gameengine / Ketsji / KX_TimeCategoryLogger.cpp
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 #include "KX_TimeCategoryLogger.h"
31
32 KX_TimeCategoryLogger::KX_TimeCategoryLogger(unsigned int maxNumMeasurements)
33 : m_maxNumMeasurements(maxNumMeasurements)
34 {
35 }
36
37
38 KX_TimeCategoryLogger::~KX_TimeCategoryLogger(void)
39 {
40         DisposeLoggers();
41 }
42
43
44 void KX_TimeCategoryLogger::SetMaxNumMeasurements(unsigned int maxNumMeasurements)
45 {
46         KX_TimeLoggerMap::iterator it;
47         for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
48                 it->second->SetMaxNumMeasurements(maxNumMeasurements);
49         }
50         m_maxNumMeasurements = maxNumMeasurements;
51 }
52
53
54 unsigned int KX_TimeCategoryLogger::GetMaxNumMeasurements(void) const
55 {
56         return m_maxNumMeasurements;
57 }
58
59
60 void KX_TimeCategoryLogger::AddCategory(TimeCategory tc)
61 {
62         // Only add if not already present
63         if (m_loggers.find(tc) == m_loggers.end()) {
64                 KX_TimeLogger* logger = new KX_TimeLogger(m_maxNumMeasurements);
65                 //assert(logger);
66                 m_loggers.insert(KX_TimeLoggerMap::value_type(tc, logger));
67         }
68 }
69
70
71 void KX_TimeCategoryLogger::StartLog(TimeCategory tc, double now, bool endOtherCategories)
72 {
73         if (endOtherCategories) {
74                 KX_TimeLoggerMap::iterator it;
75                 for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
76                         if (it->first != tc) {
77                                 it->second->EndLog(now);
78                         }
79                 }
80         }
81         //assert(m_loggers[tc] != m_loggers.end());
82         m_loggers[tc]->StartLog(now);
83 }
84
85
86 void KX_TimeCategoryLogger::EndLog(TimeCategory tc, double now)
87 {
88         //assert(m_loggers[tc] != m_loggers.end());
89         m_loggers[tc]->EndLog(now);
90 }
91
92
93 void KX_TimeCategoryLogger::EndLog(double now)
94 {
95         KX_TimeLoggerMap::iterator it;
96         for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
97                 it->second->EndLog(now);
98         }
99 }
100
101
102 void KX_TimeCategoryLogger::NextMeasurement(double now)
103 {
104         KX_TimeLoggerMap::iterator it;
105         for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
106                 it->second->NextMeasurement(now);
107         }
108 }
109
110
111 double KX_TimeCategoryLogger::GetAverage(TimeCategory tc)
112 {
113         //assert(m_loggers[tc] != m_loggers.end());
114         return m_loggers[tc]->GetAverage();
115 }
116
117
118 double KX_TimeCategoryLogger::GetAverage(void)
119 {
120         double time = 0.;
121
122         KX_TimeLoggerMap::iterator it;
123         for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
124                 time += it->second->GetAverage();
125         }
126
127         return time;
128 }
129
130
131 void KX_TimeCategoryLogger::DisposeLoggers(void)
132 {
133         KX_TimeLoggerMap::iterator it;
134         for (it = m_loggers.begin(); it != m_loggers.end(); it++) {
135                 delete it->second;
136         }
137 }
138