/**********************************************************************
This file is part of Crack dot Com's free source code release of
Golgotha.
for
information about compiling & licensing issues visit this URL
If that doesn't help, contact Jonathan Clark at
golgotha_source@usa.net (Subject should have "GOLG" in it)
***********************************************************************/
/*
Grow heap will only grow, it never shrinks.
It should not be used for allocating large blocks. And
the largest allocation request should be less than grow_increment.
*/
#ifndef __GROWHEAP_HPP_
#define __GROWHEAP_HPP_
#include "memory/malloc.hh"
#include "isllist.hh"
class i4_grow_heap_class
{
public:
class heap
{
public:
heap *next;
void *data;
heap(w32 size, char *name) { data=i4_malloc(size,name); name=0; }
~heap() { i4_free(data); }
} ;
typedef i4_isl_list heap_list;
typedef i4_isl_list::iterator heap_iter;
heap_list list;
w32 current_offset,increment,current_size;
i4_grow_heap_class(w32 initial_size, w32 grow_increment);
void *malloc(w32 size, char *description); // description not used right now
~i4_grow_heap_class() { list.destroy_all(); }
void clear();
} ;
#endif