<> <> <> <> <> <> <> DIRECTORY AlpineEnvironment, AlpineInternal, AlpineLog; LogRep: DEFINITIONS = BEGIN wordsPerPage: CARDINAL = AlpineEnvironment.wordsPerPage; RecordID: TYPE = AlpineLog.RecordID; RecordType: TYPE = AlpineLog.RecordType; StrBody: TYPE = AlpineInternal.StrBody; PageVersion: TYPE = [0..1]; Header: TYPE = MACHINE DEPENDENT RECORD [ valid: BOOL, version: PageVersion, hasContinuation: BOOL, isContinuation: BOOL, unused: [0..7] _ 0, nWords: [0..AlpineEnvironment.wordsPerPage] <> ]; <> RecordTypeHeader: TYPE = MACHINE DEPENDENT RECORD [ pad: [0..1] _ 0, type: RecordType ]; NoopRecord: TYPE = MACHINE DEPENDENT RECORD [ pad: [0..1] _ 0, type: RecordType _ noop, fillPage: ARRAY [0..fillCount) OF WORD _ ALL[0] ]; fillCount: CARDINAL = wordsPerPage-SIZE[Header]-SIZE[RecordTypeHeader]; AssertNoopRecordSizeOK: CARDINAL [wordsPerPage .. wordsPerPage] = SIZE[NoopRecord] + SIZE[Header]; CheckpointCompleteRecord: TYPE = MACHINE DEPENDENT RECORD [ pad: [0..1] _ 0, type: RecordType _ checkpointComplete, thisRecordID: RecordID _ TRASH, startAnalysisRecordID: RecordID, keepRecordID: RecordID, myFileStore: StrBody _ []]; CheckpointCompleteRecordSize: PROC [nChars: NAT] RETURNS [size: CARDINAL] = INLINE { RETURN [CheckpointCompleteRecord.SIZE - StrBody.SIZE + TEXT[nChars].SIZE] }; TransactionHeader: TYPE = MACHINE DEPENDENT RECORD [ pad: [0..1] _ 0, type: RecordType, transID: AlpineEnvironment.TransID ]; RestartRecord: TYPE = MACHINE DEPENDENT RECORD [ wordNumberForCheckpointCompleteRecord: INT, recordIDForCheckpointCompleteRecord: RecordID ]; <> END. CHANGE LOG Created by MBrown on May 24, 1982 10:16 pm <> <> <> <> <<>>