// $Id$ $functor PStream (Stream : IStream) (Position : Stream-Position) : IndexedStream; $use Access Arithm Box; $func PStream stream = s.pstream; PStream stream e.name = >; *** $func Expr-Open expr (e.name) = stream; Expr-Open expr (e.name) = e.name>; *** $func File-Open e.filename = stream; *** $func File-Close stream = ; File-Open e.filename = e.filename>; File-Close s.pstream, { : stream t.pos = ; = $fail; }; *** $func? Getc stream = term; Getc stream = : term, term; *** $func? Gets stream s.n = expr; Gets s.pstream s.n, { : stream t.pos = :: expr, >; = $fail; }; *** $func Ungets stream expr = ; /* * Warning! May produce negative values for column. */ Ungets s.pstream expr, { : stream t.pos = , >; = $fail; }; *** $func? Get-Delim stream t.delim = expr; Get-Delim s.pstream t.delim, { : stream t.pos = :: expr, >; = $fail; }; *** $func? Get-Line stream = expr; Get-Line stream = ; *** $func Get-While stream s.pred = expr; Get-While s.pstream s.pred, { : stream t.pos = :: expr, >; = $fail; }; *** $func? End-of-Stream? stream = ; End-of-Stream? s.pstream, { : stream t.pos = ; = $fail; }; *** $func Name stream = e.name; *** $func Row stream = s.row; *** $func Column stream = s.column; Name s.pstream, { : stream t.pos = ; = $fail; }; Row s.pstream, { : stream t.pos = ; = $fail; }; Column s.pstream, { : stream t.pos = ; = $fail; }; *** $func Current-Pos stream = t.position; Current-Pos s.pstream, { : stream t.pos = t.pos; = $fail; };