DEADSOFTWARE

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