SymLiteralOps.mesa
Copyright Ó 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
Satterthwaite, June 9, 1986 9:57:52 am PDT
Russ Atkinson (RRA) March 1, 1988 6:36:32 pm PST
DIRECTORY
Alloc USING [Handle],
Literals USING [STIndex],
RTMob USING [RefLitIndex, TypeIndex],
Symbols USING [MDIndex, Name, Type],
Tree USING [Link];
SymLiteralOps: DEFINITIONS = {
typeIds
EnterType: PROC [type: Symbols.Type, canonical: BOOL¬TRUE, used: BOOL ¬ FALSE];
TypeIndex: PROC [type: Symbols.Type, canonical: BOOL¬TRUE, used: BOOL ¬ FALSE]
RETURNS [RTMob.TypeIndex];
TypeRef: PROC [type: Symbols.Type, canonical: BOOL¬TRUE] RETURNS [Tree.Link];
DescribeTypes: PROC RETURNS [offset, length: CARD];
EnumerateTypes: PROC [TypesVisitor];
TypesVisitor: TYPE = PROC [type: Symbols.Type, canonical: BOOL, used: BOOL];
UTypeId: PROC [type: Symbols.Type] RETURNS [Symbols.MDIndex, Symbols.Type];
atoms and REFs to literals
RefLitItem: TYPE = RECORD [
SELECT kind: * FROM
atom => [pName: Symbols.Name],
text => [value: Literals.STIndex],
ENDCASE
];
EnterAtom: PROC [name: Symbols.Name];
AtomIndex: PROC [name: Symbols.Name] RETURNS [RTMob.RefLitIndex];
AtomRef: PROC [name: Symbols.Name] RETURNS [Tree.Link];
EnterText: PROC [sti: Literals.STIndex, type: Symbols.Type];
TextIndex: PROC [sti: Literals.STIndex] RETURNS [RTMob.RefLitIndex];
TextRef: PROC [sti: Literals.STIndex] RETURNS [Tree.Link];
DescribeRefLits: PROC RETURNS [offset, length: CARD];
EnumerateRefLits: PROC [RefLitsVisitor];
RefLitsVisitor: TYPE = PROC [item: RefLitItem, type: Symbols.Type, used: BOOL];
Presents the item, the REF type (not the referent type), and a used indicator
state transitions
Initialize: PROC [Alloc.Handle];
Reset: PROC [pad: BOOL];
Finalize: PROC;
}.