iochan.mod 914 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. IMPLEMENTATION MODULE IOChan;
  2. (* A ChanId is a C FILE* handle; all operations go through SysShim
  3. (which degrades a NIL handle to a safe no-op / 0C). *)
  4. IMPORT SysShim;
  5. TYPE ChanId = ADDRESS;
  6. PROCEDURE StdInChan() : ChanId;
  7. BEGIN
  8. RETURN SysShim.stdin()
  9. END StdInChan;
  10. PROCEDURE StdOutChan() : ChanId;
  11. BEGIN
  12. RETURN SysShim.stdout()
  13. END StdOutChan;
  14. PROCEDURE StdErrChan() : ChanId;
  15. BEGIN
  16. RETURN SysShim.stderr()
  17. END StdErrChan;
  18. PROCEDURE ReadChar(cid : ChanId) : CHAR;
  19. BEGIN
  20. RETURN SysShim.fgetc(cid)
  21. END ReadChar;
  22. PROCEDURE WriteChar(cid : ChanId; c : CHAR);
  23. BEGIN
  24. SysShim.fputc(cid, c)
  25. END WriteChar;
  26. PROCEDURE WriteString(cid : ChanId; VAR s : ARRAY OF CHAR);
  27. BEGIN
  28. SysShim.fputs(cid, s)
  29. END WriteString;
  30. PROCEDURE WriteLn(cid : ChanId);
  31. BEGIN
  32. SysShim.fwriteln(cid)
  33. END WriteLn;
  34. PROCEDURE WriteInt(cid : ChanId; n : INTEGER);
  35. BEGIN
  36. SysShim.fwriteint(cid, n)
  37. END WriteInt;
  38. END IOChan.