2
0

Files.txt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. MODULE Files;
  2. (* THIS IS TEXT COPY OF BlackBox-1.6 System/Mod/Files.odc *)
  3. (* DO NOT EDIT *)
  4. IMPORT Kernel;
  5. CONST
  6. shared* = TRUE; exclusive* = FALSE;
  7. dontAsk* = FALSE; ask* = TRUE; (** File.Register, Directory.New and Directory.Rename **)
  8. CONST
  9. readOnly* = 0;
  10. hidden* = 1;
  11. system* = 2;
  12. archive* = 3;
  13. stationery* = 4;
  14. TYPE
  15. Name* = ARRAY 256 OF CHAR;
  16. Type* = ARRAY 16 OF CHAR;
  17. FileInfo* = POINTER TO RECORD
  18. next*: FileInfo;
  19. name*: Name;
  20. length*: INTEGER;
  21. type*: Type;
  22. modified*: RECORD year*, month*, day*, hour*, minute*, second*: INTEGER END;
  23. attr*: SET
  24. END;
  25. LocInfo* = POINTER TO RECORD
  26. next*: LocInfo;
  27. name*: Name;
  28. attr*: SET;
  29. END;
  30. Locator* = POINTER TO ABSTRACT RECORD
  31. res*: INTEGER;
  32. END;
  33. File* = POINTER TO ABSTRACT RECORD
  34. type-: Type;
  35. init: BOOLEAN;
  36. END;
  37. Reader* = POINTER TO ABSTRACT RECORD
  38. eof*: BOOLEAN;
  39. END;
  40. Writer* = POINTER TO ABSTRACT RECORD END;
  41. Directory* = POINTER TO ABSTRACT RECORD END;
  42. VAR dir-, stdDir-: Directory;
  43. objType-, symType-, docType- : Type; (* file types *)
  44. PROCEDURE (l: Locator) This* (IN path: ARRAY OF CHAR): Locator, NEW, ABSTRACT;
  45. PROCEDURE (f: File) InitType* (type: Type), NEW;
  46. BEGIN
  47. ASSERT(~f.init, 20);
  48. f.type := type$; f.init := TRUE
  49. END InitType;
  50. PROCEDURE (f: File) Length* (): INTEGER, NEW, ABSTRACT;
  51. PROCEDURE (f: File) NewReader* (old: Reader): Reader, NEW, ABSTRACT;
  52. PROCEDURE (f: File) NewWriter* (old: Writer): Writer, NEW, ABSTRACT;
  53. PROCEDURE (f: File) Flush* (), NEW, ABSTRACT;
  54. PROCEDURE (f: File) Register* (name: Name; type: Type; ask: BOOLEAN;
  55. OUT res: INTEGER), NEW, ABSTRACT;
  56. PROCEDURE (f: File) Close* (), NEW, ABSTRACT;
  57. PROCEDURE (r: Reader) Base* (): File, NEW, ABSTRACT;
  58. PROCEDURE (r: Reader) Pos* (): INTEGER, NEW, ABSTRACT;
  59. PROCEDURE (r: Reader) SetPos* (pos: INTEGER), NEW, ABSTRACT;
  60. PROCEDURE (r: Reader) ReadByte* (OUT x: BYTE), NEW, ABSTRACT;
  61. PROCEDURE (r: Reader) ReadBytes* (VAR x: ARRAY OF BYTE; beg, len: INTEGER), NEW, ABSTRACT;
  62. PROCEDURE (w: Writer) Base* (): File, NEW, ABSTRACT;
  63. PROCEDURE (w: Writer) Pos* (): INTEGER, NEW, ABSTRACT;
  64. PROCEDURE (w: Writer) SetPos* (pos: INTEGER), NEW, ABSTRACT;
  65. PROCEDURE (w: Writer) WriteByte* (x: BYTE), NEW, ABSTRACT;
  66. PROCEDURE (w: Writer) WriteBytes* (IN x: ARRAY OF BYTE; beg, len: INTEGER), NEW, ABSTRACT;
  67. PROCEDURE (d: Directory) This* (IN path: ARRAY OF CHAR): Locator, NEW, ABSTRACT;
  68. PROCEDURE (d: Directory) New* (loc: Locator; ask: BOOLEAN): File, NEW, ABSTRACT;
  69. PROCEDURE (d: Directory) Old* (loc: Locator; name: Name; shared: BOOLEAN): File, NEW, ABSTRACT;
  70. PROCEDURE (d: Directory) Temp* (): File, NEW, ABSTRACT;
  71. PROCEDURE (d: Directory) Delete* (loc: Locator; name: Name), NEW, ABSTRACT;
  72. PROCEDURE (d: Directory) Rename* (loc: Locator; old, new: Name; ask: BOOLEAN), NEW, ABSTRACT;
  73. PROCEDURE (d: Directory) SameFile* (loc0: Locator; name0: Name; loc1: Locator;
  74. name1: Name): BOOLEAN, NEW, ABSTRACT;
  75. PROCEDURE (d: Directory) FileList* (loc: Locator): FileInfo, NEW, ABSTRACT;
  76. PROCEDURE (d: Directory) LocList* (loc: Locator): LocInfo, NEW, ABSTRACT;
  77. PROCEDURE (d: Directory) GetFileName* (name: Name; type: Type; OUT filename: Name), NEW, ABSTRACT;
  78. PROCEDURE SetDir* (d: Directory);
  79. BEGIN
  80. ASSERT(d # NIL, 20);
  81. dir := d;
  82. IF stdDir = NIL THEN stdDir := d END
  83. END SetDir;
  84. BEGIN
  85. objType := Kernel.objType;
  86. symType := Kernel.symType;
  87. docType := Kernel.docType;
  88. END Files.