Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
2.9 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkDebugLeaks.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkDebugLeaks - identify memory leaks at program termination
// .SECTION Description
// vtkDebugLeaks is used to report memory leaks at the exit of the program.
// It uses the vtkObjectFactory to intercept the construction of all VTK
// objects. It uses the UnRegister method of vtkObject to intercept the
// destruction of all objects. A table of object name to number of instances
// is kept. At the exit of the program if there are still VTK objects around
// it will print them out. To enable this class add the flag
// -DVTK_DEBUG_LEAKS to the compile line, and rebuild vtkObject and
// vtkObjectFactory.
#ifndef __vtkDebugLeaks_h
#define __vtkDebugLeaks_h
#include "vtkObject.h"
#include "vtkToolkits.h" // Needed for VTK_DEBUG_LEAKS macro setting.
#include "vtkDebugLeaksManager.h" // Needed for proper singleton initialization
class vtkDebugLeaksHashTable;
class vtkSimpleCriticalSection;
class VTK_COMMON_EXPORT vtkDebugLeaks : public vtkObject
{
public:
static vtkDebugLeaks *New();
vtkTypeRevisionMacro(vtkDebugLeaks,vtkObject);
// Description:
// Call this when creating a class of a given name.
static void ConstructClass(const char* classname);
// Description:
// Call this when deleting a class of a given name.
static void DestructClass(const char* classname);
// Description:
// Print all the values in the table. Returns non-zero if there
// were leaks.
static int PrintCurrentLeaks();
// Description:
// @deprecated Turn prompt at exit on/off (this setting is deprecated
// and will be ignored).
VTK_LEGACY(static void PromptUserOn());
VTK_LEGACY(static void PromptUserOff());
// Description:
// Get/Set flag for exiting with an error when leaks are present.
// Default is on when testing and off otherwise.
static int GetExitError();
static void SetExitError(int);
protected:
vtkDebugLeaks(){};
virtual ~vtkDebugLeaks(){};
static int DisplayMessageBox(const char*);
static void ClassInitialize();
static void ClassFinalize();
//BTX
friend class vtkDebugLeaksManager;
//ETX
private:
static vtkDebugLeaksHashTable* MemoryTable;
static vtkSimpleCriticalSection* CriticalSection;
static int ExitError;
vtkDebugLeaks(const vtkDebugLeaks&); // Not implemented.
void operator=(const vtkDebugLeaks&); // Not implemented.
};
#endif // __vtkDebugLeaks_h