Rename SS and CS to avoid name clashes with macros on x86/solaris (/usr/include/sys/regset.h).

This commit is contained in:
Sylvain Pion 2008-06-15 16:21:29 +00:00
parent 59ac90c782
commit 7dfd4237cc
6 changed files with 123 additions and 123 deletions

View File

@ -34,15 +34,15 @@
CGAL_BEGIN_NAMESPACE
// Note: TT, SS, and DD are here for backwards compatibility, they are
// Note: Tt, Ss, and Dd are here for backwards compatibility, they are
// not used.
template < class I, class TT = int, class SS = int, class DD = int>
template < class I, class Tt = int, class Ss = int, class Dd = int>
class Safe_circulator_from_iterator {
public:
// TYPES
typedef Safe_circulator_from_iterator<I,TT,SS,DD> Self;
typedef Circulator_from_iterator<I,TT,SS,DD> Unsafe;
typedef Safe_circulator_from_iterator<I,Tt,Ss,Dd> Self;
typedef Circulator_from_iterator<I,Tt,Ss,Dd> Unsafe;
typedef I iterator;
typedef std::iterator_traits<iterator> Traits;

View File

@ -964,14 +964,14 @@ operator+( typename Const_circulator_from_container<Ctnr>::difference_type n,
}
// Note: TT, SS, and DD are here for backwards compatibility, they are
// Note: Tt, Ss, and Dd are here for backwards compatibility, they are
// not used.
template < class I, class TT = int, class SS = int, class DD = int>
template < class I, class Tt = int, class Ss = int, class Dd = int>
class Circulator_from_iterator {
public:
// TYPES
typedef Circulator_from_iterator<I,TT,SS,DD> Self;
typedef Circulator_from_iterator<I,Tt,Ss,Dd> Self;
typedef I iterator;
typedef std::iterator_traits<iterator> Traits;

View File

@ -1163,13 +1163,13 @@ int Curve<NT>::verticalIntersections(const BigFloat & x, BFVecInterval & vI,
d = PY.getTrueDegree();
if(d <= 0) return(d);
Sturm<Expr> SS(PY); // should be replaced by BigFloat version
// Sturm<BigFloat> SS(PY); // unstable still
SS.isolateRoots(vI);
Sturm<Expr> Ss(PY); // should be replaced by BigFloat version
// Sturm<BigFloat> Ss(PY); // unstable still
Ss.isolateRoots(vI);
int s = vI.size();
if ((aprec != 0) && (s>0))
SS.newtonRefineAllRoots(vI, aprec);
Ss.newtonRefineAllRoots(vI, aprec);
return s;
}
@ -1397,16 +1397,16 @@ if (!xCurr.isExact()) std::cout<<"xCurr has error! xCurr=" << xCurr << std::endl
// Assumes that C & D are quasi-monic.(or generally aligned)
template <class NT>
void Xintersections( Curve<NT>& P ,Curve<NT>& Q, BFVecInterval &vI){
Sturm<NT> SS(resY(P, Q));
SS.isolateRoots(vI);
Sturm<NT> Ss(resY(P, Q));
Ss.isolateRoots(vI);
}
//Yintersections(C, D, vI):
// similar to Xintersections
template <class NT>
void Yintersections( Curve<NT>& P ,Curve<NT>& Q, BFVecInterval &vI){
Sturm<NT> SS(resX(P, Q));
SS.isolateRoots(vI);
Sturm<NT> Ss(resX(P, Q));
Ss.isolateRoots(vI);
}
// Display Intervals

View File

@ -1099,9 +1099,9 @@ CORE_INLINE bool isZeroIn(BFInterval I) {
template<class NT>
CORE_INLINE void testSturm(const Polynomial<NT>&P, int prec, int n = -1) {
Sturm<NT> SS (P);
Sturm<NT> Ss (P);
BFVecInterval v;
SS.refineAllRoots(v, prec);
Ss.refineAllRoots(v, prec);
std::cout << " Number of roots is " << v.size() <<std::endl;
if ((n >= 0) & (v.size() == (unsigned)n))
std::cout << " (CORRECT!)" << std::endl;
@ -1122,9 +1122,9 @@ CORE_INLINE void testSturm(const Polynomial<NT>&P, int prec, int n = -1) {
// (will print an error message if n is wrong)
template<class NT>
CORE_INLINE void testNewtonSturm(const Polynomial<NT>&P, int prec, int n = -1) {
Sturm<NT> SS (P);
Sturm<NT> Ss (P);
BFVecInterval v;
SS.newtonRefineAllRoots(v, prec);
Ss.newtonRefineAllRoots(v, prec);
std::cout << " Number of roots is " << v.size();
if ((n >= 0) & (v.size() == (unsigned)n))
std::cout << " (CORRECT!)" << std::endl;

View File

@ -76,8 +76,8 @@ struct URefiner {
typedef typename UI::Exact_certificate Exact_certificate;
typedef typename UI::Exact_time Exact_root;
typedef CGAL::Interval_nt_advanced INT;
struct CS: public CGAL::Kinetic::Ref_counted<CS> {
CS(const Exact_certificate &c): cert_(c){}
struct Cs: public CGAL::Kinetic::Ref_counted<Cs> {
Cs(const Exact_certificate &c): cert_(c){}
Exact_certificate cert_;
};
@ -108,7 +108,7 @@ struct URefiner {
if (has_exact_root()) return false;
double dd= iv.second-iv.first;
if (cert_ == typename CS::Handle()) {
if (cert_ == typename Cs::Handle()) {
CGAL::Protect_FPU_rounding<true> prot;
INT niv=ui_->Newton_refine(certf_, certpf_, INT(iv));
@ -160,7 +160,7 @@ struct URefiner {
}
bool has_exact_root() const {
return cert_!= typename CS::Handle() ;
return cert_!= typename Cs::Handle() ;
}
CGAL::Sign sign_at(INT t) const {
@ -180,7 +180,7 @@ struct URefiner {
++stat_exact_certificate_functions_;
++stat_exact_certificate_functions_from_compare_;
CGAL_UD_DEBUG("Generating exact with interval " << iv.first << " " << iv.second << std::endl);
cert_= new CS(ui_->compute_exact_failure_time(tuple_, iv.first));
cert_= new Cs(ui_->compute_exact_failure_time(tuple_, iv.first));
CGAL_UD_DEBUG("Got " << cert_->cert_.failure_time() << std::endl);
CGAL_assertion(check_.failure_time() == cert_->cert_.failure_time());
//iv= CGAL::to_interval(exact_root());
@ -191,7 +191,7 @@ struct URefiner {
cs[1]=-1.0;
typename Exact_certificate::Function f(cs, cs+2);
// hack
cert_= new CS(Exact_certificate(f, typename UI::Kinetic_kernel::Function_kernel(), -1, 2));
cert_= new Cs(Exact_certificate(f, typename UI::Kinetic_kernel::Function_kernel(), -1, 2));
CGAL_UD_DEBUG(f << ": " << exact_root() << std::endl);
CGAL_assertion(exact_root() == Exact_root(iv.first));
#ifndef NDEBUG
@ -225,7 +225,7 @@ struct URefiner {
void set_exact_certificate(const Exact_certificate& ec) {
CGAL_precondition(!has_exact_root());
cert_= new CS(ec);
cert_= new Cs(ec);
CGAL_postcondition(exact_root() == check_.failure_time());
}
@ -239,7 +239,7 @@ struct URefiner {
Cert_tuple tuple_;
typename UI::Handle ui_;
mutable typename CS::Handle cert_;
mutable typename Cs::Handle cert_;
typename UI::Certificate_function certf_;
typename UI::Certificate_derivitive certpf_;
#ifndef NDEBUG

View File

@ -33,8 +33,8 @@
CGAL_BEGIN_NAMESPACE
template<class Gt, class SS, class V>
Straight_skeleton_builder_2<Gt,SS,V>::Straight_skeleton_builder_2 ( boost::optional<FT> aMaxTime, Traits const& aTraits, Visitor const& aVisitor )
template<class Gt, class Ss, class V>
Straight_skeleton_builder_2<Gt,Ss,V>::Straight_skeleton_builder_2 ( boost::optional<FT> aMaxTime, Traits const& aTraits, Visitor const& aVisitor )
:
mTraits(aTraits)
,mVisitor(aVisitor)
@ -50,34 +50,34 @@ Straight_skeleton_builder_2<Gt,SS,V>::Straight_skeleton_builder_2 ( boost::optio
{
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Halfedge_handle
Straight_skeleton_builder_2<Gt,SS,V>::validate( Halfedge_handle aH ) const
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Halfedge_handle
Straight_skeleton_builder_2<Gt,Ss,V>::validate( Halfedge_handle aH ) const
{
if ( !handle_assigned(aH) )
throw std::runtime_error("Incomplete straight skeleton");
return aH ;
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Vertex_handle
Straight_skeleton_builder_2<Gt,SS,V>::validate( Vertex_handle aH ) const
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Vertex_handle
Straight_skeleton_builder_2<Gt,Ss,V>::validate( Vertex_handle aH ) const
{
if ( !handle_assigned(aH) )
throw std::runtime_error("Incomplete straight skeleton");
return aH ;
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::InsertEventInPQ( EventPtr aEvent )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::InsertEventInPQ( EventPtr aEvent )
{
mPQ.push(aEvent);
CGAL_STSKEL_BUILDER_TRACE(4, "Enque: " << *aEvent);
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::EventPtr
Straight_skeleton_builder_2<Gt,SS,V>::PopEventFromPQ()
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::EventPtr
Straight_skeleton_builder_2<Gt,Ss,V>::PopEventFromPQ()
{
EventPtr rR = mPQ.top(); mPQ.pop();
return rR ;
@ -86,9 +86,9 @@ Straight_skeleton_builder_2<Gt,SS,V>::PopEventFromPQ()
// Tests whether there is an edge event between the 3 contour edges defining nodes 'aLnode' and 'aRNode'.
// If such event exits and is not in the past, it's returned. Otherwise the result is null
//
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::EventPtr
Straight_skeleton_builder_2<Gt,SS,V>::FindEdgeEvent( Vertex_handle aLNode, Vertex_handle aRNode )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::EventPtr
Straight_skeleton_builder_2<Gt,Ss,V>::FindEdgeEvent( Vertex_handle aLNode, Vertex_handle aRNode )
{
EventPtr rResult ;
@ -121,9 +121,9 @@ Straight_skeleton_builder_2<Gt,SS,V>::FindEdgeEvent( Vertex_handle aLNode, Verte
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::EventPtr
Straight_skeleton_builder_2<Gt,SS,V>::IsPseudoSplitEvent( EventPtr const& aEvent, Vertex_handle_pair aOpp, Site const& aSite )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::EventPtr
Straight_skeleton_builder_2<Gt,Ss,V>::IsPseudoSplitEvent( EventPtr const& aEvent, Vertex_handle_pair aOpp, Site const& aSite )
{
EventPtr rPseudoSplitEvent ;
@ -183,8 +183,8 @@ Straight_skeleton_builder_2<Gt,SS,V>::IsPseudoSplitEvent( EventPtr const& aEvent
// the 'reflex borders' are not consecutive in the input polygon but they are in the corresponding offset polygon that
// contains aNode as a vertex.
//
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::CollectSplitEvent( Vertex_handle aNode, Triedge const& aTriedge )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::CollectSplitEvent( Vertex_handle aNode, Triedge const& aTriedge )
{
if ( IsOppositeEdgeFacingTheSplitSeed(aNode,aTriedge.e2()) )
{
@ -207,8 +207,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::CollectSplitEvent( Vertex_handle aNod
}
// Tests the reflex wavefront emerging from 'aNode' against the other contour edges in search for split events.
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::CollectSplitEvents( Vertex_handle aNode )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::CollectSplitEvents( Vertex_handle aNode )
{
// lLBorder and lRBorder are the consecutive contour edges forming the reflex wavefront.
Triedge const& lTriedge = GetVertexTriedge(aNode);
@ -233,8 +233,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::CollectSplitEvents( Vertex_handle aNo
// Finds and enques all the new potential events produced by the vertex wavefront emerging from 'aNode' (which can be a reflex wavefront).
// This new events are simply stored in the priority queue, not processed.
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::CollectNewEvents( Vertex_handle aNode )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::CollectNewEvents( Vertex_handle aNode )
{
// A Straight Skeleton is the trace of the 'grassfire propagation' that corresponds to the inward move of all the vertices
// of a polygon along their angular bisectors.
@ -300,8 +300,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::CollectNewEvents( Vertex_handle aNode
// This ocurrs when the bisector emerging from vertex 'aA' is defined by the same pair of
// contour edges as the bisector emerging from vertex 'aB' (but in opposite order).
//
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::HandleSimultaneousEdgeEvent( Vertex_handle aA, Vertex_handle aB )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::HandleSimultaneousEdgeEvent( Vertex_handle aA, Vertex_handle aB )
{
CGAL_STSKEL_BUILDER_TRACE ( 2, "Handling simultaneous EdgeEvent between N" << aA ->id() << " and N" << aB ->id() ) ;
@ -400,8 +400,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::HandleSimultaneousEdgeEvent( Vertex_h
// Returns true if the skeleton edges 'aA' and 'aB' are defined by the same pair of contour edges (but possibly in reverse order)
//
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::AreBisectorsCoincident ( Halfedge_const_handle aA, Halfedge_const_handle aB ) const
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::AreBisectorsCoincident ( Halfedge_const_handle aA, Halfedge_const_handle aB ) const
{
CGAL_STSKEL_BUILDER_TRACE ( 3, "Testing for simultaneous EdgeEvents between B" << aA->id() << " and B" << aB->id() ) ;
@ -414,8 +414,8 @@ bool Straight_skeleton_builder_2<Gt,SS,V>::AreBisectorsCoincident ( Halfedge_con
|| ( lA_LBorder == lB_RBorder && lA_RBorder == lB_LBorder ) ;
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::UpdatePQ( Vertex_handle aNode )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::UpdatePQ( Vertex_handle aNode )
{
Vertex_handle lPrev = GetPrevInLAV(aNode) ;
Vertex_handle lNext = GetNextInLAV(aNode) ;
@ -434,8 +434,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::UpdatePQ( Vertex_handle aNode )
else
CollectNewEvents(aNode);
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::CreateInitialEvents()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::CreateInitialEvents()
{
CGAL_STSKEL_BUILDER_TRACE(0, "Creating initial events...");
for ( Vertex_iterator v = mSSkel->vertices_begin(); v != mSSkel->vertices_end(); ++ v )
@ -449,8 +449,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::CreateInitialEvents()
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::CreateContourBisectors()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::CreateContourBisectors()
{
CGAL_STSKEL_BUILDER_TRACE(0, "Creating contour bisectors...");
for ( Vertex_iterator v = mSSkel->vertices_begin(); v != mSSkel->vertices_end(); ++ v )
@ -520,8 +520,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::CreateContourBisectors()
}
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::InitPhase()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::InitPhase()
{
mVisitor.on_initialization_started(mSSkel->size_of_vertices());
CreateContourBisectors();
@ -529,9 +529,9 @@ void Straight_skeleton_builder_2<Gt,SS,V>::InitPhase()
mVisitor.on_initialization_finished();
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Vertex_handle
Straight_skeleton_builder_2<Gt,SS,V>::ConstructEdgeEventNode( EdgeEvent& aEvent )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Vertex_handle
Straight_skeleton_builder_2<Gt,Ss,V>::ConstructEdgeEventNode( EdgeEvent& aEvent )
{
CGAL_STSKEL_BUILDER_TRACE ( 2, "Creating EdgeEvent Node" ) ;
@ -574,9 +574,9 @@ Straight_skeleton_builder_2<Gt,SS,V>::ConstructEdgeEventNode( EdgeEvent& aEvent
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,SS,V>::LookupOnSLAV ( Halfedge_handle aBorder, EventPtr const& aEvent, Site& rSite )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,Ss,V>::LookupOnSLAV ( Halfedge_handle aBorder, EventPtr const& aEvent, Site& rSite )
{
Vertex_handle_pair rResult ;
@ -651,9 +651,9 @@ Straight_skeleton_builder_2<Gt,SS,V>::LookupOnSLAV ( Halfedge_handle aBorder, Ev
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,SS,V>::ConstructSplitEventNodes( SplitEvent& aEvent, Vertex_handle aOppR )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,Ss,V>::ConstructSplitEventNodes( SplitEvent& aEvent, Vertex_handle aOppR )
{
Vertex_handle_pair rResult;
@ -705,9 +705,9 @@ Straight_skeleton_builder_2<Gt,SS,V>::ConstructSplitEventNodes( SplitEvent& aEve
return rResult ;
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,SS,V>::ConstructPseudoSplitEventNodes( PseudoSplitEvent& aEvent )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::Vertex_handle_pair
Straight_skeleton_builder_2<Gt,Ss,V>::ConstructPseudoSplitEventNodes( PseudoSplitEvent& aEvent )
{
Vertex_handle_pair rResult;
@ -771,14 +771,14 @@ Straight_skeleton_builder_2<Gt,SS,V>::ConstructPseudoSplitEventNodes( PseudoSpli
return rResult ;
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::IsProcessed( EventPtr aEvent )
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::IsProcessed( EventPtr aEvent )
{
return IsProcessed(aEvent->seed0()) || IsProcessed(aEvent->seed1()) ;
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::IsValidEdgeEvent( EdgeEvent const& aEvent )
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::IsValidEdgeEvent( EdgeEvent const& aEvent )
{
bool rResult = false ;
@ -826,8 +826,8 @@ bool Straight_skeleton_builder_2<Gt,SS,V>::IsValidEdgeEvent( EdgeEvent const& aE
return rResult ;
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::HandleEdgeEvent( EventPtr aEvent )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::HandleEdgeEvent( EventPtr aEvent )
{
EdgeEvent& lEvent = dynamic_cast<EdgeEvent&>(*aEvent) ;
@ -917,14 +917,14 @@ void Straight_skeleton_builder_2<Gt,SS,V>::HandleEdgeEvent( EventPtr aEvent )
}
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::IsValidSplitEvent( SplitEvent const& aEvent )
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::IsValidSplitEvent( SplitEvent const& aEvent )
{
return true ;
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::HandleSplitEvent( EventPtr aEvent, Vertex_handle_pair aOpp )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::HandleSplitEvent( EventPtr aEvent, Vertex_handle_pair aOpp )
{
SplitEvent& lEvent = dynamic_cast<SplitEvent&>(*aEvent) ;
@ -1057,8 +1057,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::HandleSplitEvent( EventPtr aEvent, Ve
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::SetupNewNode( Vertex_handle aNode )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::SetupNewNode( Vertex_handle aNode )
{
// In an edge-edge anihiliation the current polygon becomes a two-node degenerate chain collapsed into a single point
if ( GetPrevInLAV(aNode) != GetNextInLAV(aNode) )
@ -1092,8 +1092,8 @@ bool counterclockwise_at_or_in_between_2( Direction const& p, Direction const& q
return p == q || p == r || K().counterclockwise_in_between_2_object()(p,q,r) ;
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::IsValidPseudoSplitEvent( PseudoSplitEvent const& aEvent )
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::IsValidPseudoSplitEvent( PseudoSplitEvent const& aEvent )
{
Vertex_handle lSeed0 = aEvent.seed0();
Vertex_handle lSeed1 = aEvent.seed1();
@ -1146,8 +1146,8 @@ bool Straight_skeleton_builder_2<Gt,SS,V>::IsValidPseudoSplitEvent( PseudoSplitE
return !lTangled ;
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::HandlePseudoSplitEvent( EventPtr aEvent )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::HandlePseudoSplitEvent( EventPtr aEvent )
{
PseudoSplitEvent& lEvent = dynamic_cast<PseudoSplitEvent&>(*aEvent) ;
@ -1255,8 +1255,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::HandlePseudoSplitEvent( EventPtr aEve
}
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::HandleSplitOrPseudoSplitEvent( EventPtr aEvent )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::HandleSplitOrPseudoSplitEvent( EventPtr aEvent )
{
Halfedge_handle lOppEdge = aEvent->triedge().e2() ;
@ -1273,24 +1273,24 @@ void Straight_skeleton_builder_2<Gt,SS,V>::HandleSplitOrPseudoSplitEvent( EventP
}
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::InsertNextSplitEventInPQ( Vertex_handle v )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::InsertNextSplitEventInPQ( Vertex_handle v )
{
EventPtr lSplitEvent = PopNextSplitEvent(v);
if ( !!lSplitEvent )
InsertEventInPQ(lSplitEvent);
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::InsertNextSplitEventsInPQ()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::InsertNextSplitEventsInPQ()
{
for ( typename Vertex_handle_vector::iterator v = mReflexVertices.begin(), ev = mReflexVertices.end(); v != ev ; ++ v )
if ( !IsProcessed(*v) )
InsertNextSplitEventInPQ(*v);
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::Propagate()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::Propagate()
{
CGAL_STSKEL_BUILDER_TRACE(0,"Propagating events...");
mVisitor.on_propagation_started();
@ -1328,8 +1328,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::Propagate()
mVisitor.on_propagation_finished();
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::MergeSplitNodes ( Vertex_handle_pair aSplitNodes )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::MergeSplitNodes ( Vertex_handle_pair aSplitNodes )
{
Vertex_handle lLNode, lRNode ;
boost::tie(lLNode,lRNode)=aSplitNodes;
@ -1373,8 +1373,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::MergeSplitNodes ( Vertex_handle_pair
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::EraseNode ( Vertex_handle aNode )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::EraseNode ( Vertex_handle aNode )
{
aNode->VBase::reset_id__internal__(-aNode->id());
mSSkel->SSkel::Base::vertices_erase(aNode);
@ -1452,8 +1452,8 @@ bool ValidateFinalBisectorsAfterMerge( Vertex_handle /* v */, Halfedge_around_ve
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::RelinkBisectorsAroundMultinode( Vertex_handle const& v0, Halfedge_handle_vector& aLinks )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::RelinkBisectorsAroundMultinode( Vertex_handle const& v0, Halfedge_handle_vector& aLinks )
{
CGAL_assertion( aLinks.size() > 0 ) ;
@ -1498,8 +1498,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::RelinkBisectorsAroundMultinode( Verte
}
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::PreprocessMultinode( Multinode& aMN )
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::PreprocessMultinode( Multinode& aMN )
{
//
// A Multinode is a run of coincident nodes along a face.
@ -1555,8 +1555,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::PreprocessMultinode( Multinode& aMN )
// Replaces a run of coincident nodes with a single one by removing all but the first, remvong node-to-node bisectors and
// relinking the other bisectors.
//
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::ProcessMultinode( Multinode& aMN
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::ProcessMultinode( Multinode& aMN
, Halfedge_handle_vector& rBisectorsToRemove
, Vertex_handle_vector& rNodesToRemove
)
@ -1593,9 +1593,9 @@ void Straight_skeleton_builder_2<Gt,SS,V>::ProcessMultinode( Multinode&
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::MultinodePtr
Straight_skeleton_builder_2<Gt,SS,V>::CreateMultinode( Halfedge_handle begin, Halfedge_handle end )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::MultinodePtr
Straight_skeleton_builder_2<Gt,Ss,V>::CreateMultinode( Halfedge_handle begin, Halfedge_handle end )
{
return MultinodePtr( new Multinode(begin,end) );
}
@ -1626,8 +1626,8 @@ Straight_skeleton_builder_2<Gt,SS,V>::CreateMultinode( Halfedge_handle begin, Ha
// at the same time and point. IOW, 2 nodes are coincident if they represent the simultaneous
// coallison of exactly 4 edges (the union of 2 triedges with 2 common elements is a set of 4).
//
template<class Gt, class SS, class V>
void Straight_skeleton_builder_2<Gt,SS,V>::MergeCoincidentNodes()
template<class Gt, class Ss, class V>
void Straight_skeleton_builder_2<Gt,Ss,V>::MergeCoincidentNodes()
{
//
// NOTE: This code might be executed on a topologically incosistent HDS, thus the need to check
@ -1729,8 +1729,8 @@ void Straight_skeleton_builder_2<Gt,SS,V>::MergeCoincidentNodes()
EraseNode(*vi);
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::FinishUp()
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::FinishUp()
{
CGAL_STSKEL_BUILDER_TRACE(0, "\n\nFinishing up...");
@ -1738,12 +1738,12 @@ bool Straight_skeleton_builder_2<Gt,SS,V>::FinishUp()
std::for_each( mSplitNodes.begin()
,mSplitNodes.end ()
,boost::bind(&Straight_skeleton_builder_2<Gt,SS,V>::MergeSplitNodes,this,_1)
,boost::bind(&Straight_skeleton_builder_2<Gt,Ss,V>::MergeSplitNodes,this,_1)
) ;
std::for_each( mDanglingBisectors.begin()
,mDanglingBisectors.end ()
,boost::bind(&Straight_skeleton_builder_2<Gt,SS,V>::EraseBisector,this,_1)
,boost::bind(&Straight_skeleton_builder_2<Gt,Ss,V>::EraseBisector,this,_1)
) ;
MergeCoincidentNodes();
@ -1753,16 +1753,16 @@ bool Straight_skeleton_builder_2<Gt,SS,V>::FinishUp()
return mSSkel->is_valid() ;
}
template<class Gt, class SS, class V>
bool Straight_skeleton_builder_2<Gt,SS,V>::Run()
template<class Gt, class Ss, class V>
bool Straight_skeleton_builder_2<Gt,Ss,V>::Run()
{
InitPhase();
Propagate();
return FinishUp();
}
template<class Gt, class SS, class V>
typename Straight_skeleton_builder_2<Gt,SS,V>::SSkelPtr Straight_skeleton_builder_2<Gt,SS,V>::construct_skeleton( bool aNull_if_failed )
template<class Gt, class Ss, class V>
typename Straight_skeleton_builder_2<Gt,Ss,V>::SSkelPtr Straight_skeleton_builder_2<Gt,Ss,V>::construct_skeleton( bool aNull_if_failed )
{
bool ok = false ;