-- file SymLiteralOps.Mesa
-- last modified by Satterthwaite, 25-Feb-82 14:51:08
DIRECTORY
Alloc: TYPE USING [Handle],
Literals: TYPE USING [STIndex],
RTBcd: TYPE USING [RefLitIndex, TypeIndex],
Symbols: TYPE USING [HTIndex, MDIndex, SEIndex],
Tree: TYPE USING [Link];
SymLiteralOps: DEFINITIONS = {
-- typeIds
EnterType: PROC [type: Symbols.SEIndex, canonical: BOOLEAN←TRUE];
TypeIndex: PROC [type: Symbols.SEIndex, canonical: BOOLEAN←TRUE] RETURNS [RTBcd.TypeIndex];
TypeRef: PROC [type: Symbols.SEIndex, canonical: BOOLEAN←TRUE] RETURNS [Tree.Link];
DescribeTypes: PROC RETURNS [offset, length: CARDINAL];
EnumerateTypes: PROC [PROC [canonical: BOOLEAN, type: Symbols.SEIndex]];
UTypeId: PROC [type: Symbols.SEIndex] RETURNS [Symbols.MDIndex, Symbols.SEIndex];
-- atoms and REFs to literals
RefLitItem: TYPE = RECORD [
SELECT kind: * FROM
atom => [pName: Symbols.HTIndex],
text => [value: Literals.STIndex]
ENDCASE];
EnterAtom: PROC [name: Symbols.HTIndex];
AtomIndex: PROC [name: Symbols.HTIndex] RETURNS [RTBcd.RefLitIndex];
AtomRef: PROC [name: Symbols.HTIndex] RETURNS [Tree.Link];
EnterText: PROC [sti: Literals.STIndex];
TextIndex: PROC [sti: Literals.STIndex] RETURNS [RTBcd.RefLitIndex];
TextRef: PROC [sti: Literals.STIndex] RETURNS [Tree.Link];
DescribeRefLits: PROC RETURNS [offset, length: CARDINAL];
EnumerateRefLits: PROC [PROC [RefLitItem]];
-- state transitions
Initialize: PROC [Alloc.Handle];
Reset: PROC;
Finalize: PROC;
}.