files.mod 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. IMPLEMENTATION MODULE Files;
  2. (* Binds the shim file routines directly. Handles are C FILE*
  3. pointers, typed as File (opaque, pointer-sized). *)
  4. PROCEDURE m2fopenread(VAR name : ARRAY OF CHAR) : File;
  5. EXTERNAL;
  6. PROCEDURE m2fopenwrite(VAR name : ARRAY OF CHAR) : File;
  7. EXTERNAL;
  8. PROCEDURE m2fclose(h : File);
  9. EXTERNAL;
  10. PROCEDURE m2fgetc(h : File) : CHAR;
  11. EXTERNAL;
  12. PROCEDURE m2freadint(h : File) : INTEGER;
  13. EXTERNAL;
  14. PROCEDURE m2fputc(h : File; c : CHAR);
  15. EXTERNAL;
  16. PROCEDURE m2fwriteint(h : File; v : INTEGER);
  17. EXTERNAL;
  18. PROCEDURE m2fputs(h : File; VAR s : ARRAY OF CHAR);
  19. EXTERNAL;
  20. PROCEDURE m2fwriteln(h : File);
  21. EXTERNAL;
  22. PROCEDURE OpenRead(VAR name : ARRAY OF CHAR) : File;
  23. BEGIN
  24. RETURN m2fopenread(name)
  25. END OpenRead;
  26. PROCEDURE OpenWrite(VAR name : ARRAY OF CHAR) : File;
  27. BEGIN
  28. RETURN m2fopenwrite(name)
  29. END OpenWrite;
  30. PROCEDURE Close(f : File);
  31. BEGIN
  32. m2fclose(f)
  33. END Close;
  34. PROCEDURE ReadChar(f : File) : CHAR;
  35. BEGIN
  36. RETURN m2fgetc(f)
  37. END ReadChar;
  38. PROCEDURE ReadInt(f : File) : INTEGER;
  39. BEGIN
  40. RETURN m2freadint(f)
  41. END ReadInt;
  42. PROCEDURE WriteChar(f : File; c : CHAR);
  43. BEGIN
  44. m2fputc(f, c)
  45. END WriteChar;
  46. PROCEDURE WriteInt(f : File; n : INTEGER);
  47. BEGIN
  48. m2fwriteint(f, n)
  49. END WriteInt;
  50. PROCEDURE WriteString(f : File; VAR s : ARRAY OF CHAR);
  51. BEGIN
  52. m2fputs(f, s)
  53. END WriteString;
  54. PROCEDURE WriteLn(f : File);
  55. BEGIN
  56. m2fwriteln(f)
  57. END WriteLn;
  58. END Files.