
    <<A3.mesa>>
        <<Copyright  1985 by Xerox Corporation.  All rights reserved.>>
        <<Satterthwaite, April 14, 1986 2:01:16 pm PST>>

    DIRECTORY
        Alloc USING [Notifier],
        Symbols USING [Type, CSEIndex, RecordSEIndex, CBTIndex],
        Tree USING [Link];

    A3: DEFINITIONS = {
        OPEN Symbols;

    <<types>>

        DefaultForm: TYPE = {none, void, nonVoid};
        LhsMode: TYPE = {none, uncounted, counted};
        LifeTime: TYPE = {global, local, unknown};

    <<notifiers>>

        TreeNotify, TypeNotify: Alloc.Notifier;

    <<type attributes>>

        AccessMode: PUBLIC PROC[Type] RETURNS[LhsMode];
        AssignableType: PROC[type: Type, safe: BOOL] RETURNS[BOOL];
        BaseType: PROC[Type] RETURNS[Type];
        Bundling: PROC[CSEIndex] RETURNS[CARDINAL];
        CanonicalType: PROC[Type] RETURNS[Type];
        ComponentType: PROC[Type] RETURNS[BOOL];
        Default: PROC[Type] RETURNS[DefaultForm];
        DefaultInit: PROC[Type] RETURNS[Tree.Link];
        IdentifiedType: PROC[Type] RETURNS[BOOL];
        IndexType: PROC[Type] RETURNS[BOOL];
        MarkedType: PROC[Type] RETURNS[CSEIndex];
        NewableType: PROC[Type] RETURNS[BOOL];
        NullableType: PROC[Type] RETURNS[BOOL];
        OrderedType: PROC[Type] RETURNS[BOOL];
        PermanentType: PROC[Type] RETURNS[BOOL];
        TargetType: PROC[Type] RETURNS[Type];
        Unbundle: PROC[RecordSEIndex] RETURNS[Type];
        VarType: PROC[type: Type] RETURNS[BOOL];
        Voidable: PROC[Type] RETURNS[BOOL];

    <<tree attributes>>

        BodyForTree: PROC[Tree.Link] RETURNS[CBTIndex];
        LongPath: PROC[Tree.Link] RETURNS[BOOL];
        OperandInline: PROC[Tree.Link] RETURNS[BOOL];
        OperandInternal: PROC[Tree.Link] RETURNS[BOOL];
        OperandLevel: PROC[Tree.Link] RETURNS[LifeTime];
        OperandLhs: PROC[Tree.Link] RETURNS[LhsMode];
        OperandType: PROC[Tree.Link] RETURNS[Type];
        TypeForTree: PROC[Tree.Link] RETURNS[Type];
        VoidItem: PROC[Tree.Link] RETURNS[BOOL];

        }.
