-- file TreeOps.Mesa -- last modified by Satterthwaite, 30-Apr-82 15:23:44 DIRECTORY Alloc: TYPE USING [Handle], Literals: TYPE USING [LTIndex, STIndex], Symbols: TYPE USING [HTIndex, ISEIndex], Tree: TYPE; TreeOps: DEFINITIONS = { -- tree construction interface Initialize: PROC [Alloc.Handle, UNCOUNTED ZONE]; 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.LTIndex]; PushStringLit: PROC [sti: Literals.STIndex]; SetInfo: PROC [info: UNSPECIFIED]; SetAttr: PROC [attr: Tree.AttrId, value: BOOLEAN]; -- tree deallocation FreeNode: PROC [node: Tree.Index]; FreeTree: PROC [t: Tree.Link] RETURNS [Tree.Link]; -- tree attributes 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]; Shared: PROC [t: Tree.Link] RETURNS [BOOLEAN]; SetShared: PROC [t: Tree.Link, shared: BOOLEAN]; -- tree manipulation ScanSons: PROC [root: Tree.Link, action: Tree.Scan]; UpdateLeaves: PROC [root: Tree.Link, map: Tree.Map] RETURNS [v: Tree.Link]; -- list testing ListLength: PROC [t: Tree.Link] RETURNS [CARDINAL]; ListHead: PROC [t: Tree.Link] RETURNS [Tree.Link]; ListTail: PROC [t: Tree.Link] RETURNS [Tree.Link]; -- list manipulation 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]; -- cross-table tree copying 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]; }.