44 lines
1.6 KiB
C
44 lines
1.6 KiB
C
//-----------------------------------------------------------------------------
|
|
//
|
|
//
|
|
// File: CPoolMac.h
|
|
//
|
|
// Description: Definitions of CPool Helper Macros. Moved from transmem.h to
|
|
// make it easier to use CPool without Exchmem (for COM dlls).
|
|
//
|
|
// Author: mikeswa
|
|
//
|
|
// Copyright (C) 1997 Microsoft Corporation
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef _CPOOLMAC_H_
|
|
#define _CPOOLMAC_H_
|
|
|
|
#include <cpool.h>
|
|
#include <dbgtrace.h>
|
|
|
|
//If you would rather use Exchmem (or the default new & delete),
|
|
//then define OVERRIDE_CPOOL
|
|
#ifndef OVERRIDE_CPOOL
|
|
//Use after "public:" in class definition
|
|
#define DEFINE_CPOOL_MEMBERS \
|
|
static CPool m_MyClassPool; \
|
|
inline void *operator new(size_t size) {return m_MyClassPool.Alloc();}; \
|
|
inline void operator delete(void *p, size_t size) {m_MyClassPool.Free(p);};
|
|
//Use at top of classes CPP file
|
|
#define DECLARE_CPOOL_STATIC(CMyClass) \
|
|
CPool CMyClass::m_MyClassPool;
|
|
//Use in "main" before any classes are allocated
|
|
#define F_INIT_CPOOL(CMyClass, NumPreAlloc) \
|
|
CMyClass::m_MyClassPool.ReserveMemory(NumPreAlloc, sizeof(CMyClass))
|
|
#define RELEASE_CPOOL(CMyClass) \
|
|
{_ASSERT(CMyClass::m_MyClassPool.GetAllocCount() == 0);CMyClass::m_MyClassPool.ReleaseMemory();}
|
|
#else //use exchmem to track allocations
|
|
#define DEFINE_CPOOL_MEMBERS
|
|
#define F_INIT_CPOOL(CMyClass, NumPreAlloc) true
|
|
#define RELEASE_CPOOL(CMyClass)
|
|
#endif //OVERRIDE_CPOOL
|
|
|
|
#endif //_CPOOLMAC_H_
|