<> <> <> <<>> <> DIRECTORY Basics, Camelot, ConstArith, PBasics, YggEnvironment, YggLog, YggLogRep; YggLogBasic: CEDAR DEFINITIONS IMPORTS ConstArith = BEGIN <> PageNumber: TYPE = YggEnvironment.PageNumber; PageCount: TYPE = YggEnvironment.PageNumber; Block: TYPE = YggLog.Block; RecordID: TYPE = YggLog.RecordID; WordNumber: TYPE = YggEnvironment.WordNumber; WordCount: TYPE = YggEnvironment.WordCount; <> <> EstablishLogFile: PROC []; <> LogFileSize: PROC [] RETURNS [PageCount]; <> LogUsage: PROC [] RETURNS [PageCount]; <> LocateFirstRecord: PROC [] RETURNS [WordNumber]; <> <> <> <> <> OpenRecordStreamFromWord: PROC [firstWord: WordNumber] RETURNS [notStartOfRecord: BOOL, currentRecord: RecordID]; <> <> <> OpenRecordStreamFromCheckpoint: PROC [ checkpointWord: WordNumber, checkpointRecord, firstRecord: RecordID] RETURNS [notStartOfRecord: BOOL, currentRecord: RecordID]; <> <> <> <> InvalidPage: ERROR; <> <> CheckCurrentRecord: PROC [] RETURNS [truncated: BOOL]; <> <> <> GetCurrentRecord: UNSAFE PROC [currentRecord: RecordID, to: Block] RETURNS [status: YggLog.ReadProcStatus, wordsRead: CARDINAL]; <> <> GetCurrentPageAndVersion: PROC [] RETURNS [PageNumber, YggLogRep.PageVersion]; <> <> AdvanceRecordStream: PROC [] RETURNS [endOfLog, truncatedRecord: BOOL, currentRecord: RecordID]; <> <> <> <> <> <> CloseRecordStream: PROC []; <> <> <> <<(Note that OpenForPut is done implicitly by EraseLogFile.)>> <> OpenForPut: PROC [nextPage: PageNumber, version: YggLogRep.PageVersion, nextRecord: RecordID]; <> AssertNormalOperation: PROC []; <> Put: UNSAFE PROC [from: YggLog.Block, optr: Camelot.optrT, force: BOOL _ FALSE, writeID: BOOL _ FALSE] RETURNS [thisRecord, followingRecord: RecordID]; <> <> <> <> <> <> minBlockLen: INT = 1; maxBlockLen: INT = 1060000; -- a megaword plus change WordNumberFromRecordID: PROC [thisRecord: RecordID] RETURNS [WordNumber]; <> <> <> Force: PROC [followingRecord: RecordID]; <> <> <> RecordIDOfNextPut: PROC [] RETURNS [RecordID]; <> <> CloseForPut: PROC []; <> <> maxInvalidLogPages: PageCount = 16; <> <> <> Release: PROC [beforeRecord: RecordID]; <> <> <> <> <> Get: UNSAFE PROC [thisRecord: RecordID, to: YggLog.Block] RETURNS [status: YggLog.ReadProcStatus, wordsRead: CARDINAL]; <> <> <> <> Compare: PROC [a, b: WordCount] RETURNS [Basics.Comparison] = TRUSTED INLINE { comp: PBasics.Comparison; comp _ ConstArith.Compare[a, b]; SELECT comp FROM less => RETURN[less]; equal => RETURN[equal]; greater => RETURN[greater]; ENDCASE => ERROR; }; END. CHANGE LOG Created by MBrown on 2-Dec-81 Changed by MBrown on 16-Dec-81 15:06:20 <> Changed by MBrown on 1-Feb-82 15:10:32 <> <> Changed by MBrown on August 10, 1982 11:26 pm <> Changed by MBrown on August 16, 1982 3:29 pm <> Changed by MBrown on September 16, 1982 12:42 pm <> Changed by MBrown on September 23, 1982 1:52 pm <> Changed by MBrown on June 27, 1983 9:48 am <> <> <> <> <> <<>>