-- JaMDict.mesa -- Last edit by Doug Wyatt, 1-Oct-81 14:51:34 DIRECTORY JaMBasic USING [DictBody, Object, Tuple, TupleRptr, vmNIL]; JaMDict: DEFINITIONS = { OPEN JaMBasic; -- Types and Constants DD: TYPE = DictBody; -- dictionary descriptor Slot: TYPE = TupleRptr; -- location of tuple in dictionary slotNIL: Slot = vmNIL; -- 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: Object] RETURNS[CARDINAL] = INLINE { WITH key:key SELECT FROM name => RETURN[key.id.index]; ENDCASE => RETURN[HashObject[key]] }; HashObject: PROC[Object] RETURNS[CARDINAL]; HashString: PROC[string Object] RETURNS[CARDINAL]; HashText: PROC[LONG STRING] RETURNS[CARDINAL]; -- Low level dictionary operations LookUpDict: PROC[dd: POINTER TO READONLY DD, hash: CARDINAL, key: Object] RETURNS[BOOLEAN,Slot]; InsertInDict: PROC[dd: POINTER TO DD, hash: CARDINAL, tuple: Tuple, slot: Slot]; }.