00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDebugLeaks.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00048 #ifndef __vtkDebugLeaks_h 00049 #define __vtkDebugLeaks_h 00050 00051 #include "vtkObject.h" 00052 00053 #include "vtkToolkits.h" // Needed for VTK_DEBUG_LEAKS macro setting. 00054 #include "vtkDebugLeaksManager.h" // Needed for proper singleton initialization 00055 00056 class vtkDebugLeaksHashTable; 00057 class vtkSimpleCriticalSection; 00058 00059 class VTK_COMMON_EXPORT vtkDebugLeaks : public vtkObject 00060 { 00061 public: 00062 static vtkDebugLeaks *New(); 00063 vtkTypeRevisionMacro(vtkDebugLeaks,vtkObject); 00064 00066 static void ConstructClass(const char* classname); 00067 00069 static void DestructClass(const char* classname); 00070 00072 static void PrintCurrentLeaks(); 00073 00075 00077 static void PromptUserOn() {} 00078 static void PromptUserOff() {} 00080 00081 protected: 00082 vtkDebugLeaks(){}; 00083 virtual ~vtkDebugLeaks(){}; 00084 00085 static int DisplayMessageBox(const char*); 00086 00087 static void ClassInitialize(); 00088 static void ClassFinalize(); 00089 00090 //BTX 00091 friend class vtkDebugLeaksManager; 00092 //ETX 00093 00094 private: 00095 static vtkDebugLeaksHashTable* MemoryTable; 00096 static vtkSimpleCriticalSection* CriticalSection; 00097 private: 00098 vtkDebugLeaks(const vtkDebugLeaks&); // Not implemented. 00099 void operator=(const vtkDebugLeaks&); // Not implemented. 00100 }; 00101 00102 #endif // __vtkDebugLeaks_h