#ifndef HOARD_PROCESSHEAP_H
#define HOARD_PROCESSHEAP_H
#include <cstdlib>
#include "alignedsuperblockheap.h"
#include "conformantheap.h"
#include "emptyhoardmanager.h"
#include "hoardmanager.h"
#include "hoardsuperblock.h"
namespace Hoard {
template <size_t SuperblockSize,
template <class LockType_,
int SuperblockSize_,
typename HeapType_> class Header_,
int EmptinessClasses,
class LockType,
class ThresholdClass,
class MmapSource>
class ProcessHeap :
public ConformantHeap<
HoardManager<AlignedSuperblockHeap<LockType, SuperblockSize, MmapSource>,
EmptyHoardManager<HoardSuperblock<LockType,
SuperblockSize,
ProcessHeap<SuperblockSize, Header_, EmptinessClasses, LockType, ThresholdClass, MmapSource>,
Header_>>,
HoardSuperblock<LockType,
SuperblockSize,
ProcessHeap<SuperblockSize, Header_, EmptinessClasses, LockType, ThresholdClass, MmapSource>, Header_>,
EmptinessClasses,
LockType,
ThresholdClass,
ProcessHeap<SuperblockSize, Header_, EmptinessClasses, LockType, ThresholdClass, MmapSource> > > {
public:
ProcessHeap (void) {}
inline void * malloc (size_t);
private:
ProcessHeap (const ProcessHeap&);
ProcessHeap& operator=(const ProcessHeap&);
};
}
#endif