home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d591
/
monopolysrc.lha
/
MonopolySrc
/
iff_h.LZH
/
iff_h
/
remalloc.h
< prev
Wrap
C/C++ Source or Header
|
1992-01-06
|
3KB
|
86 lines
/** RemAlloc.h **********************************************************/
/* ChipAlloc(), ExtAlloc(), RemAlloc(), RemFree(). */
/* ALLOCators which REMember the size allocated, for simpler freeing. */
/* */
/* Date Who Changes */
/* --------- --- -------------------------------------------------------*/
/* 16-Jan-86 sss Created from DPaint/DAlloc.c */
/* 22-Jan-86 jhm Include Compiler.h */
/* 25-Jan-86 sss Added ChipNoClearAlloc,ExtNoClearAlloc */
/* */
/* By Jerry Morrison and Steve Shaw, Electronic Arts. */
/* This software is in the public domain. */
/* */
/* This version for the Commodore-Amiga computer. */
/* */
/************************************************************************/
#ifndef REM_ALLOC_H
#define REM_ALLOC_H
#ifndef COMPILER_H
#include "mono:iff_h/compiler.h"
#endif
/* How these allocators work:
* The allocator procedures get the memory from the system allocator,
* actually allocating 4 extra bytes. We store the length of the node in
* the first 4 bytes then return a ptr to the rest of the storage. The
* deallocator can then find the node size and free it. */
#ifdef FDwAT
/* RemAlloc allocates a node with "size" bytes of user data.
* Example:
* struct BitMap *bm;
* bm = (struct BitMap *)RemAlloc( sizeof(struct BitMap), ...flags... );
*/
extern UBYTE *RemAlloc(LONG, LONG);
/* size, flags */
/* ALLOCator that remembers size, allocates in CHIP-accessable memory.
* Use for all data to be displayed on screen, all sound data, all data to be
* blitted, disk buffers, or access by any other DMA channel.
* Does clear memory being allocated.*/
extern UBYTE *ChipAlloc(LONG);
/* size */
/* ChipAlloc, without clearing memory. Purpose: speed when allocate
* large area that will be overwritten anyway.*/
extern UBYTE *ChipNoClearAlloc(LONG);
/* ALLOCator that remembers size, allocates in extended memory.
* Does clear memory being allocated.
* NOTICE: does NOT declare "MEMF_FAST". This allows machines
* lacking extended memory to allocate within chip memory,
* assuming there is enough memory left.*/
extern UBYTE *ExtAlloc(LONG);
/* size */
/* ExtAlloc, without clearing memory. Purpose: speed when allocate
* large area that will be overwritten anyway.*/
extern UBYTE *ExtNoClearAlloc(LONG);
/* FREEs either chip or extended memory, if allocated with an allocator
* which REMembers size allocated.
* Safe: won't attempt to de-allocate a NULL pointer.
* Returns NULL so caller can do
* p = RemFree(p);
*/
extern UBYTE *RemFree(UBYTE *);
/* p */
#else /* not FDwAT */
extern UBYTE *RemAlloc();
extern UBYTE *ChipAlloc();
extern UBYTE *ExtAlloc();
extern UBYTE *RemFree();
#endif /* FDwAT */
#endif REM_ALLOC_H