-- File: IFSFile.mesa -- Last edited by: -- Levin - 14-Sep-81 13:43:20 IFSFile: DEFINITIONS = BEGIN -- Types -- FSInstance: TYPE = LONG POINTER TO FSObject; FSObject: TYPE; FileHandle: TYPE = LONG POINTER TO FileObject; FileObject: TYPE; OpenOptions: TYPE = {old, oldReadOnly, new, oldOrNew}; Buffer: TYPE = LONG POINTER; Position: TYPE = LONG CARDINAL; ByteCount: TYPE = CARDINAL; Completer: TYPE = PROCEDURE [arg: CompleterArg, outcome: Problem]; CompleterArg: TYPE = LONG UNSPECIFIED; Problem: TYPE = {ok, io, resources, credentials, illegalIO, other}; AccessFailure: TYPE = {ok, io, notFound, alreadyExists, accessDenied, accessConflict, illegalFileName, other}; FileTime: TYPE = LONG CARDINAL; defaultTime: FileTime = 0; -- Procedures and Signals -- Error: ERROR [reason: Problem]; Login: PROCEDURE [server, userName, password, secondaryName, secondaryPassword: LONG STRING ← NIL] RETURNS [FSInstance]; UnableToLogin: ERROR [reason: Problem]; Logout: PROCEDURE [FSInstance]; Open: PROCEDURE [instance: FSInstance, name: LONG STRING, options: OpenOptions ← oldReadOnly] RETURNS [FileHandle]; CantOpen: ERROR [reason: AccessFailure]; Close: PROCEDURE [FileHandle]; Abandon: PROCEDURE [FileHandle]; Destroy: PROCEDURE [FileHandle]; GetLength: PROCEDURE [FileHandle] RETURNS [Position]; SetLength: PROCEDURE [FileHandle, Position]; StartRead: PROCEDURE [FileHandle, Position, ByteCount, Buffer, Completer, CompleterArg]; StartWrite: PROCEDURE [FileHandle, Position, ByteCount, Buffer, Completer, CompleterArg]; GetTimes: PROCEDURE [FileHandle] RETURNS [read, write, create: FileTime]; SetCreation: PROCEDURE [FileHandle, FileTime ← defaultTime]; -- Initialization/Finalization Procedures -- Initialize: PROCEDURE; Finalize: PROCEDURE; END.