123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- MODULE Files;
- (* THIS IS TEXT COPY OF BlackBox-1.6 System/Mod/Files.odc *)
- (* DO NOT EDIT *)
- IMPORT Kernel;
- CONST
- shared* = TRUE; exclusive* = FALSE;
- dontAsk* = FALSE; ask* = TRUE; (** File.Register, Directory.New and Directory.Rename **)
- CONST
- readOnly* = 0;
- hidden* = 1;
- system* = 2;
- archive* = 3;
- stationery* = 4;
- TYPE
- Name* = ARRAY 256 OF CHAR;
- Type* = ARRAY 16 OF CHAR;
- FileInfo* = POINTER TO RECORD
- next*: FileInfo;
- name*: Name;
- length*: INTEGER;
- type*: Type;
- modified*: RECORD year*, month*, day*, hour*, minute*, second*: INTEGER END;
- attr*: SET
- END;
- LocInfo* = POINTER TO RECORD
- next*: LocInfo;
- name*: Name;
- attr*: SET;
- END;
- Locator* = POINTER TO ABSTRACT RECORD
- res*: INTEGER;
- END;
- File* = POINTER TO ABSTRACT RECORD
- type-: Type;
- init: BOOLEAN;
- END;
- Reader* = POINTER TO ABSTRACT RECORD
- eof*: BOOLEAN;
- END;
- Writer* = POINTER TO ABSTRACT RECORD END;
- Directory* = POINTER TO ABSTRACT RECORD END;
- VAR dir-, stdDir-: Directory;
- objType-, symType-, docType- : Type; (* file types *)
- PROCEDURE (l: Locator) This* (IN path: ARRAY OF CHAR): Locator, NEW, ABSTRACT;
- PROCEDURE (f: File) InitType* (type: Type), NEW;
- BEGIN
- ASSERT(~f.init, 20);
- f.type := type$; f.init := TRUE
- END InitType;
- PROCEDURE (f: File) Length* (): INTEGER, NEW, ABSTRACT;
- PROCEDURE (f: File) NewReader* (old: Reader): Reader, NEW, ABSTRACT;
- PROCEDURE (f: File) NewWriter* (old: Writer): Writer, NEW, ABSTRACT;
- PROCEDURE (f: File) Flush* (), NEW, ABSTRACT;
- PROCEDURE (f: File) Register* (name: Name; type: Type; ask: BOOLEAN;
- OUT res: INTEGER), NEW, ABSTRACT;
- PROCEDURE (f: File) Close* (), NEW, ABSTRACT;
-
- PROCEDURE (r: Reader) Base* (): File, NEW, ABSTRACT;
- PROCEDURE (r: Reader) Pos* (): INTEGER, NEW, ABSTRACT;
- PROCEDURE (r: Reader) SetPos* (pos: INTEGER), NEW, ABSTRACT;
- PROCEDURE (r: Reader) ReadByte* (OUT x: BYTE), NEW, ABSTRACT;
- PROCEDURE (r: Reader) ReadBytes* (VAR x: ARRAY OF BYTE; beg, len: INTEGER), NEW, ABSTRACT;
-
- PROCEDURE (w: Writer) Base* (): File, NEW, ABSTRACT;
- PROCEDURE (w: Writer) Pos* (): INTEGER, NEW, ABSTRACT;
- PROCEDURE (w: Writer) SetPos* (pos: INTEGER), NEW, ABSTRACT;
- PROCEDURE (w: Writer) WriteByte* (x: BYTE), NEW, ABSTRACT;
- PROCEDURE (w: Writer) WriteBytes* (IN x: ARRAY OF BYTE; beg, len: INTEGER), NEW, ABSTRACT;
-
- PROCEDURE (d: Directory) This* (IN path: ARRAY OF CHAR): Locator, NEW, ABSTRACT;
- PROCEDURE (d: Directory) New* (loc: Locator; ask: BOOLEAN): File, NEW, ABSTRACT;
- PROCEDURE (d: Directory) Old* (loc: Locator; name: Name; shared: BOOLEAN): File, NEW, ABSTRACT;
- PROCEDURE (d: Directory) Temp* (): File, NEW, ABSTRACT;
- PROCEDURE (d: Directory) Delete* (loc: Locator; name: Name), NEW, ABSTRACT;
- PROCEDURE (d: Directory) Rename* (loc: Locator; old, new: Name; ask: BOOLEAN), NEW, ABSTRACT;
- PROCEDURE (d: Directory) SameFile* (loc0: Locator; name0: Name; loc1: Locator;
- name1: Name): BOOLEAN, NEW, ABSTRACT;
- PROCEDURE (d: Directory) FileList* (loc: Locator): FileInfo, NEW, ABSTRACT;
- PROCEDURE (d: Directory) LocList* (loc: Locator): LocInfo, NEW, ABSTRACT;
- PROCEDURE (d: Directory) GetFileName* (name: Name; type: Type; OUT filename: Name), NEW, ABSTRACT;
-
- PROCEDURE SetDir* (d: Directory);
- BEGIN
- ASSERT(d # NIL, 20);
- dir := d;
- IF stdDir = NIL THEN stdDir := d END
- END SetDir;
- BEGIN
- objType := Kernel.objType;
- symType := Kernel.symType;
- docType := Kernel.docType;
- END Files.
|