26 using namespace GMap3d;
30 bool ADuplicateEmbeddings,
31 bool A0Sew,
bool A1Sew,
32 bool A2Sew,
bool A3Sew)
34 if (AMap==NULL) AMap=
this;
46 for (; it.
cont(); ++it)
51 if (ADuplicateEmbeddings)
52 AMap->
setMark(newDart, duplicated);
54 (*it)->setDirectInfo(directInfoIndex, newDart);
61 AMap, A0Sew, A1Sew, A2Sew, A3Sew);
64 if (ADuplicateEmbeddings)
66 AMarkNumber, duplicated,
67 directInfoIndex, AMap);
70 if (ADirectInfoIndex<0)
82 bool ADuplicateEmbeddings)
85 if (AMap==NULL) AMap=
this;
96 for (; cov->
cont(); ++(*cov))
99 AMap->
setMark(newDart, duplicated);
101 (**cov)->setDirectInfo(directInfoIndex, newDart);
112 if (ADuplicateEmbeddings)
114 selected, duplicated,
115 directInfoIndex, AMap);
125 if (ADirectInfoIndex<0)
134 #define DUP(D) (getDirectInfoAsDart(D, ADirectInfoIndex))
137 int AMarkNumber,
int ADirectInfoIndex,
139 bool A0Sew,
bool A1Sew,
140 bool A2Sew,
bool A3Sew)
142 assert(ACoverage!=NULL);
143 assert(AMarkNumber>=0);
144 assert(ADirectInfoIndex>=0);
147 for (ACoverage->
reinit(); ACoverage->
cont(); ++(*ACoverage))
149 CDart * d = **ACoverage;
151 if (AMarkNumber<0 ||
isMarked(d, AMarkNumber))
166 for (ACoverage->
reinit(); ACoverage->
cont(); ++(*ACoverage))
168 CDart * d = **ACoverage;
188 int ADirectInfoIndex,
191 assert(ACoverage!=NULL);
192 assert(AMarkInitial>=0);
193 assert(AMarkDuplicated>=0);
194 assert(ADirectInfoIndex>=0);
195 assert(
this!=AMap || AMarkInitial!=AMarkDuplicated);
198 int treated2 = (AMap==
this?treated:AMap->
getNewMark());
204 for (ACoverage->
reinit(); ACoverage->
cont(); ++(*ACoverage))
206 CDart * d = **ACoverage;
222 for (; cov->
cont();
setMark(**cov, treated), ++(*cov))
223 if (
isMarked(**cov, AMarkInitial) &&
227 DUP(**cov)->addEmbedding(dupE);
240 if (
this!=AMap || !
isMarked(d, AMarkDuplicated) )
250 for (ACoverage->
reinit(); ACoverage->
cont(); ++(*ACoverage))
255 if (AMap->isMarked(
DUP(**ACoverage), treated2))
256 AMap->unmarkOrbit(
DUP(**ACoverage),
TOrbit(i), treated2);
261 if ( AMap!=
this ) AMap->
freeMark(treated2);