<> <> <> <<>> DIRECTORY DB, Rope; KeyNoteDatabase: CEDAR DEFINITIONS = BEGIN <> <<>> <> <<>> <<>> <> ROPE: TYPE = Rope.ROPE; DatabaseHandle: TYPE = REF DatabaseHandleObject; DatabaseHandleObject: TYPE; SimpleProc: TYPE = PROCEDURE [] RETURNS [REF ANY]; GetTokenProc: TYPE = PROCEDURE [clientData: REF ANY] RETURNS [tokenProcReturnData: TokenProcReturnData]; TokenProcReturnData: TYPE = REF TokenProcReturnDataObject; TokenProcReturnDataObject: TYPE = RECORD[newClientData: REF ANY, token: ROPE, frequency: INTEGER ]; ListOfFilesContainingToken: TYPE = LIST OF FilesContainingToken; FilesContainingToken: TYPE = REF ANY; <> FilesContainingTokenObject: TYPE = RECORD [ fileName: ROPE, frequency: INTEGER, fileSize: INTEGER ]; ListOfTokensInFile: TYPE = LIST OF TokensInFile; TokensInFile: TYPE = REF ANY; <> TokensInFileObject: TYPE = RECORD [ token: ROPE, frequency: INTEGER, frequencyInUniverse: INTEGER ]; <> <<>> <> <> <<>> <> OpenDatabase: PROC [databaseName: ROPE, readonly: BOOLEAN, oldDatabaseHandle: DatabaseHandle _ NIL] RETURNS [db: DatabaseHandle]; CloseDatabase: PROC [db: DatabaseHandle]; Abort: PROC [db: DatabaseHandle]; CommitChanges: PROC [db: DatabaseHandle]; <> <> AddTokensToDatabase: PROC [db: DatabaseHandle, fileName: ROPE, getTokenProc: GetTokenProc, clientData: REF ANY]; DoForEachTokenInFile: PROC [db: DatabaseHandle, forEachTokenInFileProc: SimpleProc ]; <<>> FindFrequencyWordInFile: PROC [db: DatabaseHandle, token: ROPE, fileName: ROPE] RETURNS [frequencyOfWordInFile: INTEGER]; <> FindFrequencyWordInUniverse: PROC [db: DatabaseHandle, token: ROPE] RETURNS [numberOfFilesContainingToken: INTEGER]; <> GetListOfFilesContainingToken: PROC [db: DatabaseHandle, token: ROPE] RETURNS [listOfFilesContainingToken: ListOfFilesContainingToken]; GetListOfTokensInFile: PROC [db: DatabaseHandle, fileName: ROPE] RETURNS [listOfTokensInFile: ListOfTokensInFile]; GetNumberOfTokensInUniverse: PROC [db: DatabaseHandle] RETURNS [INTEGER]; GetNumberOfFilesInUniverse: PROC [db: DatabaseHandle] RETURNS [INTEGER]; VerifyFileNonExistence: PROC [db: DatabaseHandle, fileName: ROPE] RETURNS [fileNotInDatabase: BOOLEAN]; <> Error: SIGNAL [ec: ErrorCode, explanation: ROPE _ NIL]; ErrorCode: TYPE = ATOM; <> <<$MultipleVersions -- encountered multiple versions of a file in databaseName>> <<$bug -- such as "Bad value passed to FinishTransaction">> <<$db -- such as ""Can't access transaction">> <<>> <<>> END.