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

WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

History


TestIt Histories LinearLists Collections

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:
CopyingStreams Histories CrPipes TestIt [Bild der Filterkette]
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