|
Blender
V2.59
|
00001 /* 00002 * $Id: KX_TimeCategoryLogger.h 35063 2011-02-22 10:33:14Z jesterking $ 00003 * 00004 * ***** BEGIN GPL LICENSE BLOCK ***** 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License 00008 * as published by the Free Software Foundation; either version 2 00009 * of the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software Foundation, 00018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 * 00020 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00021 * All rights reserved. 00022 * 00023 * The Original Code is: all of this file. 00024 * 00025 * Contributor(s): none yet. 00026 * 00027 * ***** END GPL LICENSE BLOCK ***** 00028 */ 00029 00034 #ifndef __KX_TIME_CATEGORY_LOGGER_H 00035 #define __KX_TIME_CATEGORY_LOGGER_H 00036 00037 #if defined(WIN32) && !defined(FREE_WINDOWS) 00038 #pragma warning (disable:4786) // suppress stl-MSVC debug info warning 00039 #endif 00040 00041 #include <map> 00042 00043 #include "KX_TimeLogger.h" 00044 00051 class KX_TimeCategoryLogger { 00052 public: 00053 typedef int TimeCategory; 00054 00059 KX_TimeCategoryLogger(unsigned int maxNumMeasurements = 10); 00060 00064 virtual ~KX_TimeCategoryLogger(void); 00065 00069 virtual void SetMaxNumMeasurements(unsigned int maxNumMeasurements); 00070 00074 virtual unsigned int GetMaxNumMeasurements(void) const; 00075 00080 virtual void AddCategory(TimeCategory tc); 00081 00088 virtual void StartLog(TimeCategory tc, double now, bool endOtherCategories = true); 00089 00095 virtual void EndLog(TimeCategory tc, double now); 00096 00101 virtual void EndLog(double now); 00102 00107 virtual void NextMeasurement(double now); 00108 00113 virtual double GetAverage(TimeCategory tc); 00114 00118 virtual double GetAverage(void); 00119 00120 protected: 00124 virtual void DisposeLoggers(void); 00125 00127 typedef std::map<TimeCategory, KX_TimeLogger*> KX_TimeLoggerMap; 00128 KX_TimeLoggerMap m_loggers; 00130 unsigned int m_maxNumMeasurements; 00131 00132 00133 #ifdef WITH_CXX_GUARDEDALLOC 00134 public: 00135 void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:KX_TimeCategoryLogger"); } 00136 void operator delete( void *mem ) { MEM_freeN(mem); } 00137 #endif 00138 }; 00139 00140 #endif // __KX_TIME_CATEGORY_LOGGER_H 00141