OPTIONAL (opti)
Die Implementationen
ELEMENTARY (elem)
- Datentyp(en):
Str
Tuple - Str
Map - Repräsentation:
Die Map wird als Verzeichnis im Datei-System implementiert. Die Argumentwerte
müssen Tuples von Zeichen (Strings) sein; sie entsprechen Dateinamen, wenn der
Co-Domain aus Tuples besteht (die in Dateien angelegt werden), oder
Verzeichnisnamen, wenn der Co-Domain aus Maps besteht (deren Argument-Domain
wiederum ,,Str`` sein muß). Allgemein müssen für den Co-Domain die Operationen
fread und fwrite existieren.
- Parameter: LINKLIST: Name der
Map-Implementation, die für die Objekte verwendet wird, die sich temporär im
Hauptspeicher befinden (Default: ,,linklist``)
- Anmerkungen: Gut geeignet zur Arbeit mit dem
Datei-System von UNIX.
- Datentyp(en):
Token
Co-Domain - Repräsentation:
Die Map-Werte werden auf dem Heap angelegt und durch Pointer dereferenziert.
Die Sammlung der Pointer entspricht dem Datentyp ,,Token``, für den keine
Repräsentation vorgegeben ist; demzufolge sind Operationen mit Mengen von
Argumentwerten (wie forall, union) nicht möglich!
- Parameter: keine
- Anmerkungen: Sehr schneller Zugriff auf die
Map-Werte.
- Alle Operationen außer den folgenden erzeugen einen Laufzeitfehler:
mk_emptyovwrt1union1selsub1ext
- In der Testphase eines Programms sollte eine andere Implementation
(z.B. ``heapmap``) benutzt werden, da die Operationen bestimmte Tests nicht
durchführen.
- Datentyp(en):
Token
Co-Domain - Repräsentation:
Die Map-Werte werden auf dem Heap angelegt und durch Pointer dereferenziert.
Die Sammlung der Pointer entspricht dem Datentyp ,,Token``, der hier als Set
von Pointern implementiert wird. Dadurch sind im Gegensatz zur
``heap``-Implementation alle Operationen vorhanden.
- Parameter: MACROS: Operationen werden (wenn
möglich) durch Makros realisiert, dadurch wird das Programm schneller, aber
größer (Flag, Default: 0)
- SAVE: Prüfungen auf legale Zugriffe werden eingefügt (Flag,
Default: 0)
- ALLOC: Speicherallokations-Strategie für den Heap (Default:
,,malloc``)
- DOMIMPL: Implementation des Set der Argumentwerte ( Default:
,,linklist``)
- Anmerkungen: Schneller Zugriff auf die Map-Werte
-- etwas langsamer als ``heap``
- Datentyp(en): Beliebige Elementtypen
- Repräsentation:
Die Paare werden in einer verketteten Liste gespeichert.
- Parameter: ALLOC: Strategie der
Speicherallokation (Default: ,,vmalloc``)
- Anmerkungen: Keine Einschränkungen bei den
Elementtypen.
- Langsam.
- Datentyp(en):
Nat0
Co-Domain - Nat1
Co-Domain - Intg
Co-Domain - Char
Co-Domain - Unterbereich
Co-Domain - Repräsentation:
[ Co-Domain ]
*
Die Paare werden in ein Tuple eingetragen (die Tuple-Indizes entsprechen den
Argumentwerten der Map). Ein nicht vorhandenes Paar wird durch den Eintrag
nil im Tuple gekennzeichnet. - Parameter:TUPLIMPL: Implementation des
zugrundeliegenden Tuple (Default: ,,array``)
- OPTIMPL: Implementation des Optionals (Default:
,,elemonil(NILVAL=-1)``)
- LB_ELEM1: Untergrenze des Argument-Domains (Default: für jeden
Skalartyp ist eine Konstante ,,lb_xxxx`` definiert)
- Anmerkungen: Der Argument-Domain muß eine feste
Untergrenze haben. Bei den oben genannten Datentypen ist das erfüllt.
- Wird am häufigsten mit einem Unterbereich als Argument-Domain
eingesetzt.
- Die Tuple-Implementation sollte ,,array`` sein, da der Element-Zugriff
dann sehr schnell ist.
- Angabe der Untergrenze bei ,,Intg`` ist sinnvoll!
- Beispiel:
*
DOMAINS
*
Domain = Nat0-m->
Nat1
*
IMPLEMENTATIONS
*
Domain = scaldom(OPTIMPL=,,elemonil(NILVAL=0)``,lb_elem1 = 0)
*
OPTIONAL (opti)
Die Implementationen
ELEMENTARY (elem)
VDM Class Library