(* ====== Origin labels ====== *) CONST MaxOrgLabel = INTEGER; TYPE OrgLabel = [0..MaxOrgLabel]; PROCEDURE GetOrgLabel (a: Arc): OrgLabel; (* A client-defined label for arc "a". *) PROCEDURE SetOrgLabel (a: Arc; label: OrgLabel); (* Changes the label of arc "a" to "label". *) PROCEDURE GetOrgLabel (a: Arc): OrgLabel = BEGIN RETURN a.edge.label[RotBits(a)] END GetOrgLabel; PROCEDURE SetOrgLabel (a: Arc; label: OrgLabel) = BEGIN a.edge.label[RotBits(a)] := label END SetOrgLabel; PROCEDURE VisitV(c: Arc) = VAR cn: Arc; BEGIN WITH cv = Org(c), i = cv.num DO t.vertex[i] := cv; t.out[i] := c; END; END VisitV; PROCEDURE VisitF(c: Arc) = BEGIN WITH cf = Org(c), i = cf.num DO t.side[i] := c; t.face[i] := cf END; END VisitF;