Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

WS 2000/01 || 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 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele || Collections-7

Andreas Borchert, 13. November 2000