Interne Pipelines

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]

CrPipes.od
TYPE Filter = PROCEDURE (in, out: Streams.Stream);

PROCEDURE Open(VAR out, in: Streams.Stream;
               bufmode: Streams.BufMode);
PROCEDURE Spawn(filter: Filter; in, out: Streams.Stream);

*Das Modul CrPipes ermöglicht es, auf Basis von Koroutinen und Filtern interne Pipelines zu bauen.
 
*Ein Filter ist dabei eine Prozedur, die von einer Eingabe-Verbindung liest und die Eingabe nach Modifikationen wieder ausgibt.
 
*So sieht beispielsweise ein Filter aus, der sämtliche Kleinbuchstaben in Großbuchstaben verwandelt:
 
Filters.om
PROCEDURE UpperCase(in, out: Streams.Stream);
   VAR
      ch: CHAR;
BEGIN
   WHILE Streams.ReadByte(in, ch) DO
      IF (ch >= "a") & (ch <= "z") THEN
         ch := CAP(ch);
      END;
      IF ~Streams.WriteByte(out, ch) THEN
         RETURN
      END;
   END;
END UpperCase;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005