// This is memchunk.cc CVS version: $Id: memchunk.cc,v 1.2 2000/02/28 18:06:24 andreaha Exp $
#include "eng.h"

/************************************************************************/
/* World::MemChunk                                                      */
/************************************************************************/

/* constructor */
World::MemChunk::MemChunk(World *myw, size_t mems) {
  dpush3("World::MemChunk(%i, %#010x)",mems,(int)myw);

  myworld = myw;

  if ((memptr = new void *[mems])) {
    size = mems;
    myworld->memused += mems;
    myworld->memtotal += mems;
    memset(memptr, 0, mems);

    debug2("Alc Mem [%#010x];", (int)memptr);
    debug3(" %6ik (%10i bytes);", mems >> 10, mems);
  } else {
    size = 0;
    memptr = NULL;
    debug("Out of memory.\n");
  }

  dpop();
}

/* destructor */
World::MemChunk::~MemChunk() {
  dpush1("World::~MemChunk()");
  
  if (memptr != NULL) delete memptr;

  debug2("Del Mem [%#010x];", (int)memptr);
  debug3(" %6ik (%10i bytes);", size >> 10, size);

  memptr = NULL;
  myworld->memused -= size;
  myworld->memtotal -= size;

  dpop();
}

