YggLogInline.mesa
Copyright © 1987 by Xerox Corporation. All rights reserved.
Useful procs for manipulating RecordIDs.
Last edited by
MBrown on January 30, 1984 10:14:00 am PST
Hauser, March 8, 1985 10:52:24 am PST
Carl Hauser, February 24, 1987 5:01:36 pm PST
Bob Hagmann March 28, 1989 7:41:16 am PST
DIRECTORY
Basics,
ConstArith,
PBasics,
YggEnvironment,
YggLog;
YggLogInline: CEDAR DEFINITIONS
IMPORTS
ConstArith
= BEGIN
Comparison: TYPE = Basics.Comparison;
RecordID: TYPE = YggLog.RecordID;
PageNumber: TYPE = YggEnvironment.PageNumber;
WordNumber: TYPE = YggEnvironment.WordNumber;
WordCount: TYPE = YggEnvironment.WordCount;
Operations on RecordIDs
Compare: PROC [a, b: RecordID] RETURNS [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;
};
Min: PROC [a, b: RecordID] RETURNS [RecordID] = TRUSTED INLINE {
RETURN [IF Compare[a, b] = greater THEN b ELSE a];
};
Max: PROC [a, b: RecordID] RETURNS [RecordID] = TRUSTED INLINE {
RETURN [IF Compare[a, b] = less THEN b ELSE a];
};
WordsFromSubtract: PROC [larger, smaller: RecordID] RETURNS [result: WordCount] = TRUSTED INLINE {
RETURN [ConstArith.Sub[larger, smaller]];
};
AddLC: PROC [r: RecordID, words: LONG CARDINAL] RETURNS [RecordID] = TRUSTED INLINE {
Returns r+c.
RETURN ConstArith.Add[r, ConstArith.FromCard[words]];
};
AddC: PROC [r: RecordID, words: CARDINAL] RETURNS [RecordID] = TRUSTED INLINE {
Returns r+c.
RETURN [AddLC[r, LONG[words]]];
};
AddNumberAndCount: PROC [num: WordNumber, words: WordCount] RETURNS [WordNumber] = TRUSTED INLINE {
Returns r+c.
RETURN ConstArith.Add[num, words];
};
SubNumberLessCount: PROC [num: WordNumber, words: WordCount] RETURNS [WordNumber] = TRUSTED INLINE {
Returns r+c.
RETURN ConstArith.Sub[num, words];
};
RecordIDFromWordNumber: PROC [w: WordNumber] RETURNS [RecordID] = TRUSTED INLINE {
RETURN LOOPHOLE[w] };
WordInPageFromRecordID: PROC [r: RecordID, wordsPerPage: CARD] RETURNS [CARD] = TRUSTED INLINE {
RETURN ConstArith.ToCard[ConstArith.Mod[r, ConstArith.FromCard[wordsPerPage]]] };
END.
CHANGE LOG
Created by MBrown on September 21, 1982 2:45 pm
Changed by MBrown on September 25, 1982 3:50 pm
Moved stuff here from LogCoreImpl: Compare, DecomposeWordNumber, etc.
Changed by MBrown on October 4, 1982 10:19 pm
Cedar 3.4: use Environment.Comparison, Inline.CompareCard.
Changed by MBrown on October 25, 1982 10:45 pm
Eliminate dependency on LogBasic so that this interface can be made public.
Changed by MBrown on November 9, 1982 3:01 pm
Moved page <-> word stuff to AlpineInline.
Changed by MBrown on January 30, 1984 10:11:20 am PST
Cedar 5.0: use Basics, RuntimeError.
Hauser, March 8, 1985 10:51:50 am PST
Nodified, added copyright.
Carl Hauser, October 4, 1985 1:35:26 pm PDT
Change "Log" to "AlpineLog"