DEFINITION MODULE StdChans;

	(* Standard and default channels *)

IMPORT IOChan;

TYPE
  ChanId = IOChan.ChanId;
  (* Values of this type are used to identify channels *)

(* The following functions return the standard channel values.
   These channels cannot be closed *)

PROCEDURE StdInChan (): ChanId;
(* Returns a value identifying the implementation-defined standard source
   for program input *)

PROCEDURE StdOutChan (): ChanId;
(* Returns a value identifying the implementation-defined standard sink
   for program output *)

PROCEDURE StdErrChan (): ChanId;
(* Returns a value identifying the implementation-defined standard
   destination for program error messages *)

(* The null device throws away all data written to it and gives an
   immediate end of input indication on reading *)

PROCEDURE NullChan (): ChanId;
(* Returns a value identifying a channel open to the null device *)

(* The default channel values *)

PROCEDURE InChan (): ChanId;
(* Returns the identity of the current default input channel,
   as used by input procedures that do not take a channel parameter.
   Initially this is the value returned by the procedure StdInChan. *)

PROCEDURE OutChan (): ChanId;
(* Returns the identity of the current default output channel,
   as used by output procedures that do not take a channel parameter.
   Initially this is the value returned by the procedure StdOutChan. *)

PROCEDURE ErrChan (): ChanId;
(* Returns the identity of the current default error message channel.
   Initially this is the value returned by the procedure StdErrChan. *)

(* The following procedures allow for redirection of the default channels *)

PROCEDURE SetInChan (cid: ChanId);
(* Sets the current default input channel identity to that given by the
   value of the parameter cid. *)

PROCEDURE SetOutChan (cid: ChanId);
(* Sets the current default Output channel identity to that given by the
   value of the parameter cid. *)

PROCEDURE SetErrChan (cid: ChanId);
(* Sets the current default error channel identity to that given by the
   value of the parameter cid. *)


END StdChans.
