-- TestTree.Text -- written by Bill Paxton, May 1981 -- last edit by Bill Paxton, 20-May-81 10:26:13 CheckTrees: PROC [t1,t2: editI.Ref] = { -- ERROR if trees not equal x1, x2: editI.Ref; WITH n1:t1 SELECT FROM text => WITH n2:t2 SELECT FROM text => { -- must have same text&looks size: Card ← editI.Size[@n1]; IF editI.Size[@n2] # size THEN ERROR; CheckRopes[n1.rope,0,n2.rope,0,size]; CheckRuns[n1.runs,0,n2.runs,0,size] }; ENDCASE => ERROR; other => WITH n2:t2 SELECT FROM other => NULL; ENDCASE => ERROR; ENDCASE => ERROR; IF t1.typename # t2.typename THEN ERROR; IF (t1.hasstyle OR t2.hasstyle) AND propsI.GetStyleName[t1]#propsI.GetStyleName[t2] THEN ERROR; x1 ← t1.child; x2 ← t2.child; DO -- check children IF x1=NIL THEN IF x2=NIL THEN RETURN ELSE ERROR; IF x2=NIL THEN ERROR; CheckTrees[x1,x2]; x1 ← nodeI.Next[x1]; x2 ← nodeI.Next[x2]; ENDLOOP }; END.