|##########| |#MAGIC #|CLABLMEL |#PROJECT #|"ImportHelp" |#PATHS #|"StdProject" |#FLAGS #|-x---x--x----xx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE Heap; (* $A- *) FROM Resources IMPORT NotEnoughMemory,MemoryNotAllocated, NILDisposed; (*----------------------------------------------------------------------------*) (* Funktion : Alloziert ein Speicherstück, in der Größe des Typs von p. *) (* Parameter : p -> Zeigervariable, der die Adresse des allozierten *) (* Speicherstücks zugewießen wird. *) (* Bemerkung : p darf kein offener Typ sein, war Allozierung nicht möglich, *) (* wird ein Laufzeitfehler ausgelößt *) (*----------------------------------------------------------------------------*) PROCEDURE New(VAR p : ANYPTR); (*----------------------------------------------------------------------------*) (* Funktion : Wie New, jedoch erhält man einen Boolean-Wert zurück, ob die- *) (* Allozierung möglich war, oder nicht. *) (*----------------------------------------------------------------------------*) PROCEDURE CheckNew(VAR p : ANYPTR):BOOLEAN; (*----------------------------------------------------------------------------*) (* Funktion : Gibt ein Speicherstück wieder frei. *) (* Parameter : p <- Zieger auf das Speicherstück, das Freigegeben werden soll.*) (*----------------------------------------------------------------------------*) PROCEDURE Dispose(VAR p : ANYPTR); (*----------------------------------------------------------------------------*) (* Funktion : Gibt alle mit Heap allozierten Speicherstück wieder frei. *) (* Parameter : p <- Zeiger auf das Speicherstück, das Freigegeben werden soll.*) (*----------------------------------------------------------------------------*) PROCEDURE DisposeAll; (*----------------------------------------------------------------------------*) (* Funktion : Alloziert ein Speicherstück der Länge size. *) (* Parameter : p -> Zeiger auf allozierte Speicherstück. *) (* size <- Anzahl Bytes, die alloziert werden sollen. *) (*----------------------------------------------------------------------------*) PROCEDURE Allocate(VAR p : ANYPTR;size : LONGINT); (*----------------------------------------------------------------------------*) (* Funktion : Wie Allocate, jedoch mit Rückgabewert ob ein Fehler auftrat. *) (*----------------------------------------------------------------------------*) PROCEDURE CheckAllocate(VAR p : ANYPTR;size : LONGINT):BOOLEAN; (*----------------------------------------------------------------------------*) (* Funktion : Wie Allocate, jedoch muß das allozierte Speicherstück im *) (* Chipmem liegen. *) (*----------------------------------------------------------------------------*) PROCEDURE AllocChip(VAR p : ANYPTR;size : LONGINT); (*----------------------------------------------------------------------------*) (* Funktion : Wie AllocChip, jedoch mit Rückgabewert ob ein Fehler auftrat. *) (*----------------------------------------------------------------------------*) PROCEDURE CheckAllocChip(VAR p : ANYPTR;size : LONGINT):BOOLEAN; (*----------------------------------------------------------------------------*) (* Funktion : Ermittelt den noch freien Speicherplatz. *) (* Parameter : -> Freier Speicher in Bytes. *) (*----------------------------------------------------------------------------*) PROCEDURE Avail():LONGINT; GROUP All = New,CheckNew,Dispose,DisposeAll,Allocate,CheckAllocate,AllocChip, CheckAllocChip,Avail; END Heap.