//----------------------------------------------------------------------------- // // // 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 #include //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_