convert line ends
[canaan.git] / prj / tech / libsrc / lgalloc / membase.h
blob5ea7f27095d81c67595593b3a67c004151c8fe87
1 ///////////////////////////////////////////////////////////////////////////////
2 // $Source: x:/prj/tech/libsrc/lgalloc/RCS/membase.h $
3 // $Author: TOML $
4 // $Date: 1998/06/10 13:58:03 $
5 // $Revision: 1.4 $
6 //
8 #ifndef __MEMBASE_H
9 #define __MEMBASE_H
11 #include <comtools.h>
12 #include <allocapi.h>
14 ///////////////////////////////////////////////////////////////////////////////
16 // CLASS: cMallocBase
18 // Provides core allocator chaining functionality, some basic implementations
21 class cMallocBase : public IAllocator
23 public:
24 ///////////////////////////////////
26 // Constructor and destructor
29 cMallocBase();
30 ~cMallocBase();
32 ///////////////////////////////////
34 // Set/Get next in chain
36 void SetNext(IAllocator *);
37 IAllocator * GetNext();
39 ///////////////////////////////////
41 // IUnknown methods: we do nothing with these!
43 STDMETHOD(QueryInterface)(REFIID, void **);
44 STDMETHOD_(ULONG, AddRef)();
45 STDMETHOD_(ULONG, Release)();
47 ///////////////////////////////////
49 // IMalloc functions
51 STDMETHOD_(void *, Alloc) (ULONG cb) = 0;
52 STDMETHOD_(void *, Realloc) (void * pv, ULONG cb) = 0;
53 STDMETHOD_(void, Free) (void * pv) = 0;
54 STDMETHOD_(ULONG, GetSize) (void * pv);
55 STDMETHOD_(int, DidAlloc)(void * pv);
56 STDMETHOD_(void, HeapMinimize)();
58 #ifndef SHIP
59 ///////////////////////////////////
61 // IDebugMalloc extensions to IMalloc
63 STDMETHOD_(void *, AllocEx) (ULONG cb, const char * pszFile, int line);
64 STDMETHOD_(void *, ReallocEx)(void * pv, ULONG cb, const char * pszFile, int line);
65 STDMETHOD_(void, FreeEx) (void * pv, const char * pszFile, int line);
67 STDMETHOD (VerifyAlloc)(void * pv);
68 STDMETHOD (VerifyHeap)();
70 STDMETHOD_(void, DumpHeapInfo)();
72 STDMETHOD_(void, DumpStats)();
73 STDMETHOD_(void, DumpBlocks)();
74 STDMETHOD_(void, DumpModules)();
76 STDMETHOD_(void, PushCredit)(const char * pszFile, int line);
77 STDMETHOD_(void, PopCredit)();
78 #endif
80 protected:
81 IAllocator * m_pNext;
85 ///////////////////////////////////////////////////////////////////////////////
87 // CLASS: cMallocBase, inline functions
90 inline cMallocBase::cMallocBase()
91 : m_pNext(0)
96 ///////////////////////////////////////
98 inline cMallocBase::~cMallocBase()
102 ///////////////////////////////////////
104 inline void cMallocBase::SetNext(IAllocator * pNext)
106 m_pNext = pNext;
109 ///////////////////////////////////////
111 inline IAllocator * cMallocBase::GetNext()
113 return m_pNext;
116 ///////////////////////////////////////////////////////////////////////////////
118 #endif /* !__MEMBASE_H */