<<>> <> <> <> <> <> <> <> DIRECTORY Tioga USING [CapChange, Event, Location, Looks, Node, noLooks, nullLocation, nullSpan, Order, Place, Span]; EditSpan: CEDAR DEFINITIONS ~ BEGIN Node: TYPE = Tioga.Node; Location: TYPE = Tioga.Location; nullLocation: Location = Tioga.nullLocation; Span: TYPE = Tioga.Span; nullSpan: Span = Tioga.nullSpan; Event: TYPE = Tioga.Event; <> Looks: TYPE = Tioga.Looks; noLooks: Looks = Tioga.noLooks; ChangeLooks: PROC [root: Node, span: Span, remove, add: Looks ¬ noLooks, event: Event ¬ NIL]; <> <> Replace: PROC [destRoot, sourceRoot: Node, dest, source: Span, saveForPaste: BOOL ¬ TRUE, event: Event ¬ NIL] RETURNS [result: Span]; <> <> Delete: PROC [root: Node, del: Span, event: Event ¬ NIL, saveForPaste: BOOL ¬ TRUE]; SaveForPaste: PROC [span: Span, event: Event ¬ NIL]; SavedForPaste: PROC RETURNS [span: Span]; <> Place: TYPE = Tioga.Place; -- { before, after, sibling, child } <> <> <> <> <> <> Copy: PROC [destRoot, sourceRoot: Node, dest: Location, source: Span, where: Place ¬ after, nesting: INTEGER ¬ 0, event: Event ¬ NIL] RETURNS [result: Span]; <> Move: PROC [destRoot, sourceRoot: Node, dest: Location, source: Span, where: Place ¬ after, nesting: INTEGER ¬ 0, event: Event ¬ NIL] RETURNS [result: Span]; <> <> <> <> MoveOnto: PROC [destRoot, sourceRoot: Node, dest, source: Span, saveForPaste: BOOL ¬ TRUE, event: Event ¬ NIL] RETURNS [result: Span]; <> <> Transpose: PROC [alphaRoot, betaRoot: Node, alpha, beta: Span, event: Event ¬ NIL] RETURNS [newAlpha, newBeta: Span]; <> <> <> Insert: PROC [root, old: Node, where: Place ¬ after, event: Event ¬ NIL] RETURNS [new: Node]; <> Inherit: PROC [old, new: Node, allprops: BOOL ¬ FALSE]; InsertTextNode: PROC [root, old: Node, where: Place ¬ after, inherit: BOOL ¬ FALSE, event: Event ¬ NIL] RETURNS [Node]; <> Split: PROC [root: Node, loc: Location, event: Event ¬ NIL] RETURNS [new: Node]; <> <> <> <> <> <> Merge: PROC [root, node: Node, event: Event ¬ NIL] RETURNS [loc: Location]; <> <> <> ChangeNesting: PROC [root: Node, span: Span, change: INTEGER, event: Event ¬ NIL] RETURNS [new: Span]; <> Nest: PROC [root: Node, span: Span, event: Event ¬ NIL] RETURNS [new: Span] = INLINE { new ¬ ChangeNesting[root, span, +1, event] }; <> UnNest: PROC [root: Node, span: Span, event: Event ¬ NIL] RETURNS [new: Span] = INLINE { new ¬ ChangeNesting[root, span, -1, event] }; <> <> CapChange: TYPE = Tioga.CapChange; ChangeCaps: PROC [root: Node, span: Span, how: CapChange ¬ allCaps, event: Event ¬ NIL]; <> Order: TYPE = Tioga.Order; -- { before, same, after, disjoint }; NodeOrder: TYPE = Order; -- for compatibility <<>> CompareNodeOrder: PROC [node1, node2: Node] RETURNS [Order]; <> <> <> <> <> <<>> CompareLocOrder: PROC [loc1, loc2: Location] RETURNS [Order]; <> <<>> CannotDoEdit: ERROR; afterMoved1, afterMoved2: Location; <> <> END.