
    <<SymLiteralOps.Mesa>>
        <<Copyright © 1985 by Xerox Corporation.  All rights reserved.>>
        <<Satterthwaite, June 9, 1986 9:57:52 am PDT>>
        <<Russ Atkinson (RRA) March 6, 1985 10:07:28 pm PST>>

    DIRECTORY
        Alloc USING [Handle],
        Literals USING [STIndex],
        RTBcd USING [RefLitIndex, TypeIndex],
        Symbols USING [Name, MDIndex, Type],
        Tree USING [Link];

    SymLiteralOps: DEFINITIONS = {

    <<typeIds>>

        EnterType: PROC[type: Symbols.Type, canonical: BOOL_TRUE];
        TypeIndex: PROC[type: Symbols.Type, canonical: BOOL_TRUE] RETURNS [RTBcd.TypeIndex];
        TypeRef: PROC[type: Symbols.Type, canonical: BOOL_TRUE] RETURNS [Tree.Link];
        DescribeTypes: PROC RETURNS[offset, length: CARDINAL];
        EnumerateTypes: PROC[PROC[canonical: BOOL, type: Symbols.Type]];

        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 [RTBcd.RefLitIndex];
        AtomRef: PROC[name: Symbols.Name] 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[pad: BOOL];
        Finalize: PROC;

        }.

