<> <> <> <> DIRECTORY CIFS USING [ErrorCode], Font USING [Key], Rope USING [ROPE]; UFFileManager: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Key: TYPE = Font.Key; FontFile: TYPE = REF FontFilePermission; FontFilePermission: TYPE; KeyOf: PROCEDURE [fileName: ROPE] RETURNS [key: Key]; <> KeyOfRefText: PROCEDURE [fileName: REF TEXT] RETURNS [key: Key]; <> InitProc: TYPE = PROCEDURE [key: Key, fontFile: FontFile] RETURNS [REF]; Open: PROCEDURE [key: Key, initProc: InitProc _ NIL] RETURNS [fontFile: FontFile]; <> GetData: PROCEDURE [fontFile: FontFile] RETURNS [REF]; <> Status: PROCEDURE [fontFile: FontFile] RETURNS [errorCode: CIFS.ErrorCode, errorMsg: ROPE, ok: BOOLEAN]; <> Pointer: UNSAFE PROCEDURE [fontFile: FontFile] RETURNS [origin: LONG POINTER]; <> <> NameOf: PROCEDURE [key: Key] RETURNS [fileName: ROPE]; <> Size: PROCEDURE [fontFile: FontFile] RETURNS [sizeInSixteenBitWords: INT]; <> InBounds: UNSAFE PROCEDURE [fontFile: FontFile, blockAddress: LONG POINTER, sizeInWords: NAT _ 1] RETURNS [BOOLEAN]; <> <> Action: TYPE = {open, close, openFailed}; FontFileWatcher: TYPE = PROCEDURE [key: Key, action: Action]; RegisterFontFileWatcher: PROCEDURE [fontFileWatcher: FontFileWatcher]; PermissionCount: PROCEDURE RETURNS [INT]; EnumerateOpenFontFiles: PROCEDURE [visit: PROC[ROPE]]; END.