iochan.def 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. DEFINITION MODULE IOChan;
  2. (* A channel abstraction over the runtime streams and files (an
  3. ISO-style ChanId). ChanId is opaque: the standard channels wrap
  4. stdio streams, and OpenRead/OpenWrite wrap a file. A failed open
  5. returns a closed channel (IsOpen = FALSE); operations on a closed
  6. channel are safe no-ops (ReadChar returns 0C). *)
  7. TYPE ChanId;
  8. (* --- standard channels --- *)
  9. PROCEDURE StdInChan() : ChanId;
  10. PROCEDURE StdOutChan() : ChanId;
  11. PROCEDURE StdErrChan() : ChanId;
  12. (* --- file channels --- *)
  13. PROCEDURE OpenRead(VAR name : ARRAY OF CHAR) : ChanId;
  14. PROCEDURE OpenWrite(VAR name : ARRAY OF CHAR) : ChanId;
  15. PROCEDURE Close(VAR cid : ChanId);
  16. PROCEDURE IsOpen(cid : ChanId) : BOOLEAN;
  17. (* --- operations --- *)
  18. PROCEDURE ReadChar(cid : ChanId) : CHAR;
  19. PROCEDURE ReadString(cid : ChanId; VAR s : ARRAY OF CHAR); (* one line *)
  20. PROCEDURE ReadInt(cid : ChanId) : INTEGER;
  21. PROCEDURE WriteChar(cid : ChanId; c : CHAR);
  22. PROCEDURE WriteString(cid : ChanId; VAR s : ARRAY OF CHAR);
  23. PROCEDURE WriteInt(cid : ChanId; n : INTEGER);
  24. PROCEDURE WriteLn(cid : ChanId);
  25. END IOChan.