Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele
History
Dieses Beispiel demonstriert die Einrichtung eines
Stream-Filters anhand eines History-Filters, der
die Möglichkeit offeriert, alte Eingabezeilen zu wiederholen,
ohne sie neu eintippen zu müssen.
Aus der
letzten Variante von Collections
stammen die Module Collections und LinearLists,
die zur Verwaltung der bereits gesehenen Eingabezeilen dienen.
- Collections
-
Wurde unverändert aus einem
früheren Beispiel übernommen.
- Histories
-
Hier wird die Filterkette aufgebaut, die später von dem
Testprogramm vor Streams.stdin eingeschoben wird:
Die beteiligten Stream-Objekte sind blau eingezeichnet,
die darauf operierenden Module gelb und
die durch
Forwarders.Forward
eingerichteten Abhängigkeiten werden durch rote Pfeile repräsentiert.
- LinearLists
-
Wurde (fast unverändert) von einem
früherem Beispiel
übernommen. Um das Beispiel kurz zu halten, wurde nur
die Unterstützung von PrintableObjects gestrichen.
- TestIt
-
Ein kleines Testprogramm zu Histories, das den
Filter vor Streams.stdin einbaut.
Hier eine Demositzung:
oberon$ testit
1% Dies ist die erste Zeile
Got: Dies ist die erste Zeile
2% und hier folgte die zweite
Got: und hier folgte die zweite
3% und hier die dritte
Got: und hier die dritte
4% !2
Got: und hier folgte die zweite
5% !1
Got: Dies ist die erste Zeile
6% !7
Got: !7
7% oberon$
Die Prompts erscheinen natürlich nur, wenn es eine Möglichkeit
gibt, auf den Eingabekanal auch zu schreiben. Dies ist bei
der Verwendung einer UNIX-Pipeline nicht der Fall:
oberon$ echo Eine Zeile | testit
Got: Eine Zeile
oberon$
Die Quellen stehen als Shell-Archiv zur Verfügung.
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele
Andreas Borchert, 4. Dezember 2000