78 lines
2.1 KiB
C++
78 lines
2.1 KiB
C++
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1992 - 1992.
|
||
|
//
|
||
|
// File: otrackp.h
|
||
|
//
|
||
|
// Contents: Private definitions for Object Tracking system
|
||
|
//
|
||
|
// History: 6-Apr-92 MikeSe Created
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef __OTRACKP_HXX__
|
||
|
#define __OTRACKP_HXX__
|
||
|
|
||
|
// Entry type in history record
|
||
|
enum FrameType { FT_CREATE, FT_ADDREF, FT_RELEASE };
|
||
|
|
||
|
// Number of call frame to record
|
||
|
#define MAX_CALLERS 8
|
||
|
|
||
|
// A single entry in the history
|
||
|
struct FrameRecord
|
||
|
{
|
||
|
FrameRecord *frNext;
|
||
|
FrameType ft;
|
||
|
ULONG cRefCount;
|
||
|
void * callers[MAX_CALLERS];
|
||
|
};
|
||
|
|
||
|
#define TRACK_LINK_SIGNATURE 0x4C53544F
|
||
|
|
||
|
#define REFCOUNT_NOT_SET 0xFFFFFFFF
|
||
|
|
||
|
// This structure is the root point for the history for an object.
|
||
|
// It is pointed to by the _tl member variable in the ObjectTracker
|
||
|
// class (see otrack.hxx).
|
||
|
|
||
|
struct TrackLink
|
||
|
{
|
||
|
TrackLink *tlNext; // link together
|
||
|
TrackLink *tlPrev; // ...
|
||
|
ULONG ulSig; // validity signature
|
||
|
ObjectTracker *potr; // back link to object
|
||
|
char *pszName; // class name
|
||
|
int fTrack; // true if tracking should be done
|
||
|
FrameRecord *frFirst; // first call frame
|
||
|
FrameRecord *frLast; // last call frame
|
||
|
};
|
||
|
|
||
|
// This structure holds the name of a class and a flag indicating if
|
||
|
// object tracking is currently on or off for this class.
|
||
|
|
||
|
struct NameEntry
|
||
|
{
|
||
|
NameEntry *neNext; // link together
|
||
|
NameEntry *nePrev; // ...
|
||
|
int fTrack; // tracking on/off for this class
|
||
|
char *pszName; // class name
|
||
|
};
|
||
|
|
||
|
#ifdef ANYSTRICT
|
||
|
|
||
|
DECLARE_DEBUG(Ot)
|
||
|
|
||
|
# define OtDebugOut(x) OtInlineDebugOut x
|
||
|
# define OtAssert(x) Win4Assert(x)
|
||
|
|
||
|
#else
|
||
|
|
||
|
# define OtDebugOut(x)
|
||
|
# define OtAssert(x)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif // of ifndef __OTRACKP_HXX__
|