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.
120 lines
3.5 KiB
120 lines
3.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#include "pch_tier0.h" |
|
#include "vstdlib/pch_vstdlib.h" |
|
|
|
#ifdef DBGFLAG_VALIDATE |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Initializer |
|
// Input: pchType - Type of the object we represent. |
|
// WARNING: pchType must be a static (since we keep a copy of it around for a while) |
|
// pvObj - Pointer to the object we represent |
|
// pchName - Name of the individual object we represent |
|
// WARNING: pchName must be a static (since we keep a copy of it around for a while) |
|
// pValObjectparent- Our parent object (ie, the object that our object is a member of) |
|
// pValObjectPrev - Object that precedes us in the linked list (we're |
|
// always added to the end) |
|
//----------------------------------------------------------------------------- |
|
void CValObject::Init( tchar *pchType, void *pvObj, tchar *pchName, |
|
CValObject *pValObjectParent, CValObject *pValObjectPrev ) |
|
{ |
|
m_nUser = 0; |
|
|
|
// Initialize pchType: |
|
if ( NULL != pchType ) |
|
{ |
|
Q_strncpy( m_rgchType, pchType, (int) ( sizeof(m_rgchType) / sizeof(*m_rgchType) ) ); |
|
} |
|
else |
|
{ |
|
m_rgchType[0] = '\0'; |
|
} |
|
|
|
m_pvObj = pvObj; |
|
|
|
// Initialize pchName: |
|
if ( NULL != pchName ) |
|
{ |
|
Q_strncpy( m_rgchName, pchName, sizeof(m_rgchName) / sizeof(*m_rgchName) ); |
|
} |
|
else |
|
{ |
|
m_rgchName[0] = NULL; |
|
} |
|
|
|
m_pValObjectParent = pValObjectParent; |
|
|
|
if ( NULL == pValObjectParent ) |
|
m_nLevel = 0; |
|
else |
|
m_nLevel = pValObjectParent->NLevel( ) + 1; |
|
|
|
m_cpubMemSelf = 0; |
|
m_cubMemSelf = 0; |
|
m_cpubMemTree = 0; |
|
m_cubMemTree = 0; |
|
|
|
// Insert us at the back of the linked list |
|
if ( NULL != pValObjectPrev ) |
|
{ |
|
Assert( NULL == pValObjectPrev->m_pValObjectNext ); |
|
pValObjectPrev->m_pValObjectNext = this; |
|
} |
|
m_pValObjectNext = NULL; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Destructor |
|
//----------------------------------------------------------------------------- |
|
CValObject::~CValObject( ) |
|
{ |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: The object we represent has claimed direct ownership of a block of |
|
// memory. Record that we own it. |
|
// Input: pvMem - Address of the memory block |
|
//----------------------------------------------------------------------------- |
|
void CValObject::ClaimMemoryBlock( void *pvMem ) |
|
{ |
|
// Get the memory block header |
|
CMemBlockHdr *pMemBlockHdr = CMemBlockHdr::PMemBlockHdrFromPvUser( pvMem ); |
|
pMemBlockHdr->CheckValid( ); |
|
|
|
// Update our counters |
|
m_cpubMemSelf++; |
|
m_cubMemSelf+= pMemBlockHdr->CubUser( ); |
|
m_cpubMemTree++; |
|
m_cubMemTree+= pMemBlockHdr->CubUser( ); |
|
|
|
// If we have a parent object, let it know about the memory (it'll recursively call up the tree) |
|
if ( NULL != m_pValObjectParent ) |
|
m_pValObjectParent->ClaimChildMemoryBlock( pMemBlockHdr->CubUser( ) ); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: A child of ours has claimed ownership of a memory block. Make |
|
// a note of it, and pass the message back up the tree. |
|
// Input: cubUser - Size of the memory block |
|
//----------------------------------------------------------------------------- |
|
void CValObject::ClaimChildMemoryBlock( int cubUser ) |
|
{ |
|
m_cpubMemTree++; |
|
m_cubMemTree += cubUser; |
|
|
|
if ( NULL != m_pValObjectParent ) |
|
m_pValObjectParent->ClaimChildMemoryBlock( cubUser ); |
|
} |
|
|
|
|
|
|
|
#endif // DBGFLAG_VALIDATE
|