DIRECTORY BcdDefs: TYPE USING [treetype], Literals: TYPE USING [LitIndex], Symbols: TYPE USING [HTIndex, htNull, STIndex], Table: TYPE USING [Base, Finger, Limit, Selector]; Tree: DEFINITIONS={ treeType: Table.Selector~BcdDefs.treetype; Base: TYPE~Table.Base; Finger: TYPE~Table.Finger; Limit: CARDINAL~Table.Limit; Link: TYPE~RECORD [ SELECT tag: * FROM subtree => [index: Tree.Index], hash => [index: Symbols.HTIndex], symbol => [index: Symbols.STIndex], literal => [index: Literals.LitIndex] ENDCASE]; Node: TYPE~MACHINE DEPENDENT RECORD [ free (0: 0..0): BOOL, -- reserved for allocator name (0: 1..4): NodeName, attrs (0: 5..7): PACKED ARRAY AttrId OF BOOL _ ALL[FALSE], shared (0: 8..8): BOOL, nSons (0: 9..15): [0..maxNSons], info (1): Tree.Info, son (2): ARRAY [1..1) OF Tree.Link]; Info: TYPE~CARDINAL; AttrId: TYPE~{codeLinks, explicitLinkLoc, exportsALL}; maxNSons: CARDINAL~177b; Index: TYPE~Base RELATIVE POINTER[0..Limit) TO Tree.Node; nullIndex: Tree.Index~Tree.Index.FIRST; null: Tree.Link~[subtree[index~Tree.nullIndex]]; nullId: Tree.Link~[hash[index~Symbols.htNull]]; NodeName: TYPE~{ list, item, source, config, module, assign, plus, then, dot, slash, none }; Id: TYPE~RECORD [baseP: Finger, link: Tree.Link]; Scan: TYPE~PROC [t: Tree.Link]; Map: TYPE~PROC [t: Tree.Link] RETURNS [v: Tree.Link]; Test: TYPE~PROC [t: Tree.Link] RETURNS [BOOL]; }. ļfile BcdTree.Mesa last modified by Satterthwaite, January 10, 1983 12:38 pm data structures general tree constructors declarations expressions file names nil tree manipulation Ę~˜Jšœ™Jšœ9™9J˜šĪk ˜ Jšœ œœ ˜Jšœ œœ ˜ Jšœ œœ˜/Jšœœœ!˜2J˜—Jšœ œ˜˜J˜*J˜Jšœœ ˜Jšœœ˜Jšœœ ˜J˜Jšœ™˜šœœœ˜šœ˜J˜J˜!J˜#J˜%Jšœ˜ J˜J˜——š œœœ œœ˜%JšœœĪc˜/J˜Jš œœœœœœœ˜:Jšœœ˜J˜ J˜Jšœ œœ ˜$J˜—Jšœœœ˜Jšœœ*˜6J˜Jšœ œ˜J˜Jš œœœœ œ ˜9J˜Jšœ!œ˜'J˜0J˜J˜/J˜J˜šœ œ˜šœ™J˜ J˜—šœ ™ J˜J˜J˜—šœ ™ J˜J˜J˜J˜J˜—šœ ™ J˜J˜J˜—šœ™J˜J˜J˜———Jšœ™˜Jšœœœ"˜1JšĪnœœœ˜JšŸœœœœ˜5Jš Ÿœœœœœ˜.J˜J˜J˜———…—nĸ