|
PROCEDURE InstallInputFilter(filter: CrPipes.Filter); VAR out, in: Streams.Stream; BEGIN CrPipes.Open(out, in, Streams.onebuf); CrPipes.Spawn(filter, Streams.stdin, out); Streams.stdin := in; END InstallInputFilter; |
Mit CrPipes.Open wird eine neue Pipeline
erzeugt. Ausgaben, die auf out erfolgen, können danach
von in gelesen werden. Allerdings funktioniert dies
hier nur dann, wenn der Schreiber und der Leser verschiedene
Koroutinen sind.
| |
Mit CrPipes.Spawn wird eine neue Koroutine
erzeugt, die später den angegebenen Filter verwenden wird.
Hier wird der Filter von Streams.stdin lesen und in
das schreibende Ende der zuvor erzeugten Pipeline schreiben.
| |
Danach wird Streams.stdin auf das lesende Ende
der Pipeline gesetzt. Damit werden alle Eingaben von
Streams.stdin implizit gefiltert.
| |
Bei der Verwendung von CrPipes sind keine
Koroutinen-Operationen mehr zu sehen und die
Filter-Prozeduren können auch ganz normal enden.
|
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005 |