Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Beispiele || Collections-7
DEFINITION Collections
DEFINITION Collections;
IMPORT Objects;
TYPE
Collection = POINTER TO CollectionRec;
CollectionRec = RECORD (Objects.ObjectRec) END;
(* Schnittstelle fuer Implementierungen *)
TYPE
Message = RECORD END;
AddProc = PROCEDURE (collection: Collection; object: Objects.Object);
FirstProc = PROCEDURE (collection: Collection);
NextProc = PROCEDURE (collection: Collection;
VAR object: Objects.Object) : BOOLEAN;
GetProc = PROCEDURE (collection: Collection;
index: INTEGER; VAR object: Objects.Object);
HandlerProc = PROCEDURE (collection: Collection;
VAR message: Message);
Interface = POINTER TO InterfaceRec;
InterfaceRec =
RECORD
add: AddProc; (* required *)
first: FirstProc; (* required *)
next: NextProc; (* required *)
get: GetProc; (* optional *)
handler: HandlerProc; (* optional *)
END;
CONST
get = 0; handler = 1;
TYPE
Capability = SHORTINT; (* get..handler *)
CapabilitySet = SET; (* OF Capability *)
PROCEDURE Init(collection: Collection; if: Interface; caps: CapabilitySet);
PROCEDURE Send(collection: Collection; VAR message: Message);
(* Schnittstelle fuer Klienten *)
PROCEDURE Capabilities(collection: Collection) : CapabilitySet;
PROCEDURE Add(collection: Collection; object: Objects.Object);
PROCEDURE First(collection: Collection);
PROCEDURE Next(collection: Collection;
VAR object: Objects.Object) : BOOLEAN;
PROCEDURE Get(collection: Collection;
index: INTEGER; VAR object: Objects.Object);
(* wird nicht von allen Implementierungen unterstuetzt *)
END Collections.
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Beispiele || Collections-7
Andreas Borchert, 5. November 1997