-- ParseTableImpl.mesa
-- Last Edited by GNelson, March 1, 1983 6:11 pm

DIRECTORY Atom, ParseTable;

ParseTableImpl: MONITOR
  IMPORTS Atom
  EXPORTS ParseTable
= BEGIN OPEN ParseTable;

NewHandle: PUBLIC ENTRY PROC RETURNS [Handle] =
  {RETURN [NEW [HandleRep]]};
  
Enter:  PUBLIC ENTRY PROC [h: Handle, p: Properties] =
  {Atom.PutProp[p.name, h, p];
   IF p.alias # NIL THEN Atom.PutProp[NARROW[p.alias], h, p]};

Search: PUBLIC ENTRY PROC[h: Handle, a: REF ANY, default: Properties]
RETURNS [Properties] =
  {r: REF ANY ← Atom.GetProp[NARROW[a], h];
  IF r = NIL THEN RETURN [default] ELSE RETURN [NARROW[r]]};
  
END.