TJaMDict.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Last edit by Doug Wyatt, 1-Oct-81 14:51:34
Michael Plass, February 14, 1985 12:26:04 pm PST
DIRECTORY
TJaMBasic USING [DictBody, Object, Tuple, TuplePtr];
Types and Constants
DD: TYPE = TJaMBasic.DictBody; -- dictionary descriptor
Slot: TYPE = TJaMBasic.TuplePtr; -- location of tuple in dictionary
slotNIL: Slot = NIL; -- Slot returned if no room
Loc: TYPE = CARDINAL; -- location of tuple in cache
locNIL: Loc = LAST[Loc]; -- Loc returned if no room
Hashing
freeHash: CARDINAL = LAST[CARDINAL]; -- never returned by Hash
Hash:
PROC[key: TJaMBasic.Object]
RETURNS[
CARDINAL] =
INLINE {
WITH key:key
SELECT
FROM name =>
RETURN[key.id.index];
ENDCASE => RETURN[HashObject[key]]
};
HashObject: PROC[TJaMBasic.Object] RETURNS[CARDINAL];
HashString: PROC[string TJaMBasic.Object] RETURNS[CARDINAL];
HashText: PROC[LONG STRING] RETURNS[CARDINAL];
Low level dictionary operations
LookUpDict:
PROC[dd:
POINTER
TO
READONLY
DD,
hash: CARDINAL, key: TJaMBasic.Object] RETURNS[BOOLEAN,Slot];
InsertInDict:
PROC[dd:
POINTER
TO
DD,
hash: CARDINAL, tuple: TJaMBasic.Tuple, slot: Slot];
}.