Als generische formale Typen sind erlaubt:
(<>)
,(<>)
für einen beliebigen diskreten Typ; bei der Implementierung sind
für Variable dieses Typs alle Operationen erlaubt, die für diskrete
Typen erlaubt sind. Der Ausdruck
range <> steht für ganzzahlige Typen,
mod <> für modulare Typen,
digits <> für Gleitkommazahlen,
delta <> für Festkommazahlen und
delta <> digits <> für Dezimalzahlen;
bei der Implementierung stehen die entsprechenden
Operationen zur Verfügung.
Für Array-Typen sind z.B. die Operationen des Zugriffs auf Komponenten und Slices erlaubt. Für Access-Typen kann man z.B. den New-Operator verwenden. Für private Typen ist nur die Zuweisung und die Abfrage auf Gleichheit und Ungleichheit erlaubt. Für limitierte private Typen sind nicht einmal diese erlaubt, daher sind alle benötigten Operationen mit den im Abschnitt 8.4 näher behandelten generischen Unterprogrammen zu realisieren.
Die folgende Tabelle gibt einen Überblick, welche Typen durch welche formale generische Typen festgelegt werden.
Formaler generischer Typ | Festgelegter Typ |
limited private | die Klasse aller Typen |
private | die Klasse aller nicht limitierten Typen |
tagged limited private | die Klasse aller getaggten Typen |
tagged private | die Klasse aller nicht limitierten getaggten Typen |
Beispiele sind
type Element is private;
Weitere Beispiele finden sich in Kapitel 12 und 13.
Johann Blieberger