#ifndef __FIXEDSIZEALLOCATOR_HPP__
#define __FIXEDSIZEALLOCATOR_HPP__
#include "MemoryAllocator.hpp"
#include "Object.hpp"
#include "defines.h"
class FixedSizeAllocator : public MemoryAllocator,
public virtual Object
{
public: FixedSizeAllocator( const Index aDefaultSize, const Index aSegmentSize,
const char *aName );
public: virtual ~FixedSizeAllocator();
public: virtual void *allocate( Index aNumberOfBytes );
public: virtual void deallocate( void *anAddress );
public: virtual Top *clone() const;
public: virtual String toString() const;
public: virtual String getClassName() const;
protected: struct Segment
{
Segment *nextInChain;
char *area;
};
protected: const Index defaultSize;
protected: const Index segmentSize;
protected: Segment *segmentChain;
protected: char *headOfFreeList;
#if defined( PROFILE_MEM_ALLOC )
protected: Index totalAllocated;
protected: Index actualAllocated;
protected: Index maxAllocated;
protected: double averageAllocated;
protected: Index totalSegments;
protected: Index actualSegments;
protected: Index maxSegments;
protected: double averageSegments;
#endif
protected: const char *name;
};
#endif