/* Resource tracking routines, by Karl Lehenbauer
   Lattice version by David Gay.
   This code is in the public domain
*/

#ifdef DEBUG
/* tracking macros to use tracker routines */

#define AllocMem(x,y) TrackingAllocMem((x),(y),__FILE__,__LINE__)
#define FreeMem(x,y) TrackingFreeMem((x),(y),__FILE__,__LINE__)

#define AllocSignal(x) TrackingAllocSignal((x),__FILE__,__LINE__)
#define FreeSignal(x) TrackingFreeSignal((x),__FILE__,__LINE__);

#define Lock(x,y) TheTrackingLock((x),(y),__FILE__,__LINE__);
#define UnLock(x) TheTrackingUnLock((x),__FILE__,__LINE__);
#define DupLock(x) TheTrackingDupLock((x),__FILE__,__LINE__);
#define ParentDir(x) TheTrackingParentDir((x),__FILE__,__LINE__);

void *TrackingAllocMem(long amount, long flags, char *file, int line);
void TrackingFreeMem(void *where, long amount, char *file, int line);

long TrackingAllocSignal(long signal_num, char *file, int line);
void TrackingFreeSignal(long signal_num, char *file, int line);

void *TrackingAllocRaster();
void TrackingFreeRaster();

BPTR TheTrackingLock(char *name, long accessMode, char *file, int line);
BPTR TheTrackingDupLock(BPTR lock, char *file, int line);
void TheTrackingUnLock(BPTR lock, char *file, int line);
BPTR TheTrackingParentDir(BPTR lock, char *file, int line);

void TrackerExitReport(void);

#endif

