<> <> <> <> <> DIRECTORY Alloc: TYPE USING [Handle], Literals: TYPE USING [LitIndex], Symbols: TYPE USING [HTIndex, ISEIndex], Tree: TYPE USING [AttrId, Finger, Id, Index, Info, Link, Map, NodeName, Scan, Test]; TreeOps: DEFINITIONS = { <> Initialize: PROC[Alloc.Handle]; Reset, Finalize: PROC; PushTree: PROC[v: Tree.Link]; PopTree: PROC RETURNS[Tree.Link]; InsertTree: PROC[Tree.Link, CARDINAL]; ExtractTree: PROC[CARDINAL] RETURNS[Tree.Link]; MakeNode: PROC[name: Tree.NodeName, count: INTEGER] RETURNS[Tree.Link]; MakeList: PROC[size: INTEGER] RETURNS[Tree.Link]; PushNode: PROC[name: Tree.NodeName, count: INTEGER]; PushList, PushProperList: PROC[size: INTEGER]; PushHash: PROC[hti: Symbols.HTIndex]; PushSe: PROC[sei: Symbols.ISEIndex]; PushLit: PROC[lti: Literals.LitIndex]; SetAttr: PROC[attr: Tree.AttrId, value: BOOL]; SetInfo: PROC[info: Tree.Info]; <> FreeNode: PROC[node: Tree.Index]; FreeTree: PROC[t: Tree.Link] RETURNS[Tree.Link]; <> GetHash: PROC[t: Tree.Link] RETURNS[Symbols.HTIndex]; GetNode: PROC[t: Tree.Link] RETURNS[Tree.Index]; GetSe: PROC[t: Tree.Link] RETURNS[Symbols.ISEIndex]; NthSon: PROC[t: Tree.Link, n: CARDINAL] RETURNS[Tree.Link]; OpName: PROC[t: Tree.Link] RETURNS[Tree.NodeName]; GetAttr: PROC[t: Tree.Link, attr: Tree.AttrId] RETURNS[BOOL]; PutAttr: PROC[t: Tree.Link, attr: Tree.AttrId, value: BOOL]; GetInfo: PROC[t: Tree.Link] RETURNS[Tree.Info]; PutInfo: PROC[t: Tree.Link, value: Tree.Info]; Shared: PROC[t: Tree.Link] RETURNS[BOOL]; MarkShared: PROC[t: Tree.Link, shared: BOOL]; <> ScanSons: PROC[root: Tree.Link, action: Tree.Scan]; UpdateLeaves: PROC[root: Tree.Link, map: Tree.Map] RETURNS[v: Tree.Link]; <> ListLength: PROC[t: Tree.Link] RETURNS[CARDINAL]; ListHead: PROC[t: Tree.Link] RETURNS[Tree.Link]; ListTail: PROC[t: Tree.Link] RETURNS[Tree.Link]; <> ScanList: PROC[root: Tree.Link, action: Tree.Scan]; SearchList: PROC[root: Tree.Link, test: Tree.Test]; ReverseScanList: PROC[root: Tree.Link, action: Tree.Scan]; UpdateList: PROC[root: Tree.Link, map: Tree.Map] RETURNS[Tree.Link]; ReverseUpdateList: PROC[root: Tree.Link, map: Tree.Map] RETURNS[Tree.Link]; <> CopyTree: PROC[root: Tree.Id, map: Tree.Map] RETURNS[v: Tree.Link]; IdentityMap: Tree.Map; NodeSize: PROC[baseP: Tree.Finger, node: Tree.Index] RETURNS[CARDINAL]; }.