| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- IMPLEMENTATION MODULE IOChan;
- (* A ChanId is a C FILE* handle; all operations go through SysShim
- (which degrades a NIL handle to a safe no-op / 0C). *)
- IMPORT SysShim;
- TYPE ChanId = ADDRESS;
- PROCEDURE StdInChan() : ChanId;
- BEGIN
- RETURN SysShim.stdin()
- END StdInChan;
- PROCEDURE StdOutChan() : ChanId;
- BEGIN
- RETURN SysShim.stdout()
- END StdOutChan;
- PROCEDURE StdErrChan() : ChanId;
- BEGIN
- RETURN SysShim.stderr()
- END StdErrChan;
- PROCEDURE ReadChar(cid : ChanId) : CHAR;
- BEGIN
- RETURN SysShim.fgetc(cid)
- END ReadChar;
- PROCEDURE WriteChar(cid : ChanId; c : CHAR);
- BEGIN
- SysShim.fputc(cid, c)
- END WriteChar;
- PROCEDURE WriteString(cid : ChanId; VAR s : ARRAY OF CHAR);
- BEGIN
- SysShim.fputs(cid, s)
- END WriteString;
- PROCEDURE WriteLn(cid : ChanId);
- BEGIN
- SysShim.fwriteln(cid)
- END WriteLn;
- PROCEDURE WriteInt(cid : ChanId; n : INTEGER);
- BEGIN
- SysShim.fwriteint(cid, n)
- END WriteInt;
- END IOChan.
|