//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: CValObject is used for tracking individual objects that report // in to CValidator. Whenever a new object reports in (via //CValidator::Push), we create a new CValObject to aggregate stats for it. // // $NoKeywords: $ //=============================================================================// #ifndef VALOBJECT_H #define VALOBJECT_H #ifdef _WIN32 #pragma once #endif #ifdef DBGFLAG_VALIDATE class CValObject { public: // Constructors & destructors CValObject(void){}; ~CValObject(void); void Init(tchar *pchType, void *pvObj, tchar *pchName, CValObject *pValObjectParent, CValObject *pValObjectPrev); // Our object has claimed ownership of a memory block void ClaimMemoryBlock(void *pvMem); // A child of ours has claimed ownership of a memory block void ClaimChildMemoryBlock(int cubUser); // Accessors tchar *PchType(void) { return m_rgchType; }; void *PvObj(void) { return m_pvObj; }; tchar *PchName(void) { return m_rgchName; }; CValObject *PValObjectParent(void) { return m_pValObjectParent; }; int NLevel(void) { return m_nLevel; }; CValObject *PValObjectNext(void) { return m_pValObjectNext; }; int CpubMemSelf(void) { return m_cpubMemSelf; }; int CubMemSelf(void) { return m_cubMemSelf; }; int CpubMemTree(void) { return m_cpubMemTree; }; int CubMemTree(void) { return m_cubMemTree; }; int NUser(void) { return m_nUser; }; void SetNUser(int nUser) { m_nUser = nUser; }; void SetBNewSinceSnapshot(bool bNewSinceSnapshot) { m_bNewSinceSnapshot = bNewSinceSnapshot; } bool BNewSinceSnapshot(void) { return m_bNewSinceSnapshot; } private: bool m_bNewSinceSnapshot; // If this block is new since the snapshot. tchar m_rgchType[64]; // Type of the object we represent tchar m_rgchName[64]; // Name of this particular object void *m_pvObj; // Pointer to the object we represent CValObject *m_pValObjectParent; // Our parent object in the tree. int m_nLevel; // Our depth in the tree CValObject *m_pValObjectNext; // Next ValObject in the linked list int m_cpubMemSelf; // # of memory blocks we own directly int m_cubMemSelf; // Total size of the memory blocks we own directly int m_cpubMemTree; // # of memory blocks owned by us and our children int m_cubMemTree; // Total size of the memory blocks owned by us and our // children int m_nUser; // Field provided for use by our users }; #endif // DBGFLAG_VALIDATE #endif // VALOBJECT_H