|##########| |#MAGIC #|CLABLLBE |#PROJECT #|"ImportHelp" |#PATHS #|"StdProject" |#FLAGS #|-x---x--x----xx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|x-xx-x---------- |##########| DEFINITION MODULE Buffers; EXCEPTION | | BufferEmpty : Durch Get, falls der Puffer bereits leer ist | BufferEmpty : "Buffer empty"; | | NotInBuffer : Durch Remove, falls Objekt nicht im Puffer | NotInBuffer : "Object not in buffer"; DEFINITION MODULE Queues(type : ANYPTR); | | Queues | | FIFO-Puffer: | | Elemente können beliebig in den Puffer eingefügt werden und in der | selben Reihenfolge wieder ausgelesen werden, typische Anwendung ist | eine Warteschlange z.B. Tastaturpuffer. | | Methoden: | | Init : Initialisieren, muß vor der ersten Verwendung geschehen. | | Remove_All : Vernichtet den Puffer, die Elemente die sich zu dieser | Zeit noch darin befinden, werden nicht angetastet. | Delete_All : Vernichtet den Puffer, die Elemente die sich zu dieser | Zeit noch darin befinden, werden durch Dispose | freigegeben. | Destruct_All : Vernichtet den Puffer, für alle Elemente die sich zu | dieser Zeit noch darin befinden, wird die Destructor | Prozedur aufgerufen. | Remove : Entfernt ein Element aus dem Puffer. | | Put : Ein Element in den Puffer einfügen. | Get : Ein Element aus dem Puffer nehmen. | | IsEmpty : Liefert TRUE, wenn der Puffer leer ist. | TYPE QueueNodePtr = HIDDEN; Queue = RECORD first : QueueNodePtr; END; Destructor = PROCEDURE(p : type); PROCEDURE Init(VAR q : Queue); PROCEDURE Remove_All(VAR q : Queue); PROCEDURE Remove(VAR q : Queue;data : type); PROCEDURE Destruct_All(VAR q : Queue;des : Destructor); PROCEDURE Delete_All(VAR q : Queue); PROCEDURE Put(VAR q : Queue;data : type); PROCEDURE Get(VAR q : Queue):type; PROCEDURE IsEmpty(VAR q : Queue):BOOLEAN; END Queues; DEFINITION MODULE Stacks(type : ANYPTR); | | Stacks | | LIFO-Puffer: | | Elemente können beliebig in den Puffer eingefügt werden und in der | umgekehrten Reihenfolge wieder ausgelesen werden, typische Anwendung ist | ein Sicherungsspeicher, z.B. Undo - Puffer | | Methoden: | | Init : Initialisieren, muß vor der ersten Verwendung geschehen. | | Remove_All : Vernichtet den Puffer, die Elemente die sich zu dieser | Zeit noch darin befinden, werden nicht angetastet. | Delete_All : Vernichtet den Puffer, die Elemente die sich zu dieser | Zeit noch darin befinden, werden durch Dispose | freigegeben. | Destruct_All : Vernichtet den Puffer, für alle Elemente die sich zu | dieser Zeit noch darin befinden, wird die Destructor | Prozedur aufgerufen. | Remove : Entfernt ein Element aus dem Puffer. | | Put : Ein Element in den Puffer einfügen. | Get : Ein Element aus dem Puffer nehmen. | | IsEmpty : Liefert TRUE, wenn der Puffer leer ist. | TYPE StackNodePtr = HIDDEN; Stack = RECORD first : StackNodePtr; END; Destructor = PROCEDURE(p : type); PROCEDURE Init(VAR q : Stack); PROCEDURE Remove_All(VAR q : Stack); PROCEDURE Remove(VAR q : Stack;data : type); PROCEDURE Destruct_All(VAR q : Stack;des : Destructor); PROCEDURE Delete_All(VAR q : Stack); PROCEDURE Put(VAR q : Stack;data : type); PROCEDURE Get(VAR q : Stack):type; PROCEDURE IsEmpty(VAR q : Stack):BOOLEAN; END Stacks; END Buffers.