|##########| |#MAGIC #|CLABLLEP |#PROJECT #|"ImportHelp" |#PATHS #|"StdProject" |#FLAGS #|-x---x--x---x-x----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE Levels; FROM System IMPORT PROC; VAR ActLevel : INTEGER; (* Aktuelle Aktions Ebene *) (*----------------------------------------------------------------------------*) (* 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 Levels 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 : Ruft eine neue Aktionstufe auf. *) (* Parameter : Begin <- Procedure, die als Aktionsstufe aufgerufen werden *) (* soll. *) (* Close <- Abschlußprozedur *) (*----------------------------------------------------------------------------*) PROCEDURE Call(Begin,Close : PROC); (*----------------------------------------------------------------------------*) (* Funktion : Terminiert eine oder mehrere Aktionsebenen. *) (*----------------------------------------------------------------------------*) PROCEDURE Terminate(Level : INTEGER); GROUP MemGrp = New,Dispose,DisposeAll,CheckNew,Allocate,CheckAllocate,AllocChip, CheckAllocChip; LevelGrp = ActLevel,Call,Terminate; All = MemGrp,LevelGrp; END Levels.