r5sdk/r5dev/vpc/kvleaktrace.h

62 lines
855 B
C
Raw Normal View History

#ifndef KVLEAKTRACE_H
#define KVLEAKTRACE_H
#include "tier1/utlvector.h"
#ifdef LEAKTRACK
class CLeakTrack
{
public:
CLeakTrack()
{
}
~CLeakTrack()
{
if (keys.Count() != 0)
{
Assert(0);
}
}
struct kve
{
KeyValues* kv;
char name[256];
};
void AddKv(KeyValues* kv, char const* name)
{
kve k;
strncpy(k.name, name ? name : "NULL", sizeof(k.name));
k.kv = kv;
keys.AddToTail(k);
}
void RemoveKv(KeyValues* kv)
{
int c = keys.Count();
for (int i = 0; i < c; i++)
{
if (keys[i].kv == kv)
{
keys.Remove(i);
break;
}
}
}
CUtlVector< kve > keys;
};
static CLeakTrack track;
#define TRACK_KV_ADD( ptr, name ) track.AddKv( ptr, name )
#define TRACK_KV_REMOVE( ptr ) track.RemoveKv( ptr )
#else
#define TRACK_KV_ADD( ptr, name )
#define TRACK_KV_REMOVE( ptr )
#endif
#endif // KVLEAKTRACE_H