<> <> <> <> DIRECTORY IO USING [STREAM], YggDID USING[DID], YggInternal USING[FileHandle, FPMFileHandle, LogMap], Rope USING[ROPE]; YggFile: CEDAR DEFINITIONS = BEGIN PageNumber: TYPE = RECORD[INT]; PageCount: TYPE = INT; FileHandle: TYPE = PUBLIC YggInternal.FileHandle; FileHandleRep: TYPE = RECORD [ did: YggDID.DID, component: ATOM, -- which part of the document (contents, links, attributes) fpmFileHandle: YggInternal.FPMFileHandle, logMapHandle: YggInternal.LogMap, locked: BOOL _ FALSE, users: INT _ 0, name: Rope.ROPE _ NIL, fd: INT _ 0, fdLockCount: INT _ 0 ]; Open: PROC [name: Rope.ROPE] RETURNS [FileHandle]; Create: PROC [name: Rope.ROPE, size: PageCount ] RETURNS [FileHandle]; Delete: PROC [file: FileHandle]; Info: PROC [file: FileHandle] RETURNS [size: PageCount, name: Rope.ROPE]; SetSize: PROC [file: FileHandle, size: PageCount]; Read: UNSAFE PROC [file: FileHandle, from: PageNumber, nPages: PageCount, to: LONG POINTER]; Write: PROC [file: FileHandle, to: PageNumber, nPages: PageCount, from: LONG POINTER]; FilesForDID: PROC [did: YggDID.DID] RETURNS [contents, attributes, links: YggFile.FileHandle]; <> <> StreamFromOpenFile: PROC [file: YggFile.FileHandle] RETURNS [IO.STREAM]; <<>> END.