textio.mod 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. IMPLEMENTATION MODULE TextIO;
  2. (* Binds the shim externals directly (avoids name shadowing with
  3. SysIO's wrappers). *)
  4. IMPORT Utf8;
  5. PROCEDURE m2write(VAR s : ARRAY OF CHAR);
  6. EXTERNAL;
  7. PROCEDURE m2writeln;
  8. EXTERNAL;
  9. PROCEDURE m2writeint(n : INTEGER);
  10. EXTERNAL;
  11. PROCEDURE m2writechar(c : CHAR);
  12. EXTERNAL;
  13. PROCEDURE WriteString(VAR s : ARRAY OF CHAR);
  14. BEGIN
  15. m2write(s)
  16. END WriteString;
  17. PROCEDURE WriteLn;
  18. BEGIN
  19. m2writeln
  20. END WriteLn;
  21. PROCEDURE WriteInt(n : INTEGER);
  22. BEGIN
  23. m2writeint(n)
  24. END WriteInt;
  25. PROCEDURE WriteCard(n : CARDINAL);
  26. BEGIN
  27. m2writeint(n)
  28. END WriteCard;
  29. PROCEDURE WriteChar(c : CHAR);
  30. BEGIN
  31. m2writechar(c)
  32. END WriteChar;
  33. PROCEDURE UWriteChar(cp : UCHAR);
  34. VAR buf : ARRAY [0 .. 3] OF CHAR;
  35. n, i : CARDINAL;
  36. BEGIN
  37. n := Utf8.Encode(cp, buf);
  38. i := 0;
  39. WHILE i < n DO m2writechar(buf[i]); INC(i) END
  40. END UWriteChar;
  41. PROCEDURE UWriteString(VAR u : ARRAY OF UCHAR);
  42. VAR i : CARDINAL;
  43. BEGIN
  44. i := 0;
  45. WHILE i <= HIGH(u) DO UWriteChar(u[i]); INC(i) END
  46. END UWriteString;
  47. PROCEDURE UWriteLn;
  48. BEGIN
  49. m2writeln
  50. END UWriteLn;
  51. END TextIO.