INTERFACE SOct; IMPORT Oct; TYPE Arc = Oct.Arc; Edge <: Oct.Edge; PROCEDURE Make(order: CARDINAL): Arc; PROCEDURE Canto(a: Arc): Oct.Arc; PROCEDURE CCanto(a: Arc): Oct.Arc; PROCEDURE Middle(a: Arc): Oct.Arc; (* PROCEDURE InitSOct(s: SuperOctet; order, no: CARDINAL);*) PROCEDURE GluePatch(a: Arc); (* ====== Printout ====== *) PROCEDURE PrintArc(wr: Wr.T; a: Arc); (* Prints arc a as n:r:f, where n is the serial edge number, and r,f are such that a = Flip^f(Rot^r(a0)), where a0 is the base arc of the edge. *) PROCEDURE ReadArc(rd: Rd.T; READONLY map: ARRAY OF Edge): Arc; (* Reads from "rd" an arc in the n:r:f format used by "PrintArc". The "map" table is used to convert the arc number "n" into an Edge pointer. *) PROCEDURE PrintEdge(wr: Wr.T; e: Edge); (* Prints on "wr" the four arcs Onext(Rot^i(s)), where s = Arc{e, 0} and i = 0..3. Arcs are separated by one space. Each arc is printed using PrintArc. *) PROCEDURE ReadEdge(rd: Rd.T; e: Edge; READONLY map: ARRAY OF Edge); (* Reads from "rd" four arcs a[0..3], using ReadArc(rd, map). Then performs SetOnext(Rot^i(s), a[i]), where s = Arc{0,e} and i = 0..3. *) END SOct.