home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Global Amiga Experience
/
globalamigaexperience.iso
/
compressed
/
development
/
clusterdemo.dms
/
clusterdemo.adf
/
Modules.lha
/
modules
/
txt
/
FileSystem.def
< prev
next >
Wrap
Text File
|
1994-05-25
|
6KB
|
226 lines
|##########|
|#MAGIC #|CLABLLAF
|#PROJECT #|"ImportAll"
|#PATHS #|"StdProject"
|#FLAGS #|xx-x-x--x---xxx-----------------
|#USERSW #|--------------------------------
|#USERMASK#|--------------------------------
|#SWITCHES#|xx---xxxxx------
|##########|
DEFINITION MODULE FileSystem;
FROM System IMPORT Regs;
FROM Resources IMPORT NotEnoughMemory,ContextPtr;
FROM T_Dos IMPORT DosExceptionGrp;
EXCEPTION
BadFile : "Bad filehandle";
NoInFile : "InFile not opened";
NoOutFile : "OutFile not opened";
OutFileOpenedTwice : "OutFile allready open";
InFileOpenedTwice : "InFile allready open";
GROUP
FsExceptionGrp = NoInFile,NoOutFile,NotEnoughMemory,T_Dos.DosExceptionGrp;
TYPE
File = HIDDEN;
(*============== Global File =================================================*)
|
| Funktion : Öffnet eine Datei
| Parameter : f <-> Pointer der die Datei spezifiziert
| name <- Name der Datei
| new <- Flag, ob eine neue oder eine bestehende Datei
| geöffnet werden soll
| size <- Größe des Puffers für dei Datei in Bytes
| context <- Context, zu dem das File geöffnet werden soll,
| ist dieser NIL, wird der ActContext verwendet.
|
PROCEDURE Open(VAR f : File;
REF name : STRING;
new : BOOLEAN := FALSE;
size : LONGINT := $1000;
context : ContextPtr := NIL);
|
| Funktion : Schließt eine Datei
| Parameter : f <- Zeiger der Datei, dei geschlossen werden soll
| Bemerkung : Am Programmende sollten alle Files wieder geschlossen werden
|
PROCEDURE Close(VAR f : File);
|
| Funktion : Liefert die aktuelle Länge eines Files
| Parameter : f <- File dessen Länge ermittelt werden soll
| -> Länge des Files in Bytes
|
PROCEDURE Length(f : File):LONGINT;
(*============== Input =======================================================*)
|
| Funktion : Ließt ein Zeichen
| Parameter : f <- File von dem gelesen werden soll
| c -> Gelesenes Zeichen.
|
PROCEDURE Read(f : File;VAR c : CHAR);
|
| Funktion : Ließt einen beliebigen Typen fester Länge
| Parameter : f <- File von dem gelesen werden soll
| block -> gelesene Variable.
|
PROCEDURE ReadBlock(f : File;VAR block : ANYTYPE);
|
| Funktion : Ließt eine Anzahl Bytes und schreibt sie in den Speicher
| Parameter : f <- File von dem gelesen werden soll
| pos -> Stellen ab der die Daten in den Speicher geschrieben
| werden sollen.
| len -> Anzahl der Zeichen, die gelesen werden sollen.
|
PROCEDURE ReadBytes(f : File;pos : ANYPTR;len : LONGINT);
(*============== Output ======================================================*)
|
| Funktion : Schreibt ein Zeichen
| Parameter : f <- File in das geschrieben werden soll
| c -> zu schreibendes Zeichen.
|
PROCEDURE Write(f : File;c : CHAR);
|
| Funktion : Schreibt einen beliebigen Typen fester Länge
| Parameter : f <- File in das geschrieben werden soll.
| block -> zu schreibenden Variable.
|
PROCEDURE WriteBlock(f : File;REF block : ANYTYPE);
|
| Funktion : Schreibt eine Anzahl Bytes aus dem Speicher auf Disk.
| Parameter : f <- File in das geschrieben werden soll.
| pos -> Speicherstellen von der ab die Daten geschrieben
| werden sollen.
| len -> Anzahl der Zeichen, die gschrieben sollen.
|
PROCEDURE WriteBytes(f : File;pos : ANYPTR;len : LONGINT);
|
|
| Funktion : Gibt die Position des internen Schreib/Lesezeiger relativ zum
| Dateianfang aus.
| Parameter : f <- File von dem man die Information haben will.
| -> Position in Bytes.
|
PROCEDURE Pos(f : File):LONGINT;
|
| Funktion : Setz den internen Schreib/Lesezeiger auf die angegebene
| Position relativ zum Dateianfang.
| Parameter : f <- File dessen Zeiger versetzt werden soll.
| pos -> neue Position in Bytes.
|
PROCEDURE SetPos(f : File;pos : LONGINT);
|
| Funktion : Liefert TRUE zurück, wenn versucht wurde über das Dateiende
| hinaus zu lesen.
| Parameter : f <- File das geprüft werden soll
| -> TRUE wenn Dateiende erreicht wurde.
|
PROCEDURE Eof(f : File):BOOLEAN;
GROUP
FileIOGrp = Open,File,Close,Length,Read,ReadBlock,
ReadBytes,Write,WriteBlock,WriteBytes,Pos,SetPos,Eof;
(*============== Quickfiles ==================================================*)
|
| Die folgenden Quickfile Funktionen entsprechen in ihrer Funktion den oben
| aufgeführten näheres finden Sie in ihrem Handbuch.
|
PROCEDURE Q_OpenInFile(REF name : STRING;
buffSize : LONGINT;
context : ContextPtr:=NIL);
PROCEDURE Q_OpenOutFile(REF name : STRING;
buffSize : LONGINT;
context : ContextPtr:=NIL);
PROCEDURE Q_CloseInFile;
PROCEDURE Q_CloseOutFile;
|
| Funktion : Prüft ob das nächste Zeichen gleich dem angegebenen ist.
| Parameter : c <- Zeichen auf das getestet werden soll.
| -> TRUE wenn das nächste Zeichen mit c übereinstimmt
|
PROCEDURE Q_Test(c : CHAR):BOOLEAN;
PROCEDURE Q_Read(VAR c IN A0 : CHAR);
PROCEDURE Q_ReadBlock(VAR block : ANYTYPE);
PROCEDURE Q_ReadBytes(pos : ANYPTR;len : LONGINT);
PROCEDURE Q_Write(c IN D4 : CHAR);
PROCEDURE Q_WriteBlock(REF block : ANYTYPE);
PROCEDURE Q_WriteBytes(pos : ANYPTR;len : LONGINT);
PROCEDURE Q_GetInPos():LONGINT;
PROCEDURE Q_SetInPos(pos : LONGINT);
PROCEDURE Q_GetOutPos():LONGINT;
PROCEDURE Q_SetOutPos(pos : LONGINT);
GROUP
QuickIOGrp = Q_OpenInFile,Q_OpenOutFile,Q_CloseInFile,Q_CloseOutFile,Q_Test,
Q_Read,Q_ReadBlock,Q_ReadBytes,Q_Write,
Q_WriteBlock,Q_WriteBytes,Q_GetInPos,Q_SetInPos,Q_GetOutPos,
Q_SetOutPos;
All = FileIOGrp,QuickIOGrp;
END FileSystem.