00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _COMBINEHEAP_H_
00028 #define _COMBINEHEAP_H_
00029
00030
00036 namespace HL {
00037
00038 template <class MallocHeap, class FreeHeap>
00039 class CombineHeap : public FreeHeap {
00040
00041 public:
00042
00043 inline void * malloc (size_t sz) {
00044 return mallocheap.malloc (sz);
00045 }
00046
00047 MallocHeap& getMallocHeap (void) {
00048 return mallocheap;
00049 }
00050
00051 inline void clear (void) {
00052 mallocheap.clear();
00053 FreeHeap::clear();
00054 }
00055
00056 inline void free (void * ptr) {
00057 printf ("combineheap: free %x, sz = %d!\n", ptr, getSize(ptr));
00058 FreeHeap::free (ptr);
00059 }
00060
00061 private:
00062 MallocHeap mallocheap;
00063
00064 };
00065
00066 };
00067
00068 #endif
00069