//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "valobject.h" #ifndef VALIDATOR_H #define VALIDATOR_H #ifdef _WIN32 #pragma once #endif #ifdef DBGFLAG_VALIDATE class CValidator { public: // Constructors & destructors CValidator( void ); ~CValidator( void ); // Call this each time we enter a new Validate function void Push( tchar *pchType, void *pvObj, tchar *pchName ); // Call this each time we exit a Validate function void Pop( void ); // Claim ownership of a memory block void ClaimMemory( void *pvMem ); // Finish performing a check and perform necessary computations void Finalize( void ); // Render our results to the console void RenderObjects( int cubThreshold ); // Render all reported objects void RenderLeaks( void ); // Render all memory leaks // List manipulation functions: CValObject *FindObject( void *pvObj ); // Returns CValObject containing pvObj, or NULL. void DiffAgainst( CValidator *pOtherValidator ); // Removes any entries from this validator that are also present in the other. // Accessors bool BMemLeaks( void ) { return m_bMemLeaks; }; CValObject *PValObjectFirst( void ) { return m_pValObjectFirst; }; void Validate( CValidator &validator, tchar *pchName ); // Validate our internal structures private: CValObject *m_pValObjectFirst; // Linked list of all ValObjects CValObject *m_pValObjectLast; // Last ValObject on the linked list CValObject *m_pValObjectCur; // Object we're current processing int m_cpvOwned; // Total # of blocks owned int m_cpubLeaked; // # of leaked memory blocks int m_cubLeaked; // Amount of leaked memory bool m_bMemLeaks; // Has any memory leaked? }; #endif // DBGFLAG_VALIDATE #endif // VALIDATOR_H