gm2-libs/StdIO#

DEFINITION MODULE StdIO ;

EXPORT QUALIFIED ProcRead, ProcWrite,
                 Read, Write,
                 PushOutput, PopOutput, GetCurrentOutput,
                 PushInput, PopInput, GetCurrentInput ;

TYPE
ProcWrite (type)
   ProcWrite = PROCEDURE (CHAR) ;
ProcRead (type)
   ProcRead  = PROCEDURE (VAR CHAR) ;

(*
   Read - is the generic procedure that all higher application layers
          should use to receive a character.
*)

Read
PROCEDURE Read (VAR ch: CHAR) ;

(*
   Write - is the generic procedure that all higher application layers
           should use to emit a character.
*)

Write
PROCEDURE Write (ch: CHAR) ;

(*
   PushOutput - pushes the current Write procedure onto a stack,
                any future references to Write will actually invoke
                procedure, p.
*)

PushOutput
PROCEDURE PushOutput (p: ProcWrite) ;

(*
   PopOutput - restores Write to use the previous output procedure.
*)

PopOutput
PROCEDURE PopOutput ;

(*
   GetCurrentOutput - returns the current output procedure.
*)

GetCurrentOutput
PROCEDURE GetCurrentOutput () : ProcWrite ;

(*
   PushInput - pushes the current Read procedure onto a stack,
               any future references to Read will actually invoke
               procedure, p.
*)

PushInput
PROCEDURE PushInput (p: ProcRead) ;

(*
   PopInput - restores Write to use the previous output procedure.
*)

PopInput
PROCEDURE PopInput ;

(*
   GetCurrentInput - returns the current input procedure.
*)

GetCurrentInput
PROCEDURE GetCurrentInput () : ProcRead ;

END StdIO.