Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen || Iteratoren
DEFINITION Collections
DEFINITION Collections;
IMPORT Disciplines, Iterators;
TYPE
Collection = POINTER TO CollectionRec;
CollectionRec = RECORD (Disciplines.ObjectRec) END;
CONST
any = 0; sorted = 1; reverse = 2; (* iteration modes *)
(* Schnittstelle fuer Implementierungen *)
TYPE
Message = RECORD END;
AddProc = PROCEDURE (collection: Collection; object: Disciplines.Object);
GetIteratorProc = PROCEDURE (collection: Collection;
mode: Iterators.Mode;
VAR it: Iterators.Iterator);
GetProc = PROCEDURE (collection: Collection;
index: INTEGER; VAR object: Disciplines.Object);
RemoveProc = PROCEDURE (collection: Collection;
object: Disciplines.Object);
HandlerProc = PROCEDURE (collection: Collection;
VAR message: Message);
Interface = POINTER TO InterfaceRec;
InterfaceRec =
RECORD
add: AddProc; (* required *)
getIterator: GetIteratorProc; (* required *)
get: GetProc; (* optional *)
remove: RemoveProc; (* optional *)
handler: HandlerProc; (* optional *)
END;
CONST
get = 0; remove = 1; handler = 2;
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: Disciplines.Object);
PROCEDURE GetIterator(collection: Collection; mode: Iterators.Mode;
VAR it: Iterators.Iterator);
(* mode wird von manchen Implementierungen ignoriert *)
PROCEDURE Get(collection: Collection;
index: INTEGER; VAR object: Disciplines.Object);
(* wird nicht von allen Implementierungen unterstuetzt *)
PROCEDURE Remove(collection: Collection; object: Disciplines.Object);
(* wird nicht von allen Implementierungen unterstuetzt *)
END Collections.
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen || Iteratoren
Andreas Borchert & Martin Hasch, 24. November 1997