<<>> <> <> <> <> <> <> <> <> DIRECTORY Tioga; TextNode: CEDAR DEFINITIONS ~ BEGIN Node: TYPE ~ Tioga.Node; Location: TYPE = Tioga.Location; NodeItself: INT = Tioga.NodeItself; nullLocation: Location = Tioga.nullLocation; Span: TYPE = Tioga.Span; nullSpan: Span = Tioga.nullSpan; MaxLen: INT = INT.LAST; Ref, RefTextNode: TYPE = Node; -- for compatibility Offset: TYPE = INT; -- for compatibility MakeNodeLoc: PROC [n: Node] RETURNS [Location] ~ INLINE { RETURN[[n, NodeItself]] }; <<>> MakeNodeSpan: PROC [first, last: Node] RETURNS [Span] ~ INLINE { RETURN[[MakeNodeLoc[first], MakeNodeLoc[last]]] }; NarrowToTextNode: PROC [n: Node] RETURNS [Node] ~ INLINE { RETURN[n] }; -- for compatibility NewTextNode: PROC RETURNS [Node]; Parent: PROC [n: Node] RETURNS [Node]; Root: PROC [n: Node] RETURNS [Node]; Next: PROC [n: Node] RETURNS [Node]; <> <> Previous: PROC [n: Node, parent: Node ¬ NIL] RETURNS [nx: Node]; <> <> <> Forward: PROC [node: Node] RETURNS [nx: Node, levelDelta: INTEGER]; <> <> <> <> <> Backward: PROC [node: Node, parent: Node ¬ NIL] RETURNS [back, backparent: Node, levelDelta: INTEGER]; <> <> <> StepForward: PROC [node: Node] RETURNS [Node]; <> StepBackward: PROC [node: Node, parent: Node ¬ NIL] RETURNS [Node]; <> Level: PROC [node: Node] RETURNS [level: INTEGER]; <> ForwardClipped: PROC [node: Node, maxLevel: INTEGER, nodeLevel: INTEGER ¬ 0] RETURNS [nx: Node, nxLevel: INTEGER]; <> <> <> BackwardClipped: PROC [node: Node, maxLevel: INTEGER, parent: Node ¬ NIL, nodeLevel: INTEGER ¬ 0] RETURNS [back, backparent: Node, backLevel: INTEGER]; <> <> LocRelative: PROC [location: Location, count: INT, break: NAT ¬ 1, skipCommentNodes: BOOL ¬ FALSE] RETURNS [Location]; <> < location corresponding to count>> <> <> LocWithin: PROC [n: Node, count: INT, break: NAT ¬ 1, skipCommentNodes: BOOL ¬ FALSE] RETURNS [Location]; LocOffset: PROC [loc1, loc2: Location, break: NAT ¬ 1, skipCommentNodes: BOOL ¬ FALSE] RETURNS [count: INT]; <> <> <> <> BadArgs: ERROR; LocNumber: PROC [at: Location, break: NAT ¬ 1, skipCommentNodes: BOOL ¬ FALSE] RETURNS [count: INT]; <> FirstSibling: PROC [n: Node] RETURNS [Node]; LastSibling: PROC [n: Node] RETURNS [Node]; LastWithin: PROC [n: Node] RETURNS [Node]; <> <> LastLocWithin: PROC [n: Node] RETURNS [Location]; <> FirstChild: PROC [n: Node] RETURNS [Node]; LastChild: PROC [n: Node] RETURNS [Node]; NthChild: PROC [n: Node, location: INT ¬ 0] RETURNS [child: Node]; NthSibling: PROC [n: Node, cnt: INT ¬ 0] RETURNS [Node]; CountChildren: PROC [n: Node] RETURNS [count: INT]; CountFollowing: PROC [n: Node] RETURNS [count: INT]; CountToParent: PROC [n: Node] RETURNS [count: INT, parent: Node]; CountToChild: PROC [parent, child: Node] RETURNS [count: INT]; EndPos: PROC [n: Node] RETURNS [INT]; <<>> <<>> DestroyTree: PROC [root: Node]; <> <<>> END.