MODULE Tools; (* This module contain procedures "tools" for tests and others miscelaneus procedures. Created by L. P. Lozada (see the copyright and authorship futher down). *) IMPORT Wr, Thread, Octf, Triangulation, Stdio, Fmt; FROM Octf IMPORT Pair, Enext, Fnext, DegreeFaceRing, DegreeEdgeRing, Enext_1, Clock, Fnext_1, PrintPair; FROM Triangulation IMPORT Org, DegreeOfVertex, Pneg, Ppos; FROM Stdio IMPORT stderr; PROCEDURE PrtDFR(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a, 5); Wr.PutText(stderr," " ); WITH n = DegreeFaceRing(a) DO Wr.PutText(stderr,"DFR: " & Fmt.Pad(Fmt.Int(n),4) & "\n"); END END PrtDFR; PROCEDURE PrtDER(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a, 5); Wr.PutText(stderr," " ); WITH n = DegreeEdgeRing(a) DO Wr.PutText(stderr,"DER: " & Fmt.Pad(Fmt.Int(n),4) & "\n"); END END PrtDER; (* PROCEDURE PrtDFE(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a, 5); Wr.PutText(stderr," " ); WITH n = DegreeOfFacetEdges(a) DO Wr.PutText(stderr,"DFE: " & Fmt.Pad(Fmt.Int(n),4) & "\n"); END END PrtDFE; *) PROCEDURE PrtDOV(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a, 5); Wr.PutText(stderr," " ); WITH n = DegreeOfVertex(a) DO Wr.PutText(stderr,"DOV: " & Fmt.Pad(Fmt.Int(n),4) & "\n"); END END PrtDOV; PROCEDURE PrtEnext(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a); Wr.PutText(stderr, " Enext(a): "); PrintPair(stderr, Enext(a), 5, TRUE); END PrtEnext; PROCEDURE PrtFnext(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN PrintPair(stderr, a); Wr.PutText(stderr, " Fnext(a): "); PrintPair(stderr, Fnext(a), 5, TRUE); END PrtFnext; PROCEDURE PrtOrg(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN Wr.PutText(stderr,"a: "); PrintPair(stderr, a); Wr.PutText(stderr," Org(a): "); Wr.PutText(stderr, Fmt.Int(Org(a).num) ); Wr.PutText(stderr,"\n"); END PrtOrg; PROCEDURE PrtFaceNum(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN Wr.PutText(stderr,"a: "); PrintPair(stderr, a); Wr.PutText(stderr, " a.facetedge.face.num(a): "); Wr.PutText(stderr, Fmt.Int(a.facetedge.face.num) ); Wr.PutText(stderr,"\n"); END PrtFaceNum; PROCEDURE PrtEdgeNum(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN Wr.PutText(stderr,"a: "); PrintPair(stderr, a); Wr.PutText(stderr, " a.facetedge.edge.num(a): "); Wr.PutText(stderr, Fmt.Int(a.facetedge.edge.num) ); Wr.PutText(stderr,"\n"); END PrtEdgeNum; PROCEDURE PrtPnegNum(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN IF Pneg(a) # NIL THEN Wr.PutText(stderr, " "); PrintPair(stderr, a); Wr.PutText(stderr, " Pneg.num: "); Wr.PutText(stderr, Fmt.Int(Pneg(a).num) & "\n"); (* remenber Pneg(a) = Org(Srot(a)) *) ELSE Wr.PutText(stderr,"Negative Polyhedron not exists\n"); END END PrtPnegNum; PROCEDURE PrtPposNum(a: Pair) = <* FATAL Wr.Failure, Thread.Alerted *> BEGIN IF Ppos(a) # NIL THEN Wr.PutText(stderr, " "); PrintPair(stderr, a); Wr.PutText(stderr, " Ppos.num: "); Wr.PutText(stderr, Fmt.Int(Ppos(a).num) & "\n"); (* remenber Ppos(a) = Org(Tors(a)) *) ELSE Wr.PutText(stderr,"Positive Polyhedron not exists\n"); END END PrtPposNum; PROCEDURE PrtNextPneg(a: Pair) = PROCEDURE NextPnegof(a: Pair) = VAR h: Pair := a; BEGIN REPEAT PrtPnegNum(h); h := Enext_1(h); UNTIL (h = a); END NextPnegof; VAR t: Pair := a; BEGIN NextPnegof(t); REPEAT NextPnegof(Clock(Fnext_1(t))); t := Enext_1(t); UNTIL (t = a); END PrtNextPneg; PROCEDURE PrtNextPpos(a: Pair) = PROCEDURE NextPposof(a: Pair) = VAR h: Pair := a; BEGIN REPEAT PrtPposNum(h); h := Enext_1(h); UNTIL (h = a); END NextPposof; VAR t: Pair := a; BEGIN NextPposof(t); REPEAT NextPposof(Clock(Fnext(t))); t := Enext_1(t); UNTIL (t=a); END PrtNextPpos; BEGIN END Tools. (**************************************************************************) (* *) (* Copyright (C) 1999 Universidade Estadual de Campinas (UNICAMP) *) (* *) (* Authors: *) (* L. P. Lozada & J. Stolfi - UNICAMP *) (* *) (* This file can be freely used, distributed, and modified, provided that *) (* this copyright and authorship notice is included in every copy or *) (* derived version. *) (* *) (* DISCLAIMER: This software is offered ``as is'', without any guarantee *) (* as to fitness for any particular purpose. Neither the copyright *) (* holder nor the authors or their employers can be held responsible *) (* for any damages that may result from its use. *) (* *) (**************************************************************************)