From 248f88c89214173e0e3b756c8578c30daf2b8407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Fri, 13 Apr 2012 13:00:42 +0000 Subject: [PATCH 02/54] Added deprecated tags to the documentation of HalfedgeDS_default when the work-around was concerned. --- HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex | 8 ++++++++ HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex index 091d09732f8..d1a7255dd48 100644 --- a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex +++ b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex @@ -503,6 +503,12 @@ a halfedge. There is no automatic update required. % +-----------------------------------+ \ccImplementation +CGAL does no longer support any compiler that requires this +work-around. \ccc{HalfedgeDS_default} will now +always be a template. + +\begin{ccDeprecated} + Classes parameterized with a halfedge data structure, such as \ccc{CGAL::Polyhedron_3}, need to declare a class template as one of its template parameters for the \ccRefName. For compilers not supporting @@ -534,6 +540,8 @@ following program fragment illustrates this workaround: #endif \end{ccExampleCode} +\end{ccDeprecated} + \ccTagDefaults \end{ccRefConcept} diff --git a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex index 48df5d8145b..a1fdb708890 100644 --- a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex +++ b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex @@ -70,6 +70,12 @@ $n$ the total number of vertices, halfedges, and faces. The former suboptimal implementation with an $O(n \log n)$ runtime has been replaced with a faster implementation based on hashing for the pointer lookup. +CGAL does no longer support any compiler that requires this +work-around. And it is no longer required. \ccRefName will always be a +template. + +\begin{ccDeprecated} + Due to a workaround for the flag \ccc{CGAL_CFG_NO_TMPL_IN_TMPL_PARAM}, a halfedge data structure cannot be instantiated directly. For the \ccRefName\ a macro simplifies its direct use. However, when using a @@ -88,6 +94,9 @@ the macro. // The direct instantiation of the default HalfedgeDS given a Traits class. typedef CGAL_HALFEDGEDS_DEFAULT HDS; \end{ccExampleCode} + +\end{ccDeprecated} + \end{ccRefClass} From 8f1ce2412ce378ffd4bd4e136faf07789b1bcfcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Fri, 13 Apr 2012 13:13:30 +0000 Subject: [PATCH 03/54] Removed all places where the CGAL_CFG_NO_TMPL_IN_TMPL work-around was used. Those were mostly in Polyhedron and HalfedgeDS but some places in Arrangement_2 used it, too. Neither of the parts of Arrangement_2 have been documented. --- .../Arr_polyhedral_sgm.h | 6 ----- .../Arr_spherical_gaussian_map_3.h | 6 ----- .../boost/graph/graph_traits_Polyhedron_3.h | 7 +----- .../halfedge_graph_traits_Polyhedron_3.h | 6 +---- .../boost/graph/properties_Polyhedron_3.h | 6 +---- HalfedgeDS/doc_tex/HalfedgeDS/main.tex | 6 ----- HalfedgeDS/include/CGAL/HalfedgeDS_default.h | 22 ------------------- HalfedgeDS/include/CGAL/HalfedgeDS_list.h | 21 ++---------------- HalfedgeDS/include/CGAL/HalfedgeDS_vector.h | 22 ------------------- HalfedgeDS/test/HalfedgeDS/test_hds.cpp | 10 --------- .../test/HalfedgeDS/test_hds_decorator.cpp | 5 ----- Mesh_3/demo/Mesh_3/Polyhedron_type_fwd.h | 6 ----- Mesh_3/include/CGAL/Triangle_accessor_3.h | 2 -- Nef_2/noweb/Constrained_triang.lw | 2 +- Nef_3/include/CGAL/Nef_polyhedron_3.h | 2 -- .../demo/Polyhedron/Polyhedron_type_fwd.h | 4 ---- Polyhedron/include/CGAL/Polyhedron_3.h | 6 ----- .../CGAL/IO/Polyhedron_VRML_2_ostream.h | 2 -- .../CGAL/IO/Polyhedron_geomview_ostream.h | 2 -- .../CGAL/IO/Polyhedron_inventor_ostream.h | 2 -- .../include/CGAL/IO/Polyhedron_iostream.h | 4 ---- Polyhedron_IO/include/CGAL/IO/print_OFF.h | 4 ---- Polyhedron_IO/include/CGAL/IO/print_VRML_1.h | 2 -- Polyhedron_IO/include/CGAL/IO/print_VRML_2.h | 2 -- .../include/CGAL/IO/print_inventor.h | 2 -- .../include/CGAL/IO/print_wavefront.h | 2 -- Polyhedron_IO/include/CGAL/IO/scan_OFF.h | 4 ---- .../halfedge_collapse_Polyhedron_3.h | 6 +---- .../include/CGAL/enriched_polyhedron.h | 2 -- .../Polyhedron_type_fwd.h | 4 ---- 30 files changed, 7 insertions(+), 170 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h index 612445215ba..7877cd716c6 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h @@ -607,9 +607,7 @@ public: /*! */ template -#endif class T_Dcel = Arr_polyhedral_sgm_arr_dcel> class Arr_polyhedral_sgm : public Arr_spherical_gaussian_map_3 @@ -621,11 +619,7 @@ public: typedef typename Geometry_traits_2::Point_3 Point_3; typedef typename Geometry_traits_2::Vector_3 Vector_3; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM typedef T_Dcel Dcel; -#else - typedef typename T_Dcel::template Dcel Dcel; -#endif // For some reason MSVC barfs on the friend statement below. Therefore, // we declare the Base to be public to overcome the problem. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_spherical_gaussian_map_3.h b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_spherical_gaussian_map_3.h index 21331c8e902..3e8f798a1e4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_spherical_gaussian_map_3.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_spherical_gaussian_map_3.h @@ -331,18 +331,12 @@ protected: * embedded on the sphere. */ template -#endif class T_Dcel = Arr_default_dcel> class Arr_spherical_gaussian_map_3 : public Arrangement_on_surface_2 -#else - typename T_Dcel::template Dcel -#endif > > { diff --git a/BGL/include/CGAL/boost/graph/graph_traits_Polyhedron_3.h b/BGL/include/CGAL/boost/graph/graph_traits_Polyhedron_3.h index 3bae9465832..9b6e37fe93f 100644 --- a/BGL/include/CGAL/boost/graph/graph_traits_Polyhedron_3.h +++ b/BGL/include/CGAL/boost/graph/graph_traits_Polyhedron_3.h @@ -24,12 +24,7 @@ #include -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM -# define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS -#else -# define CGAL_HDS_PARAM_ class HDS -#endif - +#define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS // // NOTE: The BGL algorithms are NOT const-correct: i.e., they take a "G const&" diff --git a/BGL/include/CGAL/boost/graph/halfedge_graph_traits_Polyhedron_3.h b/BGL/include/CGAL/boost/graph/halfedge_graph_traits_Polyhedron_3.h index d03eaa8d53b..6707078bdad 100644 --- a/BGL/include/CGAL/boost/graph/halfedge_graph_traits_Polyhedron_3.h +++ b/BGL/include/CGAL/boost/graph/halfedge_graph_traits_Polyhedron_3.h @@ -26,11 +26,7 @@ #include #include -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM -# define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS -#else -# define CGAL_HDS_PARAM_ class HDS -#endif +#define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS // // NOTE: The BGL algorithms are NOT const-correct: i.e., they take a "G const&" diff --git a/BGL/include/CGAL/boost/graph/properties_Polyhedron_3.h b/BGL/include/CGAL/boost/graph/properties_Polyhedron_3.h index 03b4540e0dd..9e606e605f1 100644 --- a/BGL/include/CGAL/boost/graph/properties_Polyhedron_3.h +++ b/BGL/include/CGAL/boost/graph/properties_Polyhedron_3.h @@ -24,11 +24,7 @@ #include #include -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM -# define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS -#else -# define CGAL_HDS_PARAM_ class HDS -#endif +#define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS namespace CGAL { diff --git a/HalfedgeDS/doc_tex/HalfedgeDS/main.tex b/HalfedgeDS/doc_tex/HalfedgeDS/main.tex index c3f509db26c..33a6d005949 100644 --- a/HalfedgeDS/doc_tex/HalfedgeDS/main.tex +++ b/HalfedgeDS/doc_tex/HalfedgeDS/main.tex @@ -254,12 +254,6 @@ One can later resize the data structure with further calls to the \ccc{reserve()} member function, but only if the data structure is in a consistent, i.e., {\em valid}, state. -Unfortunately this example has also to expose the workaround necessary -for compilers that do not support templates as template parameters. -The workaround is necessary if the symbolic constant -\verb|CGAL_CFG_NO_TMPL_IN_TMPL_PARAM| is set. It uses a member -template instead of the class template. - \ccIncludeExampleCode{HalfedgeDS/hds_prog_vector.cpp} diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_default.h b/HalfedgeDS/include/CGAL/HalfedgeDS_default.h index c325485f332..1f7c37112c9 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_default.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_default.h @@ -31,8 +31,6 @@ namespace CGAL { -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM - template class HalfedgeDS_default @@ -47,26 +45,6 @@ public: }; #define CGAL_HALFEDGEDS_DEFAULT ::CGAL::HalfedgeDS_default -#else // CGAL_CFG_NO_TMPL_IN_TMPL_PARAM // - -struct HalfedgeDS_default { - template - class HDS : public HalfedgeDS_list::HDS { - public: - typedef Traits_ Traits; - typedef HalfedgeDS_list::HDS D_S; - typedef typename D_S::size_type size_type; - HDS() {} - HDS( size_type v, size_type h, size_type f) - : HalfedgeDS_list::HDS(v,h,f) {} - }; -}; - -#define CGAL_HALFEDGEDS_DEFAULT ::CGAL::HalfedgeDS_default::HDS - -#endif // CGAL_CFG_NO_TMPL_IN_TMPL_PARAM // - } //namespace CGAL #endif // CGAL_HALFEDGEDS_DEFAULT_H // // EOF // diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_list.h b/HalfedgeDS/include/CGAL/HalfedgeDS_list.h index 2250c3714e0..9891bcdd5c1 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_list.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_list.h @@ -181,21 +181,12 @@ public: } }; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class Traits_, class HalfedgeDSItems, class Alloc = CGAL_ALLOCATOR(int)> class HalfedgeDS_list : public HalfedgeDS_list_types { public: typedef HalfedgeDS_list Self; -#else -struct HalfedgeDS_list { -template < class Traits_, class HalfedgeDSItems, - class Alloc = CGAL_ALLOCATOR(int)> -class HDS : public HalfedgeDS_list_types { -public: - typedef HDS Self; -#endif public: typedef HalfedgeDS_list_types Types; typedef typename Types::Traits Traits; @@ -374,7 +365,6 @@ private: } public: -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM HalfedgeDS_list() : nb_border_halfedges(0), nb_border_edges(0) {} // the empty polyhedron `P'. @@ -389,13 +379,6 @@ public: ~HalfedgeDS_list() { clear(); } HalfedgeDS_list( const Self& hds) -#else - HDS() : nb_border_halfedges(0), nb_border_edges(0) {} - HDS( size_type, size_type, size_type) - : nb_border_halfedges(0), nb_border_edges(0) {} - ~HDS() { clear(); } - HDS( const Self& hds) -#endif // CGAL_CFG_NO_TMPL_IN_TMPL_PARAM // : vertices( hds.vertices), //halfedges( hds.halfedges), faces( hds.faces), @@ -688,9 +671,9 @@ public: border_halfedges = i; } }; -#ifdef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM + }; -#endif + // #ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h index f6cf04b215d..fcf7198955a 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h @@ -143,21 +143,12 @@ public: }; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class Traits_, class HalfedgeDSItems, class Alloc = CGAL_ALLOCATOR(int)> class HalfedgeDS_vector : public HalfedgeDS_vector_types { public: typedef HalfedgeDS_vector Self; -#else -struct HalfedgeDS_vector { -template < class Traits_, class HalfedgeDSItems, - class Alloc = CGAL_ALLOCATOR(int)> -class HDS : public HalfedgeDS_vector_types { -public: - typedef HDS Self; -#endif typedef HalfedgeDS_vector_types Types; typedef typename Types::Traits Traits; typedef typename Types::Items Items; @@ -292,7 +283,6 @@ private: public: -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM HalfedgeDS_vector() : nb_border_halfedges(0), nb_border_edges(0) {} // empty halfedge data structure. @@ -308,16 +298,6 @@ public: } HalfedgeDS_vector( const Self& hds) -#else - HDS() : nb_border_halfedges(0), nb_border_edges(0) {} - HDS( size_type v, size_type h, size_type f) - : nb_border_halfedges(0), nb_border_edges(0) { - vertices.reserve(v); - halfedges.reserve(h); - faces.reserve(f); - } - HDS( const Self& hds) -#endif // CGAL_CFG_NO_TMPL_IN_TMPL_PARAM // : vertices( hds.vertices), halfedges( hds.halfedges), faces( hds.faces), @@ -669,9 +649,7 @@ public: } } }; -#ifdef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM }; -#endif } //namespace CGAL diff --git a/HalfedgeDS/test/HalfedgeDS/test_hds.cpp b/HalfedgeDS/test/HalfedgeDS/test_hds.cpp index 3131796c522..6055f20bf90 100644 --- a/HalfedgeDS/test/HalfedgeDS/test_hds.cpp +++ b/HalfedgeDS/test/HalfedgeDS/test_hds.cpp @@ -108,13 +108,8 @@ void test_HalfedgeDS_default() { void test_HalfedgeDS_vector() { // Instantiation of the halfedge data structure using vector // and maximal bases for polyhedral surfaces. -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM typedef CGAL::HalfedgeDS_vector< Dummy_traits_3, CGAL::Polyhedron_items_3> HDS; -#else - typedef CGAL::HalfedgeDS_vector::HDS< Dummy_traits_3, - CGAL::Polyhedron_items_3> HDS; -#endif typedef HDS::Halfedge Halfedge; typedef Halfedge::Base HBase; typedef HDS::Face_handle Face_handle; @@ -152,13 +147,8 @@ void test_HalfedgeDS_vector() { void test_HalfedgeDS_vector_min() { // Instantiation of the halfedge data structure using vector // and minimal bases as for an undirected graph. -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM typedef CGAL::HalfedgeDS_vector< Empty_traits, CGAL::HalfedgeDS_min_items> HDS; -#else - typedef CGAL::HalfedgeDS_vector::HDS< Empty_traits, - CGAL::HalfedgeDS_min_items> HDS; -#endif typedef HDS::Halfedge Halfedge; typedef Halfedge::Base HBase; diff --git a/HalfedgeDS/test/HalfedgeDS/test_hds_decorator.cpp b/HalfedgeDS/test/HalfedgeDS/test_hds_decorator.cpp index 61ed8bc0ab3..5b1eb944178 100644 --- a/HalfedgeDS/test/HalfedgeDS/test_hds_decorator.cpp +++ b/HalfedgeDS/test/HalfedgeDS/test_hds_decorator.cpp @@ -150,13 +150,8 @@ struct Dummy_traits_3 { void test_HalfedgeDS_decorator2() { // Instantiation of the halfedge data structure using vector // with max-bases for a polyhedral surface. -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM typedef CGAL::HalfedgeDS_vector< Dummy_traits_3, CGAL::Polyhedron_items_3> HDS; -#else - typedef CGAL::HalfedgeDS_vector::HDS< Dummy_traits_3, - CGAL::Polyhedron_items_3> HDS; -#endif typedef CGAL::HalfedgeDS_decorator Decorator; typedef HDS::Halfedge_handle Halfedge_handle; typedef HDS::Face_handle Face_handle; diff --git a/Mesh_3/demo/Mesh_3/Polyhedron_type_fwd.h b/Mesh_3/demo/Mesh_3/Polyhedron_type_fwd.h index 61dd6b9361d..5b84ee5fb0d 100644 --- a/Mesh_3/demo/Mesh_3/Polyhedron_type_fwd.h +++ b/Mesh_3/demo/Mesh_3/Polyhedron_type_fwd.h @@ -17,18 +17,12 @@ namespace CGAL { class Polyhedron_items_3; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> class HalfedgeDS_default; -#else - struct HalfedgeDS_default; -#endif template < class PolyhedronTraits_3, class PolyhedronItems_3, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class T_HDS, class Alloc > diff --git a/Mesh_3/include/CGAL/Triangle_accessor_3.h b/Mesh_3/include/CGAL/Triangle_accessor_3.h index ae1faf5424e..f4ee9f91cf2 100644 --- a/Mesh_3/include/CGAL/Triangle_accessor_3.h +++ b/Mesh_3/include/CGAL/Triangle_accessor_3.h @@ -38,9 +38,7 @@ class Triangle_accessor_3 { template < class K,class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class T_HDS, class Alloc> class Triangle_accessor_3, K > diff --git a/Nef_2/noweb/Constrained_triang.lw b/Nef_2/noweb/Constrained_triang.lw index e5de0bd9712..1a4a847c0a8 100644 --- a/Nef_2/noweb/Constrained_triang.lw +++ b/Nef_2/noweb/Constrained_triang.lw @@ -970,7 +970,7 @@ triangulation algorithm. #include #include #include "Affine_geometry.h" -#undef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM + #include #include #include diff --git a/Nef_3/include/CGAL/Nef_polyhedron_3.h b/Nef_3/include/CGAL/Nef_polyhedron_3.h index ab1cb8d294c..7644f202392 100644 --- a/Nef_3/include/CGAL/Nef_polyhedron_3.h +++ b/Nef_3/include/CGAL/Nef_polyhedron_3.h @@ -556,9 +556,7 @@ protected: } template -#endif class T3, class T4 > Nef_polyhedron_3( CGAL::Polyhedron_3& P) { CGAL_NEF_TRACEN("construction from Polyhedron_3"); diff --git a/Polyhedron/demo/Polyhedron/Polyhedron_type_fwd.h b/Polyhedron/demo/Polyhedron/Polyhedron_type_fwd.h index 294e96bdf5b..72f27dac265 100644 --- a/Polyhedron/demo/Polyhedron/Polyhedron_type_fwd.h +++ b/Polyhedron/demo/Polyhedron/Polyhedron_type_fwd.h @@ -25,16 +25,12 @@ namespace CGAL { class Polyhedron_items_3; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HalfedgeDS_default; template < class PolyhedronTraits_3, class PolyhedronItems_3, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class T_HDS, class Alloc > diff --git a/Polyhedron/include/CGAL/Polyhedron_3.h b/Polyhedron/include/CGAL/Polyhedron_3.h index 9624dc53604..66cebb400f1 100644 --- a/Polyhedron/include/CGAL/Polyhedron_3.h +++ b/Polyhedron/include/CGAL/Polyhedron_3.h @@ -461,9 +461,7 @@ public: template < class PolyhedronTraits_3, class PolyhedronItems_3 = Polyhedron_items_3, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class T_HDS = HalfedgeDS_default, class Alloc = CGAL_ALLOCATOR(int)> class Polyhedron_3 { @@ -491,11 +489,7 @@ public: typedef PolyhedronTraits_3 Traits; typedef PolyhedronItems_3 Items; typedef I_Polyhedron_derived_items_3 Derived_items; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM typedef T_HDS< Traits, Derived_items, Alloc> HDS; -#else - typedef typename T_HDS::template HDS< Traits, Derived_items, Alloc> HDS; -#endif typedef HDS HalfedgeDS; // portability with older CGAL release diff --git a/Polyhedron_IO/include/CGAL/IO/Polyhedron_VRML_2_ostream.h b/Polyhedron_IO/include/CGAL/IO/Polyhedron_VRML_2_ostream.h index 737eaa53543..2511cf41ec1 100644 --- a/Polyhedron_IO/include/CGAL/IO/Polyhedron_VRML_2_ostream.h +++ b/Polyhedron_IO/include/CGAL/IO/Polyhedron_VRML_2_ostream.h @@ -32,9 +32,7 @@ namespace CGAL { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> VRML_2_ostream& operator<<( VRML_2_ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/Polyhedron_geomview_ostream.h b/Polyhedron_IO/include/CGAL/IO/Polyhedron_geomview_ostream.h index 85631511445..ee899ccd4a0 100644 --- a/Polyhedron_IO/include/CGAL/IO/Polyhedron_geomview_ostream.h +++ b/Polyhedron_IO/include/CGAL/IO/Polyhedron_geomview_ostream.h @@ -64,9 +64,7 @@ public: template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> Geomview_stream& operator<<( Geomview_stream &gv, diff --git a/Polyhedron_IO/include/CGAL/IO/Polyhedron_inventor_ostream.h b/Polyhedron_IO/include/CGAL/IO/Polyhedron_inventor_ostream.h index 3c6e8d7941c..60e8414efc4 100644 --- a/Polyhedron_IO/include/CGAL/IO/Polyhedron_inventor_ostream.h +++ b/Polyhedron_IO/include/CGAL/IO/Polyhedron_inventor_ostream.h @@ -30,9 +30,7 @@ namespace CGAL { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> Inventor_ostream_base& operator<<( Inventor_ostream_base& out, diff --git a/Polyhedron_IO/include/CGAL/IO/Polyhedron_iostream.h b/Polyhedron_IO/include/CGAL/IO/Polyhedron_iostream.h index c96495ef8b0..717fb064cda 100644 --- a/Polyhedron_IO/include/CGAL/IO/Polyhedron_iostream.h +++ b/Polyhedron_IO/include/CGAL/IO/Polyhedron_iostream.h @@ -30,9 +30,7 @@ namespace CGAL { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> std::ostream& operator<<( std::ostream& out, const Polyhedron_3& P) { @@ -45,9 +43,7 @@ operator<<( std::ostream& out, const Polyhedron_3& P) { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> std::istream& operator>>(std::istream& in, Polyhedron_3& P) { diff --git a/Polyhedron_IO/include/CGAL/IO/print_OFF.h b/Polyhedron_IO/include/CGAL/IO/print_OFF.h index 7d3a836c75c..ec5f96c1a51 100644 --- a/Polyhedron_IO/include/CGAL/IO/print_OFF.h +++ b/Polyhedron_IO/include/CGAL/IO/print_OFF.h @@ -55,9 +55,7 @@ void print_polyhedron_OFF( std::ostream& out, template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_OFF( std::ostream& out, @@ -73,9 +71,7 @@ print_OFF( std::ostream& out, template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_OFF( std::ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/print_VRML_1.h b/Polyhedron_IO/include/CGAL/IO/print_VRML_1.h index e12337a1556..af17be56551 100644 --- a/Polyhedron_IO/include/CGAL/IO/print_VRML_1.h +++ b/Polyhedron_IO/include/CGAL/IO/print_VRML_1.h @@ -35,9 +35,7 @@ void print_polyhedron_VRML_1( std::ostream& out, const Polyhedron& P) { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_VRML_1( std::ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/print_VRML_2.h b/Polyhedron_IO/include/CGAL/IO/print_VRML_2.h index a18c8d32046..40ac5682044 100644 --- a/Polyhedron_IO/include/CGAL/IO/print_VRML_2.h +++ b/Polyhedron_IO/include/CGAL/IO/print_VRML_2.h @@ -35,9 +35,7 @@ void print_polyhedron_VRML_2( std::ostream& out, const Polyhedron& P) { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_VRML_2( std::ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/print_inventor.h b/Polyhedron_IO/include/CGAL/IO/print_inventor.h index 3dde3c3cbf7..841438a6811 100644 --- a/Polyhedron_IO/include/CGAL/IO/print_inventor.h +++ b/Polyhedron_IO/include/CGAL/IO/print_inventor.h @@ -36,9 +36,7 @@ void print_polyhedron_inventor( std::ostream& out, const Polyhedron& P) { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_inventor( std::ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/print_wavefront.h b/Polyhedron_IO/include/CGAL/IO/print_wavefront.h index 7301ad7132a..a367097d64e 100644 --- a/Polyhedron_IO/include/CGAL/IO/print_wavefront.h +++ b/Polyhedron_IO/include/CGAL/IO/print_wavefront.h @@ -38,9 +38,7 @@ void print_polyhedron_wavefront( std::ostream& out, const Polyhedron& P) { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void print_wavefront( std::ostream& out, diff --git a/Polyhedron_IO/include/CGAL/IO/scan_OFF.h b/Polyhedron_IO/include/CGAL/IO/scan_OFF.h index 0f1c160e834..b99ee2a842c 100644 --- a/Polyhedron_IO/include/CGAL/IO/scan_OFF.h +++ b/Polyhedron_IO/include/CGAL/IO/scan_OFF.h @@ -29,9 +29,7 @@ namespace CGAL { template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void scan_OFF( std::istream& in, Polyhedron_3& P, @@ -48,9 +46,7 @@ void scan_OFF( std::istream& in, template < class Traits, class Items, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HDS, class Alloc> void scan_OFF( std::istream& in, Polyhedron_3& P, bool verbose = false) { diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/halfedge_collapse_Polyhedron_3.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/halfedge_collapse_Polyhedron_3.h index 82b98f6db6e..59ced4834db 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/halfedge_collapse_Polyhedron_3.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/halfedge_collapse_Polyhedron_3.h @@ -22,11 +22,7 @@ #include #include -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM # define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS -#else -# define CGAL_HDS_PARAM_ class HDS -#endif namespace CGAL { @@ -124,7 +120,7 @@ halfedge_collapse( typename boost::graph_traits< Polyhedron_3 >::edg } //namespace CGAL -#undef CGAL_HDS_ +#undef CGAL_HDS_PARAM #endif // CGAL_SURFACE_MESH_SIMPLIFICATION_COLLAPSE_TRIANGULATION_EDGE_POLYHEDRON_3_H // EOF // diff --git a/Surface_mesher/include/CGAL/enriched_polyhedron.h b/Surface_mesher/include/CGAL/enriched_polyhedron.h index 29c0f9d38ea..09ac52042ae 100644 --- a/Surface_mesher/include/CGAL/enriched_polyhedron.h +++ b/Surface_mesher/include/CGAL/enriched_polyhedron.h @@ -233,9 +233,7 @@ struct Vertex_normal // (functor) //********************************************************* template -#endif class HDS = CGAL::HalfedgeDS_default > class Enriched_polyhedron : public CGAL::Polyhedron_3 { diff --git a/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/Polyhedron_type_fwd.h b/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/Polyhedron_type_fwd.h index fd4bb815cfb..e0865e12d97 100644 --- a/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/Polyhedron_type_fwd.h +++ b/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/Polyhedron_type_fwd.h @@ -15,16 +15,12 @@ namespace CGAL { class Polyhedron_items_3; -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class HalfedgeDS_default; template < class PolyhedronTraits_3, class PolyhedronItems_3, -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> -#endif class T_HDS, class Alloc > From 4b94e194452ead9fa61fcb6e2bb781e047755d6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Fri, 13 Apr 2012 14:22:03 +0000 Subject: [PATCH 04/54] Completely remove any mentions of the TMPL_IN_TMPL workaround from the documentation. --- .../doc_tex/HalfedgeDS_ref/HalfedgeDS.tex | 52 ------------------- .../HalfedgeDS_ref/HalfedgeDS_default.tex | 29 ----------- 2 files changed, 81 deletions(-) diff --git a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex index d1a7255dd48..25f5e75b63b 100644 --- a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex +++ b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS.tex @@ -21,16 +21,6 @@ \ccCreationVariable{hds} \ccTagFullDeclarations -% +-----------------------------------+ -\ccHeading{Release Note} - -Beginning with \cgal\ R2.3, this package has a new design. The old -design is still available for backwards compatibility and to support -older compiler, such as MSVC++6.0. However its use is deprecated and -the manual pages are not converted into this new manual -format. Instead, see its old documentation in the manual of -deprecated packages. The two designs are not interchangeable. - % +-----------------------------------+ \ccDefinition @@ -500,48 +490,6 @@ a halfedge. There is no automatic update required. \ccRefIdfierPage{CGAL::HalfedgeDS_decorator}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_const_decorator} -% +-----------------------------------+ -\ccImplementation - -CGAL does no longer support any compiler that requires this -work-around. \ccc{HalfedgeDS_default} will now -always be a template. - -\begin{ccDeprecated} - -Classes parameterized with a halfedge data structure, such as -\ccc{CGAL::Polyhedron_3}, need to declare a class template as one of its -template parameters for the \ccRefName. For compilers not supporting -this (i.e.~the flag \ccc{CGAL_CFG_NO_TMPL_IN_TMPL_PARAM} is set), the -following workaround is required, which defines a \ccRefName\ as a -normal class that contains a member class template named \ccc{HDS}, -which is the actual halfedge data structure as defined here. The -following program fragment illustrates this workaround: - -\begin{ccExampleCode} -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM - template - class HalfedgeDS { - public: - typedef HalfedgeDS Self; - HalfedgeDS_vector(); // constructors -#else - struct HalfedgeDS { - template - class HDS { - public: - typedef HDS Self; - HDS(); // constructors -#endif - // ... further member functions. Self denotes the HalfedgeDS. - }; -#ifdef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM - }; -#endif -\end{ccExampleCode} - -\end{ccDeprecated} - \ccTagDefaults \end{ccRefConcept} diff --git a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex index a1fdb708890..4b7ae180eae 100644 --- a/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex +++ b/HalfedgeDS/doc_tex/HalfedgeDS_ref/HalfedgeDS_default.tex @@ -61,7 +61,6 @@ removal. \ccRefIdfierPage{CGAL::HalfedgeDS_decorator}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_const_decorator} - \ccImplementation Currently, \ccRefName\ is derived from \ccc{CGAL::HalfedgeDS_list}. @@ -70,34 +69,6 @@ $n$ the total number of vertices, halfedges, and faces. The former suboptimal implementation with an $O(n \log n)$ runtime has been replaced with a faster implementation based on hashing for the pointer lookup. -CGAL does no longer support any compiler that requires this -work-around. And it is no longer required. \ccRefName will always be a -template. - -\begin{ccDeprecated} - -Due to a workaround for the flag \ccc{CGAL_CFG_NO_TMPL_IN_TMPL_PARAM}, -a halfedge data structure cannot be instantiated directly. For the -\ccRefName\ a macro simplifies its direct use. However, when using a -halfedge data structure as an argument for another class template, -the class template name \ccc{HalfedgeDS_default} must be used, not -the macro. - -\begin{ccExampleCode} -// The macro definition. -#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM - #define CGAL_HALFEDGEDS_DEFAULT ::CGAL::HalfedgeDS_default -#else - #define CGAL_HALFEDGEDS_DEFAULT ::CGAL::HalfedgeDS_default::HDS -#endif - -// The direct instantiation of the default HalfedgeDS given a Traits class. -typedef CGAL_HALFEDGEDS_DEFAULT HDS; -\end{ccExampleCode} - -\end{ccDeprecated} - - \end{ccRefClass} % +------------------------------------------------------------------------+ From d0310bf67ef40acd883789e107e91d7434ffe8d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Fri, 13 Apr 2012 14:23:20 +0000 Subject: [PATCH 05/54] Missed a }; that was an ifdef instead of an ifndef. --- HalfedgeDS/include/CGAL/HalfedgeDS_list.h | 3 --- HalfedgeDS/include/CGAL/HalfedgeDS_vector.h | 1 - 2 files changed, 4 deletions(-) diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_list.h b/HalfedgeDS/include/CGAL/HalfedgeDS_list.h index 9891bcdd5c1..d17d890bed8 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_list.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_list.h @@ -672,9 +672,6 @@ public: } }; -}; - - // #ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM // #define CGAL__HDS_IP_List HalfedgeDS_list diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h index fcf7198955a..c61e09aef01 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h @@ -649,7 +649,6 @@ public: } } }; -}; } //namespace CGAL From 9d041ed59ae9e34479168d6543a0686e39fe4494 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 16 Apr 2012 12:48:50 +0000 Subject: [PATCH 06/54] Better testing of CGAL::is_streamable --- STL_Extension/test/STL_Extension/test_is_streamable.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/STL_Extension/test/STL_Extension/test_is_streamable.cpp b/STL_Extension/test/STL_Extension/test_is_streamable.cpp index 8e18e004489..2a8ebfcbecc 100644 --- a/STL_Extension/test/STL_Extension/test_is_streamable.cpp +++ b/STL_Extension/test/STL_Extension/test_is_streamable.cpp @@ -5,6 +5,8 @@ struct A {}; struct B {}; +struct C {}; +struct D {}; using std::ostream; using std::istream; @@ -12,6 +14,9 @@ using std::istream; ostream& operator<<(ostream& os, const B&) { return os; } istream& operator>>(istream& is, const B&) { return is; } +ostream& operator<<(ostream& os, const C&) { return os; } +istream& operator>>(istream& is, const D&) { return is; } + int main() { typedef std::vector::const_iterator vector_it; typedef int* int_p; @@ -19,6 +24,8 @@ int main() { CGAL_static_assertion(!is_streamable::value); CGAL_static_assertion(is_streamable::value); + CGAL_static_assertion(!is_streamable::value); + CGAL_static_assertion(!is_streamable::value); CGAL_static_assertion(is_streamable::value); CGAL_static_assertion(is_streamable::value); CGAL_static_assertion(! (is_streamable >::value) ); From b3822e9b85d809386d3fbe6e8dca045ad34a96be Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 16 Apr 2012 13:49:19 +0000 Subject: [PATCH 07/54] Extend the test, again That time, one checks that boost::tuple has I/O operators. --- STL_Extension/test/STL_Extension/test_is_streamable.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/STL_Extension/test/STL_Extension/test_is_streamable.cpp b/STL_Extension/test/STL_Extension/test_is_streamable.cpp index 2a8ebfcbecc..c969eb94cbe 100644 --- a/STL_Extension/test/STL_Extension/test_is_streamable.cpp +++ b/STL_Extension/test/STL_Extension/test_is_streamable.cpp @@ -2,6 +2,8 @@ #include #include #include // std::pair +#include +#include struct A {}; struct B {}; @@ -29,4 +31,5 @@ int main() { CGAL_static_assertion(is_streamable::value); CGAL_static_assertion(is_streamable::value); CGAL_static_assertion(! (is_streamable >::value) ); + CGAL_static_assertion( (is_streamable >::value) ); } From 5e15466696d36df6cdf4eef4f9c08fb657c6f31c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Mon, 16 Apr 2012 14:36:03 +0000 Subject: [PATCH 08/54] BUGFIX: Memory leak in Parameterization_mesh_feature_extractor Parameterization_mesh_feature_extractor wasn't cleaning up the BorderS it allocated. --- .../include/CGAL/Parameterization_mesh_feature_extractor.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Surface_mesh_parameterization/include/CGAL/Parameterization_mesh_feature_extractor.h b/Surface_mesh_parameterization/include/CGAL/Parameterization_mesh_feature_extractor.h index 6942c73b5f5..b0c240174c0 100644 --- a/Surface_mesh_parameterization/include/CGAL/Parameterization_mesh_feature_extractor.h +++ b/Surface_mesh_parameterization/include/CGAL/Parameterization_mesh_feature_extractor.h @@ -98,7 +98,12 @@ public: m_nb_borders = -1; m_genus = -1; } - virtual ~Parameterization_mesh_feature_extractor() {} + + virtual ~Parameterization_mesh_feature_extractor() { + for (typename Skeleton::iterator iter = m_skeleton.begin(); + iter != m_skeleton.end(); ++iter) + delete *iter; + } /// Get number of borders. int get_nb_borders() From 5eb0734d02a91cf5e68ed7931146b881624492b9 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 16 Apr 2012 15:24:14 +0000 Subject: [PATCH 09/54] Remove a warning: var set but not used --- .../include/CGAL/Parameterization_polyhedron_adaptor_3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Surface_mesh_parameterization/include/CGAL/Parameterization_polyhedron_adaptor_3.h b/Surface_mesh_parameterization/include/CGAL/Parameterization_polyhedron_adaptor_3.h index caa07bfbbb6..20ece77181c 100644 --- a/Surface_mesh_parameterization/include/CGAL/Parameterization_polyhedron_adaptor_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Parameterization_polyhedron_adaptor_3.h @@ -441,7 +441,7 @@ public: int index = 0; for (Vertex_iterator it=mesh_vertices_begin(); it!=mesh_vertices_end(); it++) { - Point_3 position = get_vertex_position(it); + // Point_3 position = get_vertex_position(it); /*#ifdef DEBUG_TRACE fprintf(stderr, " %d=(%f,%f,%f)\n", index, From 0c5b3fcf8586cf6ebb9edf4f3dcb33010d3e3cac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Mon, 16 Apr 2012 16:21:21 +0000 Subject: [PATCH 10/54] WARNINGFIX: Nef_2 is no longer triggering a "suggest parenthesis" --- Nef_2/include/CGAL/Nef_2/PM_checker.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Nef_2/include/CGAL/Nef_2/PM_checker.h b/Nef_2/include/CGAL/Nef_2/PM_checker.h index a22caee7723..339baf0d0ad 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_checker.h +++ b/Nef_2/include/CGAL/Nef_2/PM_checker.h @@ -174,9 +174,9 @@ check_forward_prefix_condition(Vertex_const_handle v) const error_status << " el_forward = " << el_forward; error_status << " is_left_turn = " << is_left_turn; CGAL_assertion_msg( (ef == el || - ef_forward && !el_forward || - ef_forward && el_forward && is_left_turn || - !ef_forward && !el_forward && is_left_turn) , + (ef_forward && !el_forward) || + (ef_forward && el_forward && is_left_turn) || + (!ef_forward && !el_forward && is_left_turn)) , error_status.str().c_str()); } From 3889dc2d7f26dae06cae6462db51cc01affca53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Tue, 17 Apr 2012 12:03:00 +0000 Subject: [PATCH 11/54] BUGFIX Fixed the leak of an empty memory block. --- .../include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h index f34e7549469..76b9601f05d 100644 --- a/Arrangement_on_surface_2/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Sweep_line_2/Basic_sweep_line_2_impl.h @@ -218,9 +218,12 @@ void Basic_sweep_line_2::_init_structures() { CGAL_assertion(m_queue->empty()); CGAL_assertion((m_statusLine.size() == 0)); - - // Allocate all of the Subcurve objects as one block. - m_subCurves = m_subCurveAlloc.allocate(m_num_of_subCurves); + + // Allocate all of the Subcurve objects as one block. Don't allocate + // anything when there are no subcurves. + if (m_num_of_subCurves > 0) { + m_subCurves = m_subCurveAlloc.allocate(m_num_of_subCurves); + } return; } From cdf47795ba551093b1d3d03525dffe21d9eb682c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Tue, 17 Apr 2012 12:17:23 +0000 Subject: [PATCH 12/54] Fixed a small memory leak in one of the testcases. --- .../test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h index fdc73205eb5..7fc3279c2cb 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_hierarchy_2.h @@ -135,6 +135,8 @@ _test_cls_hierarchy_2() h.remove_constraint(v[3],v[4]); // h.print(); + for(int i=0; i <10; i++) { delete v[i];} + return; } From 03ac39132a6c46207000064ae18c7f312a9096ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 17 Apr 2012 17:37:53 +0000 Subject: [PATCH 14/54] remove unused var warning --- Nef_3/include/CGAL/Nef_3/ID_support_handler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nef_3/include/CGAL/Nef_3/ID_support_handler.h b/Nef_3/include/CGAL/Nef_3/ID_support_handler.h index 46116622d73..975f2fb3889 100644 --- a/Nef_3/include/CGAL/Nef_3/ID_support_handler.h +++ b/Nef_3/include/CGAL/Nef_3/ID_support_handler.h @@ -45,7 +45,7 @@ class ID_support_handler { ID_support_handler() {} int get_hash(int) { return 0; } - template void initialize_hash(Handle h) {} + template void initialize_hash(Handle /*h*/) {} void initialize_hash(int i) {} void handle_support(SVertex_handle , SHalfedge_const_handle , From 24070082f6979de962353a136626e4326365bcf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 17 Apr 2012 18:18:09 +0000 Subject: [PATCH 15/54] *deprecate the use of geninfo *naive replacement of void* and geninfo by boost::any. *old code can be used if CGAL_I_DO_WANT_TO_USE_GENINFO is defined *info was printed, I simply ignored that for boost::any (it probably made sense why the old implementation of geninfo that was using placement new to write inside the void*) *some sizeof(void*) was used in SNC_structure.h for printing the size of something. I guessed this was related to the void* used as info. I left that code untouched. *testsuite is OK on my machine except Nef_3/example/Nef_3/polygon_construction which also does not work with next on my machine --- Nef_2/include/CGAL/Nef_2/HDS_items.h | 45 +++++- Nef_2/include/CGAL/Nef_2/PM_const_decorator.h | 15 +- Nef_2/include/CGAL/Nef_2/PM_decorator.h | 4 + Nef_2/include/CGAL/Nef_2/PM_overlayer.h | 110 +++++++++++++-- Nef_2/include/CGAL/Nef_2/PM_point_locator.h | 65 ++++++++- Nef_2/include/CGAL/Nef_2/gen_point_location.h | 48 ++++++- Nef_2/include/CGAL/Nef_2/geninfo.h | 5 + Nef_3/include/CGAL/Nef_3/Halfedge.h | 14 +- Nef_3/include/CGAL/Nef_3/SFace.h | 8 ++ Nef_3/include/CGAL/Nef_3/SHalfedge.h | 14 +- Nef_3/include/CGAL/Nef_3/SNC_FM_decorator.h | 29 +++- Nef_3/include/CGAL/Nef_3/SNC_SM_overlayer.h | 4 + .../include/CGAL/Nef_3/SNC_const_decorator.h | 8 ++ Nef_3/include/CGAL/Nef_3/SNC_decorator.h | 8 ++ Nef_3/include/CGAL/Nef_3/SNC_io_parser.h | 8 ++ Nef_3/include/CGAL/Nef_3/SNC_ray_shooter.h | 8 ++ Nef_3/include/CGAL/Nef_3/SNC_structure.h | 6 +- Nef_3/include/CGAL/Nef_3/Vertex.h | 8 ++ .../include/CGAL/Nef_S2/SM_const_decorator.h | 8 ++ Nef_S2/include/CGAL/Nef_S2/SM_decorator.h | 7 + Nef_S2/include/CGAL/Nef_S2/SM_items.h | 45 +++++- Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h | 131 +++++++++++++++--- Nef_S2/include/CGAL/Nef_S2/SM_point_locator.h | 4 + Nef_S2/include/CGAL/Nef_S2/SM_triangulator.h | 69 +++++++-- 24 files changed, 600 insertions(+), 71 deletions(-) diff --git a/Nef_2/include/CGAL/Nef_2/HDS_items.h b/Nef_2/include/CGAL/Nef_2/HDS_items.h index 213e191b90c..ac11eea2930 100644 --- a/Nef_2/include/CGAL/Nef_2/HDS_items.h +++ b/Nef_2/include/CGAL/Nef_2/HDS_items.h @@ -26,6 +26,9 @@ #include #include #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif namespace CGAL { @@ -61,7 +64,11 @@ public: typedef typename Refs::Face_const_handle Face_const_handle; typedef typename Refs::Halfedge Halfedge; typedef typename Refs::Face Face; - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Traits::Point Point; // geometric embedding typedef typename Traits::Mark Mark; // information @@ -76,12 +83,20 @@ private: GenPtr _i; public: - Nef_vertex_2() : _h(),_f(),_ivit(),_m(0),_i((GenPtr)0xABCD) {} + Nef_vertex_2() : _h(),_f(),_ivit(),_m(0) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + ,_i((GenPtr)0xABCD) + #endif + {} // constructs an uninitialized vertex concerning embedding // and mark. All links are initialized by their default value. Nef_vertex_2( const Point& p) : - _h(),_f(),_p(p),_ivit(),_m(0),_i((GenPtr)0xABCD) {} + _h(),_f(),_p(p),_ivit(),_m(0) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + ,_i((GenPtr)0xABCD) + #endif + {} // constructs a vertex with embedding |p| and mark |m|. // All links are initialized by their default value. @@ -138,7 +153,11 @@ public: typedef typename Refs::Face_const_handle Face_const_handle; typedef typename Refs::Vertex Vertex; typedef typename Refs::Face Face; - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename std::list::iterator fc_iterator; @@ -154,7 +173,11 @@ protected: public: Nef_halfedge_2() : - opp(),prv(),nxt(),_v(),_f(),_fcit(),_m(0),_i((GenPtr)0xABCD) {} + opp(),prv(),nxt(),_v(),_f(),_fcit(),_m(0) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + ,_i((GenPtr)0xABCD) + #endif + {} /*{\Mcreate constructs an uninitialized halfedge concerning embedding and mark. All links are initialized by their default value.}*/ @@ -227,7 +250,11 @@ public: typedef typename Refs::Face_const_handle Face_const_handle; typedef typename Refs::Vertex Vertex; typedef typename Refs::Halfedge Halfedge; - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Traits::Mark Mark; // mark information @@ -300,7 +327,11 @@ private: GenPtr _i; public: - Nef_face_2() : _e(),_m(0),_i((GenPtr)0xABCD) {} + Nef_face_2() : _e(),_m(0) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + ,_i((GenPtr)0xABCD) + #endif + {} /*{\Mcreate constructs an uninitialized face with undefined mark, empty face cycle list, and empty isolated vertices list.}*/ diff --git a/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h b/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h index e0f6245e4d8..946f3313e3e 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h @@ -32,6 +32,10 @@ #define CGAL_NEF_DEBUG 7 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template @@ -132,8 +136,13 @@ typedef typename Traits::Mark Mark; /*{\Mtypemember All objects (vertices, edges, faces) are attributed by a |Mark| object.}*/ typedef size_t Size_type; +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO /*{\Mtypemember The size type.}*/ typedef void* GenPtr; +#else +typedef boost::any GenPtr; +#endif + typedef typename HDS::Vertex Vertex; @@ -403,7 +412,11 @@ std::string PE(HH e) { std::ostringstream os; if (e==HH()) return "nil"; os << "[" << PV(e->opposite()->vertex()) << "," - << PV(e->vertex()) << " " << e->info() << "]"; + << PV(e->vertex()) << " " + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + << e->info() + #endif + << "]"; return os.str(); } diff --git a/Nef_2/include/CGAL/Nef_2/PM_decorator.h b/Nef_2/include/CGAL/Nef_2/PM_decorator.h index d4b0df31fcb..61a791c47dd 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_decorator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_decorator.h @@ -21,7 +21,11 @@ #ifndef CGAL_PM_DECORATOR_H #define CGAL_PM_DECORATOR_H #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #include #include diff --git a/Nef_2/include/CGAL/Nef_2/PM_overlayer.h b/Nef_2/include/CGAL/Nef_2/PM_overlayer.h index 3e5827408d7..9703b10b272 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_overlayer.h +++ b/Nef_2/include/CGAL/Nef_2/PM_overlayer.h @@ -25,7 +25,11 @@ #include #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #undef CGAL_NEF_DEBUG #define CGAL_NEF_DEBUG 13 #include @@ -49,7 +53,11 @@ struct PMO_from_segs { Vertex_handle new_vertex(const Point& p) { Vertex_handle v = G.new_vertex(p); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(G.info(v)); + #else + G.info(v)=Halfedge_handle(); + #endif return v; } @@ -78,15 +86,32 @@ struct PMO_from_segs { { D.ending_segment(v,it); } void halfedge_below(Vertex_handle v, Halfedge_handle e) const - { geninfo::access(G.info(v)) = e; } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::access(G.info(v)) = e; + #else + *boost::any_cast(&G.info(v)) = e; + #endif + } Halfedge_handle halfedge_below(Vertex_handle v) const - { return geninfo::access(G.info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(G.info(v)); + #else + return + boost::any_cast(G.info(v)); + #endif + } void clear_temporary_vertex_info() const { Vertex_handle v; for(v = G.vertices_begin(); v!= G.vertices_end(); ++v) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::clear(G.info(v)); + #else + G.info(v)=boost::any(); + #endif } @@ -634,13 +659,32 @@ struct vertex_info { }; void assoc_info(Vertex_handle v) const -{ geninfo::create(info(v)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(v)); + #else + info(v)=vertex_info(); + #endif +} void discard_info(Vertex_handle v) const -{ geninfo::clear(info(v)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(v)); + #else + info(v)=boost::any(); + #endif +} vertex_info& ginfo(Vertex_handle v) const -{ return geninfo::access(info(v)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(v)); + #else + return + *boost::any_cast(&info(v)); + #endif +} Mark& mark(Vertex_handle v, int i) const { return ginfo(v).m[i]; } @@ -667,15 +711,36 @@ struct halfedge_info { }; void assoc_info(Halfedge_handle e) const -{ geninfo::create(info(e)); - geninfo::create(info(twin(e))); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(e)); + geninfo::create(info(twin(e))); + #else + info(e)=halfedge_info(); + info(twin(e))=halfedge_info(); + #endif +} void discard_info(Halfedge_handle e) const -{ geninfo::clear(info(e)); - geninfo::clear(info(twin(e))); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(e)); + geninfo::clear(info(twin(e))); + #else + info(e)=boost::any(); + info(twin(e))=boost::any(); + #endif +} halfedge_info& ginfo(Halfedge_handle e) const -{ return geninfo::access(info(e)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(e)); + #else + return + *boost::any_cast(&info(e)); + #endif +} Mark& mark(Halfedge_handle e, int i) const // uedge information we store in the smaller one @@ -702,13 +767,32 @@ struct face_info { }; void assoc_info(Face_handle f) const -{ geninfo::create(info(f)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(f)); + #else + info(f)=face_info(); + #endif +} void discard_info(Face_handle f) const -{ geninfo::clear(info(f)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(f)); + #else + info(f)=boost::any(); + #endif +} face_info& ginfo(Face_handle f) const -{ return geninfo::access(info(f)); } +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(f)); + #else + return + *boost::any_cast(&info(f)); + #endif +} Mark& mark(Face_handle f, int i) const { return ginfo(f).m[i]; } diff --git a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h index 2898d35fc71..e5a85a57dc8 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h @@ -29,7 +29,11 @@ #undef CGAL_NEF_DEBUG #define CGAL_NEF_DEBUG 17 #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #ifdef CGAL_USE_LEDA #include @@ -468,27 +472,57 @@ public: void operator()(Vertex_handle vn, Vertex_const_handle vo) const { Face_const_handle f; if ( Po.is_isolated(vo) ) f = Po.face(vo); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(info(vn)); geninfo::access(info(vn)) = VF_pair(vo,f); + #else + info(vn) = VF_pair(vo,f); + #endif CGAL_NEF_TRACEN("linking to org "<::create(info(hn)); + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(hn)); geninfo::access(info(hn)) = EF_pair(ho,Po.face(ho)); + #else + info(hn) = EF_pair(ho,Po.face(ho)); + #endif CGAL_NEF_TRACEN("linking to org "<::const_access(CT.info(v)).first; } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::const_access(CT.info(v)).first; + #else + return + boost::any_cast(CT.info(v)).first; + #endif + } Halfedge_const_handle input_halfedge(Halfedge_const_handle e) const - { return geninfo::const_access(CT.info(e)).first; } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::const_access(CT.info(e)).first; + #else + return + boost::any_cast(CT.info(e)).first; + #endif + } Face_const_handle input_face(Halfedge_const_handle e) const - { return geninfo::const_access(CT.info(e)).second; } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::const_access(CT.info(e)).second; + #else + return + boost::any_cast(CT.info(e)).second; + #endif + } Object_handle input_object(Vertex_const_handle v) const @@ -547,10 +581,19 @@ protected: { Halfedge_handle e_from = previous(e); Face_const_handle f; if ( is_closed_at_source(e) ) // source(e) was isolated before + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO f = geninfo::access(info(source(e))).second; else - f = geninfo::access(info(e_from)).second; + f = geninfo::access(info(e_from)).second; + #else + f = + boost::any_cast(info(source(e))).second; + else + f = + boost::any_cast(info(e_from)).second; + #endif mark(e) = _DP.mark(f); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(info(e)); geninfo::create(info(twin(e))); @@ -560,6 +603,10 @@ protected: geninfo::access(info(e)).second = geninfo::access(info(twin(e))).second = f; + #else + info(e)=EF_pair(Halfedge_const_handle(),f); + info(twin(e))=EF_pair(Halfedge_const_handle(),f); + #endif CGAL_NEF_TRACEN("CT_new_edge "<:: { CGAL_NEF_TRACEN("clear_static_point_locator"); Vertex_iterator vit, vend = CT.vertices_end(); for (vit = CT.vertices_begin(); vit != vend; ++vit) { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::clear(CT.info(vit)); + #else + CT.info(vit)=boost::any(); + #endif } Halfedge_iterator eit, eend = CT.halfedges_end(); for (eit = CT.halfedges_begin(); eit != eend; ++eit) { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::clear(CT.info(eit)); + #else + CT.info(eit)=boost::any(); + #endif } CT.clear(); delete &(CT.plane_map()); diff --git a/Nef_2/include/CGAL/Nef_2/gen_point_location.h b/Nef_2/include/CGAL/Nef_2/gen_point_location.h index a9bbd396554..536ada6426c 100644 --- a/Nef_2/include/CGAL/Nef_2/gen_point_location.h +++ b/Nef_2/include/CGAL/Nef_2/gen_point_location.h @@ -33,7 +33,12 @@ #include #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif + #undef CGAL_NEF_DEBUG #define CGAL_NEF_DEBUG 17 @@ -56,7 +61,11 @@ class GenericLocation { point location. It can store a node or an edge of a graph or the special value |nil| which is used to signal that no node or edge could be found. }*/ - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif public: /*{\Mtypes}*/ enum Type { NIL, NODE, EDGE }; @@ -85,7 +94,12 @@ public: if (type != NODE) CGAL_LEDA_SCOPE::error_handler(1, "Location: not convertible to node"); #endif + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO return geninfo::const_access(value); + #else + return + *boost::any_cast(&value); + #endif } /*{\Mconversion converts |\Mvar| into a node.\\ \precond |\Mvar| represents a node.}*/ @@ -96,7 +110,12 @@ public: if (type != EDGE) CGAL_LEDA_SCOPE::error_handler(1, "Location: not convertible to edge"); #endif + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO return geninfo::const_access(value); + #else + return + *boost::any_cast(&value); + #endif } /*{\Mconversion converts |\Mvar| into an edge.\\ \precond |\Mvar| represents an edge.}*/ @@ -125,20 +144,33 @@ public: void init() { type = NIL; } void init(Node n) { type = NODE; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(value); - geninfo::access(value) = n; + geninfo::access(value) = n; + #else + value=n; + #endif } void init(Edge e) { type = EDGE; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(value); - geninfo::access(value) = e; + geninfo::access(value) = e; + #else + value=e; + #endif } void clear() { switch(type) { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO case NODE: geninfo::clear(value); break; case EDGE: geninfo::clear(value); break; + #else + case NODE: value=boost::any(); break; + case EDGE: value=boost::any(); break; + #endif case NIL: break; } } @@ -148,10 +180,18 @@ public: type = L.type; switch(type) { case NODE: - geninfo::access(value) = geninfo::const_access(L.value); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::access(value) = geninfo::const_access(L.value); + #else + *boost_any_cast(&value) = boost::any_cast(L.value); + #endif break; case EDGE: + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::access(value) = geninfo::const_access(L.value); + #else + *boost::any_cast(&value) = boost::any_cast(L.value); + #endif break; case NIL: break; } diff --git a/Nef_2/include/CGAL/Nef_2/geninfo.h b/Nef_2/include/CGAL/Nef_2/geninfo.h index f27c85eb19e..1a26b4fe7cf 100644 --- a/Nef_2/include/CGAL/Nef_2/geninfo.h +++ b/Nef_2/include/CGAL/Nef_2/geninfo.h @@ -21,6 +21,11 @@ #ifndef CGAL_NEF_2_GENINFO_H #define CGAL_NEF_2_GENINFO_H + +//This file is deprecated and something like boost::any or boost::variant should +//be used instead +#include + #include #include diff --git a/Nef_3/include/CGAL/Nef_3/Halfedge.h b/Nef_3/include/CGAL/Nef_3/Halfedge.h index b92186a7bdf..795578b10ca 100644 --- a/Nef_3/include/CGAL/Nef_3/Halfedge.h +++ b/Nef_3/include/CGAL/Nef_3/Halfedge.h @@ -34,12 +34,20 @@ #define CGAL_NEF_DEBUG 83 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template class Halfedge_base { // == Halfedge + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Vector_3 Vector_3; typedef typename Refs::Sphere_point Sphere_point; @@ -131,7 +139,11 @@ class Halfedge_base std::string debug() const { std::stringstream os; set_pretty_mode(os); - os<<"sv [ "< +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template class SFace_base { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Vertex_handle Vertex_handle; typedef typename Refs::Vertex_const_handle Vertex_const_handle; diff --git a/Nef_3/include/CGAL/Nef_3/SHalfedge.h b/Nef_3/include/CGAL/Nef_3/SHalfedge.h index 1ee884bdc3a..b5a882a4040 100644 --- a/Nef_3/include/CGAL/Nef_3/SHalfedge.h +++ b/Nef_3/include/CGAL/Nef_3/SHalfedge.h @@ -33,11 +33,19 @@ #define CGAL_NEF_DEBUG 83 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template class SHalfedge_base { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Sphere_circle Sphere_circle; @@ -199,7 +207,11 @@ class SHalfedge_base { { std::stringstream os; set_pretty_mode(os); os <<"e[ "<debug()<<", " - <source_->debug()<<" "<source_->debug() + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + <<" "< +#else +#include +#endif #include #include #include @@ -123,7 +126,12 @@ std::vector& Support; unsigned edge_number; Vertex_handle new_vertex(const Point& p) const -{ geninfo::create(p.vertex()->info()); +{ + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(p.vertex()->info()); + #else + p.vertex()->info()=unsigned(); + #endif return p.vertex(); } Halfedge_handle new_halfedge_pair_at_source(Vertex_handle v) @@ -135,7 +143,12 @@ void supporting_segment(Halfedge_handle e, I it) void halfedge_below(Vertex_handle v, Halfedge_handle e) { CGAL_NEF_TRACEN("halfedge_below point "<< v->point() <<": " << e); - geninfo::access(v->info()) = e; } + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::access(v->info()) = e; + #else + v->info() = e; + #endif +} // all empty, no update necessary void link_as_target_and_append(Vertex_handle, Halfedge_handle) @@ -396,7 +409,11 @@ protected: int fc = FacetCycle[e]; SHalfedge_handle e_min = MinimalEdge[fc]; SHalfedge_handle e_below = + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO Edge_of[geninfo::access(info(e_min->twin()->source()->twin()->source()))]; + #else + Edge_of[ boost::any_cast(info(e_min->twin()->source()->twin()->source())) ]; + #endif CGAL_assertion( e_below != SHalfedge_handle() ); CGAL_NEF_TRACEN(" edge below " << debug(e_below)); Halffacet_handle f = e_below->facet(); @@ -631,7 +648,11 @@ create_facet_objects(const Plane_3& plane_supporting_facet, CGAL_forall_iterators(lit,SHalfloops) { l=*lit; SHalfedge_handle e_below = - Edge_of[geninfo::access(info(l->incident_sface()->center_vertex()))]; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + Edge_of[geninfo::access(info(l->incident_sface()->center_vertex()))]; + #else + Edge_of[ boost::any_cast(info(l->incident_sface()->center_vertex())) ]; + #endif CGAL_assertion( e_below != SHalfedge_handle() ); CGAL_NEF_TRACEN("link sloop at vertex "<< l->incident_sface()->center_vertex()->point()); diff --git a/Nef_3/include/CGAL/Nef_3/SNC_SM_overlayer.h b/Nef_3/include/CGAL/Nef_3/SNC_SM_overlayer.h index 4d32ec743a7..f3c3c5a7806 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_SM_overlayer.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_SM_overlayer.h @@ -25,7 +25,11 @@ #include #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #include #include #include diff --git a/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h b/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h index 0bbeeae7f86..d556791b5cb 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h @@ -36,6 +36,10 @@ #define CGAL_NEF_DEBUG 191 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template class SM_const_decorator; @@ -116,7 +120,11 @@ public: SHalfedge_around_sface_const_circulator; public: + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif SNC_const_decorator() : sncp_(0) {} SNC_const_decorator(const SNC_structure& W) : sncp_(&W) {} diff --git a/Nef_3/include/CGAL/Nef_3/SNC_decorator.h b/Nef_3/include/CGAL/Nef_3/SNC_decorator.h index 7cda2e5eb80..e70fcd38e6e 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_decorator.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_decorator.h @@ -40,6 +40,10 @@ #define CGAL_NEF_DEBUG 19 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template @@ -155,7 +159,11 @@ class SNC_decorator : public SNC_const_decorator { enum {NO_SNC, WITH_SNC}; public: + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif SNC_decorator() : Base(), sncp_() {} SNC_decorator(SNC_structure& W) diff --git a/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h b/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h index 2b5d9beb8b7..031349c7d2c 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h @@ -39,6 +39,10 @@ #define CGAL_NEF_DEBUG 293 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template @@ -889,7 +893,11 @@ public: typedef typename Infi_box::Standard_vector Standard_vector; typedef typename Infi_box::Standard_plane Standard_plane; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif using Base::visit_shell_objects; diff --git a/Nef_3/include/CGAL/Nef_3/SNC_ray_shooter.h b/Nef_3/include/CGAL/Nef_3/SNC_ray_shooter.h index b55aa9769e5..0a94a198b88 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_ray_shooter.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_ray_shooter.h @@ -42,6 +42,10 @@ #define CGAL_NEF_DEBUG 37 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { // ---------------------------------------------------------------------------- @@ -87,7 +91,11 @@ public: typedef typename SNC_structure::Mark Mark; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif SNC_ray_shooter() {} void initialize(SNC_structure* W) { *this = SNC_ray_shooter(*W);} diff --git a/Nef_3/include/CGAL/Nef_3/SNC_structure.h b/Nef_3/include/CGAL/Nef_3/SNC_structure.h index 4977f1f5d7e..7f767760b84 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_structure.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_structure.h @@ -1212,7 +1212,8 @@ public: sfaces_.erase(h); put_sface_node(&*h); } - + //SL: in the following function, I guess the sizeof(void*) is related to the void* info that was + //used together with geninfo to store an arbitrary type. I replaced that with any and did not changed that std::size_t bytes() { // bytes used for the SNC_structure @@ -1253,7 +1254,8 @@ public: return result; } - + //SL: in the following function, I guess the sizeof(void*) is related to the void* info that was + //used together with geninfo to store an arbitrary type. I replaced that with any and did not changed that std::size_t bytes_reduced() { // bytes used for the SNC_structure diff --git a/Nef_3/include/CGAL/Nef_3/Vertex.h b/Nef_3/include/CGAL/Nef_3/Vertex.h index 11c5c8bfd60..1e9792c009e 100644 --- a/Nef_3/include/CGAL/Nef_3/Vertex.h +++ b/Nef_3/include/CGAL/Nef_3/Vertex.h @@ -33,12 +33,20 @@ #define CGAL_NEF_DEBUG 83 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif + namespace CGAL { template class Vertex_base { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Point_3 Point_3; diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_const_decorator.h b/Nef_S2/include/CGAL/Nef_S2/SM_const_decorator.h index e7a1dae22ae..b674c70f59a 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_const_decorator.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_const_decorator.h @@ -36,6 +36,9 @@ #undef CGAL_NEF_DEBUG #define CGAL_NEF_DEBUG 67 #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif namespace CGAL { @@ -74,7 +77,12 @@ typedef typename Map::Mark Mark; typedef size_t Size_type; /*{\Mtypemember size type.}*/ +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; +#else +typedef boost::any GenPtr; +#endif + // typedef typename Map::Constructor_const_parameter Constructor_parameter; typedef typename Map::SVertex_const_handle SVertex_const_handle; diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_decorator.h b/Nef_S2/include/CGAL/Nef_S2/SM_decorator.h index b6c4a6b0939..7f418b32a75 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_decorator.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_decorator.h @@ -35,6 +35,9 @@ #include #include #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif namespace CGAL { @@ -83,7 +86,11 @@ enum { BEFORE = -1, AFTER = 1 }; typedef typename Sphere_kernel::Aff_transformation_3 Aff_transformation_3; +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO typedef void* GenPtr; +#else +typedef boost::any GenPtr; +#endif typedef typename Map::SVertex SVertex; typedef typename Map::SVertex_handle SVertex_handle; typedef typename Map::SVertex_iterator SVertex_iterator; diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_items.h b/Nef_S2/include/CGAL/Nef_S2/SM_items.h index a07bd316b0c..efd63d54c3f 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_items.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_items.h @@ -31,6 +31,9 @@ #include #include #include +#ifndef CGAL_I_DO_WANT_TO_USE_GENINFO +#include +#endif namespace CGAL { @@ -44,7 +47,11 @@ public: template class SVertex { - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Sphere_point Sphere_point; typedef typename Refs::SVertex_handle SVertex_handle; @@ -108,7 +115,11 @@ public: public: std::string debug() const { std::ostringstream os; set_pretty_mode(os); - os<<"V"< class SHalfedge { - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Sphere_circle Sphere_circle; typedef typename Refs::SVertex_handle SVertex_handle; @@ -202,7 +217,11 @@ public: std::string debug() const { std::ostringstream os; set_pretty_mode(os); os <<"e["<debug()<<", " - <source_->debug()<<" "<source_->debug()<< + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + " "<< info_ << + #endif + "]"<<'\0'; std::string res(os.str()); return res; } @@ -211,7 +230,11 @@ public: template class SHalfloop { - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Sphere_circle Sphere_circle; typedef typename Refs::SHalfloop_handle SHalfloop_handle; @@ -272,7 +295,11 @@ public: std::string debug() const { std::ostringstream os; set_pretty_mode(os); - os<<"l"< class SFace { - typedef void* GenPtr; + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + typedef void* GenPtr; + #else + typedef boost::any GenPtr; + #endif typedef typename Refs::Mark Mark; typedef typename Refs::Object_handle Object_handle; typedef typename Refs::Object_list Object_list; diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h index 881bd5b22b4..3870444d656 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h @@ -25,7 +25,11 @@ #include #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #include #include #include @@ -56,7 +60,11 @@ struct SMO_from_segs { Vertex_handle new_vertex(const Point& p) { Vertex_handle v = G.new_svertex(p); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::create(G.info(v)); + #else + G.info(v)=Halfedge_handle(); + #endif return v; } @@ -85,16 +93,35 @@ struct SMO_from_segs { { if ( M[it] ) v->mark() = true; } void halfedge_below(Vertex_handle v, Halfedge_handle e) const - { geninfo::access(G.info(v)) = e; } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::access(G.info(v)) = e; + #else + G.info(v)=e; + #endif + } Halfedge_handle halfedge_below(Vertex_handle v) const - { return geninfo::access(G.info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(G.info(v)); + #else + return + boost::any_cast( G.info(v) ); + #endif + } void assert_equal_marks(Vertex_handle v1, Vertex_handle v2) const { CGAL_assertion(v1->mark()==v2->mark()); } void discard_info(Vertex_handle v) const - { geninfo::clear(G.info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(G.info(v)); + #else + G.info(v)=boost::any(); + #endif + } void assert_equal_marks(Halfedge_handle e1, Halfedge_handle e2) const { CGAL_assertion(e1->mark()==e2->mark()); } @@ -104,7 +131,12 @@ struct SMO_from_segs { void clear_temporary_vertex_info() const { Vertex_handle v; CGAL_forall_svertices(v,G) + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO geninfo::clear(G.info(v)); + #else + G.info(v)=boost::any(); + #endif + } @@ -500,13 +532,32 @@ public: }; // vertex_info void assoc_info(SVertex_handle v) const - { geninfo::create(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(v)); + #else + info(v)=vertex_info(); + #endif + } void discard_info(SVertex_handle v) const - { geninfo::clear(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(v)); + #else + info(v)=boost::any(); + #endif + } vertex_info& ginfo(SVertex_handle v) const - { return geninfo::access(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(v)); + #else + return + *boost::any_cast(&info(v)); + #endif + } Mark& mark(SVertex_handle v, int i) const { return ginfo(v).m[i]; } @@ -532,15 +583,36 @@ public: }; void assoc_info(SHalfedge_handle e) const - { geninfo::create(info(e)); - geninfo::create(info(e->twin())); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(e)); + geninfo::create(info(e->twin())); + #else + info(e)=edge_info(); + info(e->twin())=edge_info(); + #endif + } void discard_info(SHalfedge_handle e) const - { geninfo::clear(info(e)); - geninfo::clear(info(e->twin())); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(e)); + geninfo::clear(info(e->twin())); + #else + info(e)=boost::any(); + info(e->twin())=boost::any(); + #endif + } edge_info& ginfo(SHalfedge_handle e) const - { return geninfo::access(info(e)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(e)); + #else + return + *boost::any_cast(&info(e)); + #endif + } Mark& mark(SHalfedge_handle e, int i) const { return ginfo(e).m[i]; } @@ -567,13 +639,32 @@ public: }; void assoc_info(SFace_handle f) const - { geninfo::create(info(f)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(f)); + #else + info(f)=face_info(); + #endif + } void discard_info(SFace_handle f) const - { geninfo::clear(info(f)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(f)); + #else + info(f)=boost::any(); + #endif + } face_info& ginfo(SFace_handle f) const - { return geninfo::access(info(f)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(f)); + #else + return + *boost::any_cast(&info(f)); + #endif + } Mark& mark(SFace_handle f, int i) const { return ginfo(f).m[i]; } @@ -1395,7 +1486,10 @@ subdivide(const Map* M0, const Map* M1, CGAL_assertion_code(SVertex_iterator svi); CGAL_assertion_code( for(svi=this->svertices_begin(); svi!=this->svertices_end(); svi++) { - CGAL_NEF_TRACEN("vertex "<point()<<" info "<point()<<" info "<< + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + info(svi)<< + #endif " marks "<svertices_begin(); svi!=this->svertices_end(); svi++) { - CGAL_NEF_TRACEN("vertex "<point()<<" info "<point() + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + <<" info "< #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #include #include #undef CGAL_NEF_DEBUG diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_triangulator.h b/Nef_S2/include/CGAL/Nef_S2/SM_triangulator.h index 65f1e280a9a..824eb5f1a3e 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_triangulator.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_triangulator.h @@ -24,7 +24,11 @@ #include #include #include +#ifdef CGAL_I_DO_WANT_TO_USE_GENINFO #include +#else +#include +#endif #include #include #include @@ -201,13 +205,32 @@ public: }; void assoc_info(SVertex_handle v) const - { geninfo::create(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(v)); + #else + info(v)=vertex_info(); + #endif + } void discard_info(SVertex_handle v) const - { geninfo::clear(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(v)); + #else + info(v)=boost::any(); + #endif + } vertex_info& ginfo(SVertex_handle v) const - { return geninfo::access(info(v)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(v)); + #else + return + *boost::any_cast(&info(v)); + #endif + } Object_handle& support(SVertex_handle v) const { return ginfo(v).o_; } @@ -224,15 +247,36 @@ public: }; void assoc_info(SHalfedge_handle e) const - { geninfo::create(info(e)); - geninfo::create(info(e->twin())); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::create(info(e)); + geninfo::create(info(e->twin())); + #else + info(e)=edge_info(); + info(e->twin())=edge_info(); + #endif + } void discard_info(SHalfedge_handle e) const - { geninfo::clear(info(e)); - geninfo::clear(info(e->twin())); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + geninfo::clear(info(e)); + geninfo::clear(info(e->twin())); + #else + info(e)=boost::any(); + info(e->twin())=boost::any(); + #endif + } edge_info& ginfo(SHalfedge_handle e) const - { return geninfo::access(info(e)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::access(info(e)); + #else + return + *boost::any_cast(&info(e)); + #endif + } Object_handle& support(SHalfedge_handle e) const // uedge information we store in the smaller one @@ -244,7 +288,14 @@ public: { return ginfo(e).m_left_; } const edge_info& ginfo(SHalfedge_const_handle e) const - { return geninfo::const_access(info(e)); } + { + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO + return geninfo::const_access(info(e)); + #else + return + *boost::any_cast(&info(e)); + #endif + } const Mark& incident_mark(SHalfedge_const_handle e) const { return ginfo(e).m_left_; } From 44853585b7f483bc956695fb0e4746eb1ba55a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 18 Apr 2012 06:59:22 +0000 Subject: [PATCH 16/54] too naive replacement: do not use nested macros --- Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h index 3870444d656..93ad2afa3c2 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h @@ -1486,11 +1486,11 @@ subdivide(const Map* M0, const Map* M1, CGAL_assertion_code(SVertex_iterator svi); CGAL_assertion_code( for(svi=this->svertices_begin(); svi!=this->svertices_end(); svi++) { - CGAL_NEF_TRACEN("vertex "<point()<<" info "<< #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO - info(svi)<< + CGAL_NEF_TRACEN("vertex "<point()<<" info "<< info(svi)<< " marks "<point()<< " marks "<svertices_begin(); svi!=this->svertices_end(); svi++) { - CGAL_NEF_TRACEN("vertex "<point() #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO - <<" info "<point() <<" info "<point() << " marks "< Date: Wed, 18 Apr 2012 08:57:31 +0000 Subject: [PATCH 17/54] Fix an error in URL Maybe we would like to encode the version number in the URL, but that would yet another generated file in CGAL... --- Installation/INSTALL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Installation/INSTALL b/Installation/INSTALL index f35323a25a2..4b5b45a7f1d 100644 --- a/Installation/INSTALL +++ b/Installation/INSTALL @@ -11,7 +11,7 @@ are for the most common use cases, and cover the command line tools. For further information, or in case of problems, please see the detailed installation instructions, which can be found in this distribution in the file ./doc_html/index.html or on the CGAL website -http://www.cgal.org/Manual/beta/doc_html/cgal_manual/Installation/Chapter_main.html +http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Installation/Chapter_main.html The documentation of CGAL is available in PDF and HTML formats. It is not bundled with the software but can be downloaded separately From 147ca74939c5ea69233ef753d032168d8801deca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 18 Apr 2012 12:37:23 +0000 Subject: [PATCH 18/54] add precondition to ensure the polygon is simple --- Straight_skeleton_2/include/CGAL/create_straight_skeleton_2.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Straight_skeleton_2/include/CGAL/create_straight_skeleton_2.h b/Straight_skeleton_2/include/CGAL/create_straight_skeleton_2.h index 7994b531c21..ded63d4ab9f 100644 --- a/Straight_skeleton_2/include/CGAL/create_straight_skeleton_2.h +++ b/Straight_skeleton_2/include/CGAL/create_straight_skeleton_2.h @@ -135,6 +135,7 @@ boost::shared_ptr< Straight_skeleton_2 > inline create_interior_straight_skeleton_2 ( Polygon const& aOutContour, K const& k ) { + CGAL_precondition(aOutContour.is_simple() || !"The input polygon is not simple."); return create_interior_straight_skeleton_2(CGAL_SS_i::vertices_begin(aOutContour) ,CGAL_SS_i::vertices_end(aOutContour) ,k @@ -221,6 +222,7 @@ boost::shared_ptr< Straight_skeleton_2 > inline create_exterior_straight_skeleton_2 ( FT const& aMaxOffset, Polygon const& aPoly, K const& k ) { + CGAL_precondition(aPoly.is_simple() || !"The input polygon is not simple."); return create_exterior_straight_skeleton_2(aMaxOffset ,CGAL_SS_i::vertices_begin(aPoly) ,CGAL_SS_i::vertices_end (aPoly) From 52d230565c7ae384a869d69c73c235028b2f3f28 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 18 Apr 2012 13:43:24 +0000 Subject: [PATCH 19/54] Remove files added but not used --- .../include/CGAL/IO/File_header_gocad.h | 61 -------------- .../include/CGAL/IO/File_writer_gocad.h | 83 ------------------- 2 files changed, 144 deletions(-) delete mode 100644 Stream_support/include/CGAL/IO/File_header_gocad.h delete mode 100644 Stream_support/include/CGAL/IO/File_writer_gocad.h diff --git a/Stream_support/include/CGAL/IO/File_header_gocad.h b/Stream_support/include/CGAL/IO/File_header_gocad.h deleted file mode 100644 index 620b6e23c56..00000000000 --- a/Stream_support/include/CGAL/IO/File_header_gocad.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2009 GeometryFactory All rights reserved. -// -// This file is part of CGAL (www.cgal.org); you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 3 of the License, -// or (at your option) any later version. -// -// Licensees holding a valid commercial license may use this file in -// accordance with the commercial license agreement provided with the software. -// -// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// $URL$ -// $Id$ -// -// -// Author(s) : Andreas Fabri - - -#ifndef CGAL_IO_FILE_HEADER_GOCAD_H -#define CGAL_IO_FILE_HEADER_GOCAD_H 1 - -#include -#include - -namespace CGAL { - -class File_header_gocad { -private: - std::string m_fname; - std::string m_color; -public: -explicit File_header_gocad(std::string fname, std::string color) : m_fname(fname), m_color(color) {} - - std::string fname() const - { - return m_fname; - } - - std::string color() const - { - return m_color; - } - - -}; - -// Write header. -inline std::ostream& operator<<( std::ostream& out, const File_header_gocad& h){ - - return out << "GOCAD TSurf 1\n" - "HEADER {\n" - "name:" << h.fname() << "\n" - "*solid*color:" << h.color() << "\n" - "}\n" - "TFACE\n"; -} - -} //namespace CGAL -#endif // CGAL_IO_FILE_HEADER_GOCAD_H diff --git a/Stream_support/include/CGAL/IO/File_writer_gocad.h b/Stream_support/include/CGAL/IO/File_writer_gocad.h deleted file mode 100644 index 2267c66e3a5..00000000000 --- a/Stream_support/include/CGAL/IO/File_writer_gocad.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) 1997 -// Utrecht University (The Netherlands), -// ETH Zurich (Switzerland), -// INRIA Sophia-Antipolis (France), -// Max-Planck-Institute Saarbruecken (Germany), -// and Tel-Aviv University (Israel). All rights reserved. -// -// This file is part of CGAL (www.cgal.org); you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 3 of the License, -// or (at your option) any later version. -// -// Licensees holding a valid commercial license may use this file in -// accordance with the commercial license agreement provided with the software. -// -// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// $URL$ -// $Id$ -// -// -// Author(s) : Lutz Kettner - -#ifndef CGAL_IO_FILE_WRITER_GOCAD_H -#define CGAL_IO_FILE_WRITER_GOCAD_H 1 - -#include -#include -#include -#include - -namespace CGAL { - -class File_writer_gocad { - int m_vertex_index; - std::ostream* m_out; - File_header_gocad m_header; -public: - File_writer_gocad(std::string fname, std::string color) : m_vertex_index(0), m_header(fname, color) {} - File_writer_gocad( const File_header_gocad& h) : m_vertex_index(0), m_header( h) {} - - std::ostream& out() { return *m_out; } - File_header_gocad& header() { return m_header; } - const File_header_gocad& header() const { return m_header; } - - void write_header( std::ostream& o, - std::size_t vertices, - std::size_t halfedges, - std::size_t facets, - bool normals = false) - { - m_out = &o; - out() << header(); - } - - - void write_footer() - {} - - void write_vertex( const double& x, const double& y, const double& z) { - out() << "VRTX " << m_vertex_index++ << ' ' << x << ' ' << y << ' ' << z << '\n'; - } - - void write_facet_header() { - out() << '\n'; - } - - void write_facet_begin( std::size_t no) { - CGAL_assertion(no == 3); - out() << "TRGL " << ' '; - } - void write_facet_vertex_index( std::size_t index) { - out() << ' ' << index; - } - void write_facet_end() { - out() << '\n'; - } -}; - -} //namespace CGAL -#endif // CGAL_IO_FILE_WRITER_GOCAD_H // -// EOF // From a4e2f8d4f5a28f8cb713f5b9eace340b5e87d721 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 18 Apr 2012 15:33:14 +0000 Subject: [PATCH 20/54] Bug fixes in Mesh_3 documentation 1/ The requirement on the constructor of Polyhedral_mesh_domain_with_features_3 was wrong: the argument must be convertible to Mesh_polyhedron_3, and not to Polyhedron_3. 2/ The geom traits of Mesh_polyhedron_3 must be model of PolyhedronTraits_3 *and* of IntersectionGeometricTraits_3. (That patch passes the manual testsuite.) --- Mesh_3/doc_tex/Mesh_3_ref/Mesh_polyhedron_3.tex | 10 ++++++---- .../Polyhedral_mesh_domain_with_features_3.tex | 4 ++-- Mesh_3/doc_tex/Mesh_3_ref/intro.tex | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Mesh_3/doc_tex/Mesh_3_ref/Mesh_polyhedron_3.tex b/Mesh_3/doc_tex/Mesh_3_ref/Mesh_polyhedron_3.tex index 836aff7874a..d88a91a6168 100644 --- a/Mesh_3/doc_tex/Mesh_3_ref/Mesh_polyhedron_3.tex +++ b/Mesh_3/doc_tex/Mesh_3_ref/Mesh_polyhedron_3.tex @@ -12,7 +12,7 @@ % +------------------------------------------------------------------------+ -\begin{ccRefClass}{Mesh_polyhedron_3} %% add template arg's if necessary +\begin{ccRefClass}{Mesh_polyhedron_3} %% add template arg's if necessary %% \ccHtmlCrossLink{} %% add further rules for cross referencing links %% \ccHtmlIndexC[class]{} %% add further index entries @@ -28,16 +28,18 @@ detection algorithm. \ccParameters -Template parameter \ccc{Gt} stands for the geometric traits associated -to the meshing process. It should be a model of concept \ccc{PolyhedronTraits_3}. +Template parameter \ccc{IGT} stands for the geometric traits associated +to the meshing process. It should be a model of the two concepts +\ccc{PolyhedronTraits_3} and \ccc{IntersectionGeometricTraits_3}. \ccTypes -\ccNestedType{type}{\ccc{CGAL::Polyhedron_3} type with customized \ccc{PolyhedronItems_3} +\ccNestedType{type}{\ccc{CGAL::Polyhedron_3} type with customized \ccc{PolyhedronItems_3} designed to handle sharp feature detection.} \ccSeeAlso +\ccRefIdfierPage{CGAL::Polyhedron_3} \ccRefIdfierPage{CGAL::Polyhedral_mesh_domain_with_features_3} \end{ccRefClass} diff --git a/Mesh_3/doc_tex/Mesh_3_ref/Polyhedral_mesh_domain_with_features_3.tex b/Mesh_3/doc_tex/Mesh_3_ref/Polyhedral_mesh_domain_with_features_3.tex index 3c7ccb9f9cf..ff07014507c 100644 --- a/Mesh_3/doc_tex/Mesh_3_ref/Polyhedral_mesh_domain_with_features_3.tex +++ b/Mesh_3/doc_tex/Mesh_3_ref/Polyhedral_mesh_domain_with_features_3.tex @@ -53,7 +53,7 @@ instantiated with a model of the concept \ccc{IntersectionGeometricTraits_3}. \ccConstructor{template Polyhedral_mesh_domain_with_features_3(const Polyhedron& p);}{ Constructs a \ccc{Polyhedral_mesh_domain_with_features_3} from a \ccc{Polyhedron}. -The only requirement on type \ccc{Polyhedron} is that \ccc{CGAL::Polyhedron_3} should +The only requirement on type \ccc{Polyhedron} is that \ccc{CGAL::Mesh_polyhedron_3::type} should be constructible from \ccc{Polyhedron}. No feature detection is done at this level. Note that a copy of \ccc{p} will be done.} @@ -73,7 +73,7 @@ those triangles is a feature edge.} \ccRefConceptPage{MeshDomainWithFeatures_3} \\ \ccRefIdfierPage{CGAL::Mesh_domain_with_polyline_features_3} \\ \ccRefIdfierPage{CGAL::Polyhedral_mesh_domain_3} \\ -\ccRefConceptPage{Mesh_polyhedron_3} +\ccRefIdfierPage{CGAL::Mesh_polyhedron_3} \end{ccRefClass} diff --git a/Mesh_3/doc_tex/Mesh_3_ref/intro.tex b/Mesh_3/doc_tex/Mesh_3_ref/intro.tex index dd1b5e63f7f..62b6ec7868c 100644 --- a/Mesh_3/doc_tex/Mesh_3_ref/intro.tex +++ b/Mesh_3/doc_tex/Mesh_3_ref/intro.tex @@ -51,7 +51,7 @@ and their associated classes: \ccRefIdfierPage{CGAL::Polyhedral_mesh_domain_with_features_3} \\ \ccRefIdfierPage{CGAL::Labeled_image_mesh_domain_3} \\ \ccRefIdfierPage{CGAL::Mesh_domain_with_polyline_features_3} \\ -\ccRefIdfierPage{CGAL::Mesh_polyhedron_3} \\ +\ccRefIdfierPage{CGAL::Mesh_polyhedron_3} \\ \ccRefIdfierPage{CGAL::Triangle_accessor_3,K>} \\ From 8bb75c05863ff50293158a80d7f0ee191c2a4be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 19 Apr 2012 07:06:00 +0000 Subject: [PATCH 21/54] actually there was two nested macros... --- Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h | 26 +++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h index 93ad2afa3c2..f4277148e8b 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h @@ -1484,16 +1484,19 @@ subdivide(const Map* M0, const Map* M1, // DEBUG CODE: to do: have all svertices a halfedge below associated? CGAL_NEF_TRACEN("Vertex info after swep"); CGAL_assertion_code(SVertex_iterator svi); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO CGAL_assertion_code( for(svi=this->svertices_begin(); svi!=this->svertices_end(); svi++) { - #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO CGAL_NEF_TRACEN("vertex "<point()<<" info "<< info(svi)<< " marks "<point()<< " marks "<svertices_begin(); svi!=this->svertices_end(); svi++) { + CGAL_NEF_TRACEN("vertex "<point()<< " marks "<svertices_begin(),v,O); else @@ -1777,15 +1780,20 @@ subdivide(const Map* M0, const Map* M1, // DEBUG CODE: to do: have all svertices a halfedge below associated? CGAL_NEF_TRACEN("Vertex info after swep"); CGAL_assertion_code(SVertex_iterator svi); + #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO CGAL_assertion_code( for(svi=this->svertices_begin(); svi!=this->svertices_end(); svi++) { - #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO CGAL_NEF_TRACEN("vertex "<point() <<" info "<point() << " marks "<svertices_begin(); svi!=this->svertices_end(); svi++) { + CGAL_NEF_TRACEN("vertex "<point() << " marks "< Date: Thu, 19 Apr 2012 11:59:24 +0000 Subject: [PATCH 22/54] Fix a bug in test of equality operator of CGAL::cpp0x::tuple Do not test equality between default initialized tuples, because GNU/g++ version 4.1.2 does not default-initialize correctly std::tr1::tuple. --- STL_Extension/test/STL_Extension/test_stl_extension.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/STL_Extension/test/STL_Extension/test_stl_extension.cpp b/STL_Extension/test/STL_Extension/test_stl_extension.cpp index a7ab589d457..142fbd51689 100644 --- a/STL_Extension/test/STL_Extension/test_stl_extension.cpp +++ b/STL_Extension/test/STL_Extension/test_stl_extension.cpp @@ -8115,8 +8115,13 @@ void test_tuple(){ CGAL_assertion( CGAL::cpp0x::get<0>(t1)==i1 ); CGAL_assertion( CGAL::cpp0x::get<1>(t1)==i2 ); CGAL_assertion(t1==t1_2); // test the equality operator - T2 t2 = T2(); - CGAL_assertion( t2 == T2() ); + + // T2 t2 = T2(); + // CGAL_assertion( t2 == T2() ); + // + // Do not test equality between default initialized tuples, because + // GNU/g++ version 4.1.2 does not default-initialize correctly + // std::tr1::tuple. } void test_prev_next() From a40c0bf6a889f3343244565a19353f6d1aa4152b Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 19 Apr 2012 12:28:12 +0000 Subject: [PATCH 23/54] A branch to extend the CGAL::cpp0x::get function template in --- .../doc_tex/STL_Extension_ref/tuple.tex | 3 +- STL_Extension/include/CGAL/tuple.h | 52 +++++++++++++++++-- .../test/STL_Extension/test_stl_extension.cpp | 21 ++++++-- 3 files changed, 66 insertions(+), 10 deletions(-) diff --git a/STL_Extension/doc_tex/STL_Extension_ref/tuple.tex b/STL_Extension/doc_tex/STL_Extension_ref/tuple.tex index b366e999da4..8689874bea1 100644 --- a/STL_Extension/doc_tex/STL_Extension_ref/tuple.tex +++ b/STL_Extension/doc_tex/STL_Extension_ref/tuple.tex @@ -33,7 +33,8 @@ is taken from Boost. Some free functions part of the standard interface of \ccc{tuple} are also brought in namespace \ccc{CGAL::cpp0x} with using declarations, these are \ccc{make_tuple}, -\ccc{get}, \ccc{tie}. +\ccc{get}, \ccc{tie}. Like in C++0x, the \ccc{get} function template is +specialized so that it can take \ccc{std::pair} as argument. Two standard helper classes are also provided for convenience (\ccc{tuple_size} and \ccc{tuple_element}). \end{ccRefClass} diff --git a/STL_Extension/include/CGAL/tuple.h b/STL_Extension/include/CGAL/tuple.h index 65699b3c76e..c1ab51bde52 100644 --- a/STL_Extension/include/CGAL/tuple.h +++ b/STL_Extension/include/CGAL/tuple.h @@ -27,12 +27,14 @@ #ifndef CGAL_CFG_NO_CPP0X_TUPLE # include -#elif !defined CGAL_CFG_NO_TR1_TUPLE -# include -#else -# include -# include #endif +#ifndef CGAL_CFG_NO_TR1_TUPLE +# include +#endif + +#include +#include +#include namespace CGAL { @@ -68,6 +70,46 @@ struct tuple_element: public boost::tuples::element{}; #endif + +#if defined(CGAL_CFG_NO_CPP0X_TUPLE) // if not C++11 tuple + +//////////////////////////////////////////////////////////// +// // +// Allow CGAL::cpp0x::get(std::pair), if N==0 or N==1. // +// // +// That is already in C++11, but not in TR1 or in Boost // +// // +//////////////////////////////////////////////////////////// +template +struct pair_get; + +template +struct pair_get<0, T1, T2> { + static T1& get(std::pair& pair) { return pair.first; } + static const T1& get(const std::pair& pair) { return pair.first; } +}; // end specialization struct pair_get<0, T2, T2> + +template +struct pair_get<1, T1, T2> { + static T2& get(std::pair& pair) { return pair.second; } + static const T2& get(const std::pair& pair) { return pair.second; } +}; // end specialization struct pair_get<0, T2, T2> + +template +inline typename boost::tuples::element >::type& +get(std::pair& pair) { + return pair_get::get(pair); +} + +template +inline const typename boost::tuples::element >::type& +get(const std::pair& pair) { + return pair_get::get(pair); +} + +#endif // end if not C++11 tuple + + } // cpp0x #ifndef CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES diff --git a/STL_Extension/test/STL_Extension/test_stl_extension.cpp b/STL_Extension/test/STL_Extension/test_stl_extension.cpp index 142fbd51689..75e8bbbb05e 100644 --- a/STL_Extension/test/STL_Extension/test_stl_extension.cpp +++ b/STL_Extension/test/STL_Extension/test_stl_extension.cpp @@ -8110,10 +8110,7 @@ void test_tuple(){ T1 t1=CGAL::cpp0x::make_tuple(1,2); T1 t1_2=CGAL::cpp0x::make_tuple(1,2); - int i1=-1,i2=-1; - CGAL::cpp0x::tie(i1,i2)=t1; - CGAL_assertion( CGAL::cpp0x::get<0>(t1)==i1 ); - CGAL_assertion( CGAL::cpp0x::get<1>(t1)==i2 ); + CGAL_assertion(t1==t1_2); // test the equality operator // T2 t2 = T2(); @@ -8122,6 +8119,22 @@ void test_tuple(){ // Do not test equality between default initialized tuples, because // GNU/g++ version 4.1.2 does not default-initialize correctly // std::tr1::tuple. + + // Test CGAL::cpp0x::tie + int i1=-1,i2=-1; + CGAL::cpp0x::tie(i1,i2)=t1; + CGAL_assertion( CGAL::cpp0x::get<0>(t1)==i1 ); + CGAL_assertion( CGAL::cpp0x::get<1>(t1)==i2 ); + + // Test CGAL::cpp0x::get for a pair + double d = 1; + std::pair pair(-3, &d); + const std::pair const_pair(2, &d); + + assert(CGAL::cpp0x::get<0>(pair) == -3); + assert(CGAL::cpp0x::get<1>(pair) == &d); + assert(CGAL::cpp0x::get<0>(const_pair) == 2); + assert(CGAL::cpp0x::get<1>(const_pair) == &d); } void test_prev_next() From 8d62b4b093827bcd210017dc26b5a144f628b2da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 19 Apr 2012 14:22:41 +0000 Subject: [PATCH 24/54] update changes --- Installation/changes.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Installation/changes.html b/Installation/changes.html index 02f0bc7250d..59a783aaeae 100644 --- a/Installation/changes.html +++ b/Installation/changes.html @@ -144,6 +144,12 @@ since CGAL-4.0:

could lead to wrong result when meshing from a 3D image. +

3D Boolean Operations on Nef Polygons Embedded on the Sphere

+
    +
  • Fix a memory leak due to the usage of an internal mechanism that has been replaced by boost::any. This also influences the packages +2D Boolean Operations on Nef Polygons, 3D Boolean Operations on Nef Polyhedra, Convex Decomposition of Polyhedra, and +3D Minkowski Sum of Polyhedra. +

Release 4.0

From 7cc00d2449896f8c2eca48d20ae808e8de4741e1 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 20 Apr 2012 09:29:56 +0000 Subject: [PATCH 25/54] SVG version of the euler fig --- .gitattributes | 1 + .../doc_tex/Polyhedron_ref/fig/euler.svg | 319 ++++++++++++++++++ 2 files changed, 320 insertions(+) create mode 100644 Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg diff --git a/.gitattributes b/.gitattributes index fa0e3ffdd7b..d689dcc997f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3219,6 +3219,7 @@ Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet.pdf -text svneol=unset#applicati Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet1.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet2.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/euler.pdf -text svneol=unset#application/pdf +Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler_center.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/euler_center.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.gif -text svneol=unset#image/gif diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg new file mode 100644 index 00000000000..84dbd660f59 --- /dev/null +++ b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 41cef5c422b8120d80e41de27d03c1dd7a836a4e Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 20 Apr 2012 09:33:43 +0000 Subject: [PATCH 26/54] Vectorial versions --- .gitattributes | 4 + .../Polyhedron_ref/fig/euler-facet.pdf | Bin 0 -> 9313 bytes .../Polyhedron_ref/fig/euler-facet.svg | 929 +++++++++++++++++ .../Polyhedron_ref/fig/euler-vertex.pdf | Bin 0 -> 10814 bytes .../Polyhedron_ref/fig/euler-vertex.svg | 938 ++++++++++++++++++ 5 files changed, 1871 insertions(+) create mode 100644 Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf create mode 100644 Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg create mode 100644 Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf create mode 100644 Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg diff --git a/.gitattributes b/.gitattributes index d689dcc997f..fc340aa0b41 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3218,6 +3218,10 @@ Polyhedron/doc_tex/Polyhedron/idraw/polyhedron.ips -text svneol=unset#applicatio Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet1.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet2.gif -text svneol=unset#image/gif +Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf -text svneol=unset#application/pdf +Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg -text +Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf -text svneol=unset#application/pdf +Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler_center.gif -text svneol=unset#image/gif diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..259c5fb3a4822b7944105a7e2597f60423d9aeaf GIT binary patch literal 9313 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 literal 0 HcmV?d00001 diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg new file mode 100644 index 00000000000..cde3e4a3371 --- /dev/null +++ b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg @@ -0,0 +1,929 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf new file mode 100644 index 0000000000000000000000000000000000000000..baca524996d78608871a466ea83a55b7d83aff77 GIT binary patch literal 10814 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 Cia50Z literal 0 HcmV?d00001 diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg new file mode 100644 index 00000000000..5201ecd87e1 --- /dev/null +++ b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg @@ -0,0 +1,938 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 579a606a752d626d3575921d26ec81ace943fa97 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 20 Apr 2012 09:35:35 +0000 Subject: [PATCH 27/54] Rename - to _, to have same naming scheme as .gif files --- .gitattributes | 8 ++++---- .../fig/{euler-facet.pdf => euler_facet.pdf} | Bin .../fig/{euler-facet.svg => euler_facet.svg} | 0 .../fig/{euler-vertex.pdf => euler_vertex.pdf} | Bin .../fig/{euler-vertex.svg => euler_vertex.svg} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename Polyhedron/doc_tex/Polyhedron_ref/fig/{euler-facet.pdf => euler_facet.pdf} (100%) rename Polyhedron/doc_tex/Polyhedron_ref/fig/{euler-facet.svg => euler_facet.svg} (100%) rename Polyhedron/doc_tex/Polyhedron_ref/fig/{euler-vertex.pdf => euler_vertex.pdf} (100%) rename Polyhedron/doc_tex/Polyhedron_ref/fig/{euler-vertex.svg => euler_vertex.svg} (100%) diff --git a/.gitattributes b/.gitattributes index fc340aa0b41..38d7151d460 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3218,18 +3218,18 @@ Polyhedron/doc_tex/Polyhedron/idraw/polyhedron.ips -text svneol=unset#applicatio Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet1.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/add_facet2.gif -text svneol=unset#image/gif -Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf -text svneol=unset#application/pdf -Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg -text -Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf -text svneol=unset#application/pdf -Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/euler.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler_center.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/euler_center.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.gif -text svneol=unset#image/gif +Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.pdf -text svneol=unset#application/pdf +Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/euler_loop.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/euler_loop.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.gif -text svneol=unset#image/gif +Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.pdf -text svneol=unset#application/pdf +Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.svg -text Polyhedron/doc_tex/Polyhedron_ref/fig/halfedge.gif -text svneol=unset#image/gif Polyhedron/doc_tex/Polyhedron_ref/fig/halfedge.pdf -text svneol=unset#application/pdf Polyhedron/doc_tex/Polyhedron_ref/fig/halfedge_small.gif -text svneol=unset#image/gif diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.pdf similarity index 100% rename from Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.pdf rename to Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.pdf diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.svg similarity index 100% rename from Polyhedron/doc_tex/Polyhedron_ref/fig/euler-facet.svg rename to Polyhedron/doc_tex/Polyhedron_ref/fig/euler_facet.svg diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.pdf similarity index 100% rename from Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.pdf rename to Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.pdf diff --git a/Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg b/Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.svg similarity index 100% rename from Polyhedron/doc_tex/Polyhedron_ref/fig/euler-vertex.svg rename to Polyhedron/doc_tex/Polyhedron_ref/fig/euler_vertex.svg From 66ec3ee6b8e5f3e06a952f5288ececf0977a7159 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 20 Apr 2012 10:30:10 +0000 Subject: [PATCH 28/54] I was wrong: get(std::pair) was already in TR1. Strange that it is not in Boost. --- STL_Extension/include/CGAL/tuple.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/STL_Extension/include/CGAL/tuple.h b/STL_Extension/include/CGAL/tuple.h index c1ab51bde52..8088806b939 100644 --- a/STL_Extension/include/CGAL/tuple.h +++ b/STL_Extension/include/CGAL/tuple.h @@ -71,13 +71,14 @@ struct tuple_element: public boost::tuples::element{}; #endif -#if defined(CGAL_CFG_NO_CPP0X_TUPLE) // if not C++11 tuple +#if defined(CGAL_CFG_NO_CPP0X_TUPLE) && defined(CGAL_CFG_NO_TR1_TUPLE) +// If not TR1 or C++11 tuple, we need to add get(std::pair). //////////////////////////////////////////////////////////// // // // Allow CGAL::cpp0x::get(std::pair), if N==0 or N==1. // // // -// That is already in C++11, but not in TR1 or in Boost // +// That is already in TR1 and C++11, but not in Boost. // // // //////////////////////////////////////////////////////////// template From 4c186e9417da06202cad8d1c77f8ae0ef95c9865 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 20 Apr 2012 10:34:06 +0000 Subject: [PATCH 29/54] Oops: std::tr1::get(std::pair) is in --- STL_Extension/include/CGAL/tuple.h | 1 + 1 file changed, 1 insertion(+) diff --git a/STL_Extension/include/CGAL/tuple.h b/STL_Extension/include/CGAL/tuple.h index 8088806b939..698df419e55 100644 --- a/STL_Extension/include/CGAL/tuple.h +++ b/STL_Extension/include/CGAL/tuple.h @@ -30,6 +30,7 @@ #endif #ifndef CGAL_CFG_NO_TR1_TUPLE # include +# include #endif #include From 2f06819c2eb7e2f6d1b95ba732b4ed87f8b42f58 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 20 Apr 2012 10:52:33 +0000 Subject: [PATCH 30/54] Fix typo --- .../Triangulation_2_ref/Constrained_triangulation_plus_2.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex b/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex index dc6a281517c..71555e721e8 100644 --- a/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex +++ b/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex @@ -102,7 +102,7 @@ is \ccc{Context}.} \ccConstructor{Constrained_triangulation_plus_2(const Constrained_triangulation_plus_2& ct);}{Copy constructor.} -\ccConstructor{Constrained_triangulation_plus_2(std::list& lc, +\ccConstructor{Constrained_triangulation_plus_2(std::list& lc, const Geom_traits& t = Geom_traits())} {Introduces and builds a constrained triangulation from the list of constraints \ccc{lc}.} From 7611a198039ebcd724cd0529e4482b7ddb25f7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 23 Apr 2012 08:13:43 +0000 Subject: [PATCH 31/54] more verbose test --- Number_types/test/Number_types/Root_of_traits.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Number_types/test/Number_types/Root_of_traits.cpp b/Number_types/test/Number_types/Root_of_traits.cpp index 86d1ef54716..a9cb2f5c2a2 100644 --- a/Number_types/test/Number_types/Root_of_traits.cpp +++ b/Number_types/test/Number_types/Root_of_traits.cpp @@ -46,6 +46,7 @@ void test_root_of_traits_for_set(Integer, Rational, FWS){ } int main(){ + std::cout << "Testing with double" << std::endl; CGAL::Test::test_root_of_traits< double , double , double >(); try{// just compile and try to get as far as you can go. @@ -56,6 +57,7 @@ int main(){ #ifdef CGAL_HAS_GMP_ARITHMETIC_KERNEL //TODO: switch to Gmpq { + std::cout << "Testing with GMP" << std::endl; typedef CGAL::GMP_arithmetic_kernel AK; typedef AK::Integer Integer; typedef AK::Rational Rational; @@ -65,6 +67,7 @@ int main(){ #endif #ifdef CGAL_HAS_LEDA_ARITHMETIC_KERNEL { + std::cout << "Testing with LEDA" << std::endl; typedef CGAL::LEDA_arithmetic_kernel AK; typedef AK::Integer Integer; typedef AK::Rational Rational; @@ -74,6 +77,7 @@ int main(){ #endif #ifdef CGAL_HAS_CORE_ARITHMETIC_KERNEL { + std::cout << "Testing with CORE" << std::endl; typedef CGAL::CORE_arithmetic_kernel AK; typedef AK::Integer Integer; typedef AK::Rational Rational; @@ -82,6 +86,7 @@ int main(){ } #endif { + std::cout << "Testing with MP_Float" << std::endl; typedef CGAL::MP_Float_arithmetic_kernel AK; typedef AK::Integer Integer; typedef AK::Rational Rational; From 4fabccd1115341a9c2306280e59e6c9a71052e88 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 13:18:04 +0000 Subject: [PATCH 32/54] updated crontab (automated commit) --- .../infrastructure/cgal.geometryfactory.com/crontab | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 175d6bc0540..259c5732ad1 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -11,7 +11,7 @@ # Update testsuite result pages -5,15,25,35,45,55 * * * * cd $HOME/CGAL/collect_and_public_testresults; ./treat_result_collection +#5,15,25,35,45,55 * * * * cd $HOME/CGAL/collect_and_public_testresults; ./treat_result_collection # Create internal release # The script also updates the manual tools. @@ -20,7 +20,7 @@ 0 21 * * Fri cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next --public --do-it # "next" + candidates -0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it +#0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it # - on trunk #0 21 * * Sat cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/trunk --public --do-it @@ -31,10 +31,10 @@ #30 21 * * * grep 'conflicts with' $HOME/CGAL/create_internal_release/create_release.log.`date '+%Y-%m-%d'`* --no-filename # Try to launch the test suite, every 10mn, from 21:00 to 22:50 -*/10 21-22 * * * $HOME/CGAL/Scripts/developer_scripts/autotest_cgal_with_cmake +#*/10 21-22 * * * $HOME/CGAL/Scripts/developer_scripts/autotest_cgal_with_cmake # Manual Test suite, at 9:40pm -40 21 * * * cd $HOME/CGAL/releases-and-testsuites-with-cmake/CGAL-I/doc_tex; nice -19 $HOME/bin/cgal_manual -testsuite || true +#40 21 * * * cd $HOME/CGAL/releases-and-testsuites-with-cmake/CGAL-I/doc_tex; nice -19 $HOME/bin/cgal_manual -testsuite || true # Dump the crontab to SVN every hour at minute 18 18 * * * * $HOME/bin/dump_crontab From 5acc79e554415fe4385926e2b0e8699db6dc388d Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 16:54:47 +0000 Subject: [PATCH 33/54] Add comments to explain what happens with the use of Default Dt_3 --- Triangulation_3/include/CGAL/Delaunay_triangulation_3.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Triangulation_3/include/CGAL/Delaunay_triangulation_3.h b/Triangulation_3/include/CGAL/Delaunay_triangulation_3.h index 79a8a521374..894fee0afbe 100644 --- a/Triangulation_3/include/CGAL/Delaunay_triangulation_3.h +++ b/Triangulation_3/include/CGAL/Delaunay_triangulation_3.h @@ -47,12 +47,18 @@ namespace CGAL { +// Here is the declaration of a class template with three arguments, one +// having a default value. There is no definition of that class template. template < class Gt, class Tds_ = Default, class Location_policy = Default > class Delaunay_triangulation_3; +// There is a specialization Delaunay_triangulation_3 +// defined in . +// Here is the specialization Delaunay_triangulation_3, with two +// arguments, that is if Location_policy being the default value 'Default'. template < class Gt, class Tds_ > class Delaunay_triangulation_3 : public Triangulation_3 From a8473dfe083418d42bea7eb37474c6e170202988 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 18:03:14 +0000 Subject: [PATCH 34/54] Document the destructor is ugly and useless --- .../Constrained_triangulation_plus_2.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex b/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex index 71555e721e8..2f8d4476d4b 100644 --- a/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex +++ b/Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_triangulation_plus_2.tex @@ -119,9 +119,9 @@ $\left[\right.$\ccc{first}, \ccc{last}$\left.\right)$. is \ccc{Constraint}. } -\ccFunction{void ~ctp();} -{Destructor. All vertices and faces are deleted. -The constraint hierarchy is deleted.} +%\ccFunction{void ~ctp();} +%{Destructor. All vertices and faces are deleted. +%The constraint hierarchy is deleted.} From a4be5cfc47202b7b5ab8cf3fd8cacefa01de9198 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 18:18:04 +0000 Subject: [PATCH 35/54] updated crontab (automated commit) --- .../infrastructure/cgal.geometryfactory.com/crontab | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 259c5732ad1..756c3bdd46d 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -16,11 +16,10 @@ # Create internal release # The script also updates the manual tools. # "next" alone -#0 21 * * Mon,Tue,Wed,Thu,Fri,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next --public --do-it +0 21 * * Fri,Sat cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next --public --do-it -0 21 * * Fri cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next --public --do-it # "next" + candidates -#0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it +0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it # - on trunk #0 21 * * Sat cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/trunk --public --do-it @@ -28,13 +27,13 @@ #0 21 * * Sat cd $HOME/CGAL/create_internal_release-3.9-branch; $HOME/bin/create_release $HOME/CGAL/CGAL-3.9-branch --public --do-it # A test that does not work -#30 21 * * * grep 'conflicts with' $HOME/CGAL/create_internal_release/create_release.log.`date '+%Y-%m-%d'`* --no-filename +30 21 * * * grep 'conflicts with' $HOME/CGAL/create_internal_release/create_release.log.`date '+%Y-%m-%d'`* --no-filename # Try to launch the test suite, every 10mn, from 21:00 to 22:50 -#*/10 21-22 * * * $HOME/CGAL/Scripts/developer_scripts/autotest_cgal_with_cmake +*/10 21-22 * * * $HOME/CGAL/Scripts/developer_scripts/autotest_cgal_with_cmake # Manual Test suite, at 9:40pm -#40 21 * * * cd $HOME/CGAL/releases-and-testsuites-with-cmake/CGAL-I/doc_tex; nice -19 $HOME/bin/cgal_manual -testsuite || true +40 21 * * * cd $HOME/CGAL/releases-and-testsuites-with-cmake/CGAL-I/doc_tex; nice -19 $HOME/bin/cgal_manual -testsuite || true # Dump the crontab to SVN every hour at minute 18 18 * * * * $HOME/bin/dump_crontab From 6c705ab777725d0aa6e5e8b57277003d6ac04e59 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 22:17:15 +0000 Subject: [PATCH 36/54] Fix the test One cannot expect exact intersections computations results when the kernel is not. This patch fixes the test: the equality between the result and the expected result is tested with an epsilon unless the kernel has exact constructions. --- .../triangle_other_intersection_test.cpp | 273 +++++++++--------- 1 file changed, 139 insertions(+), 134 deletions(-) diff --git a/Intersections_3/test/Intersections_3/triangle_other_intersection_test.cpp b/Intersections_3/test/Intersections_3/triangle_other_intersection_test.cpp index 016e772b0b5..6f29a180e18 100644 --- a/Intersections_3/test/Intersections_3/triangle_other_intersection_test.cpp +++ b/Intersections_3/test/Intersections_3/triangle_other_intersection_test.cpp @@ -216,15 +216,20 @@ void random_test() // Precomputed results test // ----------------------------------- template -bool test_aux(const Triangle t, +bool test_aux(bool is_kernel_exact, + const Triangle t, const Query& q, const std::string& name, - const Result& expected) + const Result& expected, + double sq_espilon = 1e-20) { CGAL::Object object = CGAL::intersection(t,q); const Result* pr = CGAL::object_cast(&object); - if ( (NULL != pr) && (expected == *pr) ) + if ( (NULL != pr) && + (is_kernel_exact ? + (expected == *pr) : + CGAL::to_double(CGAL::squared_distance(expected, *pr)) < sq_espilon ) ) { return true; } @@ -243,7 +248,7 @@ bool test_aux(const Triangle t, } template -bool test() +bool test(bool is_kernel_exact = true) { // types typedef typename K::FT FT; @@ -281,10 +286,10 @@ bool test() Segment s32(p3,p2); Segment s31(p3,p1); - bool b = test_aux(t,s12,"t-s12",s12); - b &= test_aux(t,s21,"t-s21",s21); - b &= test_aux(t,s13,"t-s13",s13); - b &= test_aux(t,s23,"t-s23",s23); + bool b = test_aux(is_kernel_exact,t,s12,"t-s12",s12); + b &= test_aux(is_kernel_exact,t,s21,"t-s21",s21); + b &= test_aux(is_kernel_exact,t,s13,"t-s13",s13); + b &= test_aux(is_kernel_exact,t,s23,"t-s23",s23); // Inside points Point p4(FT(0.5), FT(0.5), FT(0.)); @@ -318,30 +323,30 @@ bool test() Segment s78(p7,p8); Segment s87(p8,p7); - b &= test_aux(t,s14,"t-s14",s14); - b &= test_aux(t,s41,"t-s41",s41); - b &= test_aux(t,s24,"t-s24",s24); - b &= test_aux(t,s42,"t-s42",s42); - b &= test_aux(t,s15,"t-s15",s15); - b &= test_aux(t,s25,"t-s25",s25); - b &= test_aux(t,s34,"t-s34",s34); - b &= test_aux(t,s35,"t-s35",s35); - b &= test_aux(t,s36,"t-s36",s36); - b &= test_aux(t,s45,"t-s45",s45); - b &= test_aux(t,s16,"t-s16",s16); - b &= test_aux(t,s26,"t-s26",s26); - b &= test_aux(t,s62,"t-s62",s62); - b &= test_aux(t,s46,"t-s46",s46); - b &= test_aux(t,s65,"t-s65",s65); - b &= test_aux(t,s64,"t-s64",s64); - b &= test_aux(t,s48,"t-s48",s48); - b &= test_aux(t,s56,"t-s56",s56); - b &= test_aux(t,s17,"t-t17",s17); - b &= test_aux(t,s67,"t-t67",s67); - b &= test_aux(t,s68,"t-s68",s68); - b &= test_aux(t,s86,"t-s86",s86); - b &= test_aux(t,s78,"t-t78",s78); - b &= test_aux(t,s87,"t-t87",s87); + b &= test_aux(is_kernel_exact,t,s14,"t-s14",s14); + b &= test_aux(is_kernel_exact,t,s41,"t-s41",s41); + b &= test_aux(is_kernel_exact,t,s24,"t-s24",s24); + b &= test_aux(is_kernel_exact,t,s42,"t-s42",s42); + b &= test_aux(is_kernel_exact,t,s15,"t-s15",s15); + b &= test_aux(is_kernel_exact,t,s25,"t-s25",s25); + b &= test_aux(is_kernel_exact,t,s34,"t-s34",s34); + b &= test_aux(is_kernel_exact,t,s35,"t-s35",s35); + b &= test_aux(is_kernel_exact,t,s36,"t-s36",s36); + b &= test_aux(is_kernel_exact,t,s45,"t-s45",s45); + b &= test_aux(is_kernel_exact,t,s16,"t-s16",s16); + b &= test_aux(is_kernel_exact,t,s26,"t-s26",s26); + b &= test_aux(is_kernel_exact,t,s62,"t-s62",s62); + b &= test_aux(is_kernel_exact,t,s46,"t-s46",s46); + b &= test_aux(is_kernel_exact,t,s65,"t-s65",s65); + b &= test_aux(is_kernel_exact,t,s64,"t-s64",s64); + b &= test_aux(is_kernel_exact,t,s48,"t-s48",s48); + b &= test_aux(is_kernel_exact,t,s56,"t-s56",s56); + b &= test_aux(is_kernel_exact,t,s17,"t-t17",s17); + b &= test_aux(is_kernel_exact,t,s67,"t-t67",s67); + b &= test_aux(is_kernel_exact,t,s68,"t-s68",s68); + b &= test_aux(is_kernel_exact,t,s86,"t-s86",s86); + b &= test_aux(is_kernel_exact,t,s78,"t-t78",s78); + b &= test_aux(is_kernel_exact,t,s87,"t-t87",s87); // Outside points (in triangle plane) Point pA(FT(-0.5), FT(1.), FT(0.5)); @@ -362,17 +367,17 @@ bool test() Segment s1F(p1,pF); Segment sF6(pF,p6); - b &= test_aux(t,sAB,"t-sAB",p2); - b &= test_aux(t,sBC,"t-sBC",s46); - b &= test_aux(t,s2E,"t-s2E",s26); - b &= test_aux(t,sE2,"t-sE2",s62); - b &= test_aux(t,s2A,"t-s2A",p2); - b &= test_aux(t,s6E,"t-s6E",p6); - b &= test_aux(t,sB8,"t-sB8",s48); - b &= test_aux(t,sC8,"t-sC8",s68); - b &= test_aux(t,s8C,"t-s8C",s86); - b &= test_aux(t,s1F,"t-s1F",s13); - b &= test_aux(t,sF6,"t-sF6",s36); + b &= test_aux(is_kernel_exact,t,sAB,"t-sAB",p2); + b &= test_aux(is_kernel_exact,t,sBC,"t-sBC",s46); + b &= test_aux(is_kernel_exact,t,s2E,"t-s2E",s26); + b &= test_aux(is_kernel_exact,t,sE2,"t-sE2",s62); + b &= test_aux(is_kernel_exact,t,s2A,"t-s2A",p2); + b &= test_aux(is_kernel_exact,t,s6E,"t-s6E",p6); + b &= test_aux(is_kernel_exact,t,sB8,"t-sB8",s48); + b &= test_aux(is_kernel_exact,t,sC8,"t-sC8",s68); + b &= test_aux(is_kernel_exact,t,s8C,"t-s8C",s86); + b &= test_aux(is_kernel_exact,t,s1F,"t-s1F",s13); + b &= test_aux(is_kernel_exact,t,sF6,"t-sF6",s36); // Outside triangle plane Point pa(FT(0.), FT(0.), FT(0.)); @@ -386,11 +391,11 @@ bool test() Segment sa8(pa,p8); Segment sb2(pb,p2); - b &= test_aux(t,sab,"t-sab",p1); - b &= test_aux(t,sac,"t-sac",p6); - b &= test_aux(t,sae,"t-sae",p8); - b &= test_aux(t,sa8,"t-sa8",p8); - b &= test_aux(t,sb2,"t-sb2",p2); + b &= test_aux(is_kernel_exact,t,sab,"t-sab",p1); + b &= test_aux(is_kernel_exact,t,sac,"t-sac",p6); + b &= test_aux(is_kernel_exact,t,sae,"t-sae",p8); + b &= test_aux(is_kernel_exact,t,sa8,"t-sa8",p8); + b &= test_aux(is_kernel_exact,t,sb2,"t-sb2",p2); // ----------------------------------- // ray queries @@ -401,10 +406,10 @@ bool test() Ray r13(p1,p3); Ray r23(p2,p3); - b &= test_aux(t,r12,"t-r12",s12); - b &= test_aux(t,r21,"t-r21",s21); - b &= test_aux(t,r13,"t-r13",s13); - b &= test_aux(t,r23,"t-r23",s23); + b &= test_aux(is_kernel_exact,t,r12,"t-r12",s12); + b &= test_aux(is_kernel_exact,t,r21,"t-r21",s21); + b &= test_aux(is_kernel_exact,t,r13,"t-r13",s13); + b &= test_aux(is_kernel_exact,t,r23,"t-r23",s23); // In triangle Point p9_(FT(0.), FT(0.5), FT(0.5)); @@ -432,26 +437,26 @@ bool test() Ray r68(p6,p8); Segment r89_res(p8,p9_); - b &= test_aux(t,r14,"t-r14",s12); - b &= test_aux(t,r41,"t-r41",s41); - b &= test_aux(t,r24,"t-r24",s21); - b &= test_aux(t,r42,"t-r42",s42); - b &= test_aux(t,r15,"t-r15",s15); - b &= test_aux(t,r25,"t-r25",s23); - b &= test_aux(t,r34,"t-r34",s34); - b &= test_aux(t,r35,"t-r35",s32); - b &= test_aux(t,r36,"t-r36",s31); - b &= test_aux(t,r45,"t-r45",s45); - b &= test_aux(t,r16,"t-r16",s13); - b &= test_aux(t,r26,"t-r26",s26); - b &= test_aux(t,r62,"t-r62",s62); - b &= test_aux(t,r46,"t-r46",s46); - b &= test_aux(t,r48,"t-r48",s46); - b &= test_aux(t,r56,"t-r56",s56); - b &= test_aux(t,r47,"t-r47",s45); - b &= test_aux(t,r89,"t-t89",r89_res); - b &= test_aux(t,r68,"t-r68",s64); - b &= test_aux(t,r86,"t-r86",s86); + b &= test_aux(is_kernel_exact,t,r14,"t-r14",s12); + b &= test_aux(is_kernel_exact,t,r41,"t-r41",s41); + b &= test_aux(is_kernel_exact,t,r24,"t-r24",s21); + b &= test_aux(is_kernel_exact,t,r42,"t-r42",s42); + b &= test_aux(is_kernel_exact,t,r15,"t-r15",s15); + b &= test_aux(is_kernel_exact,t,r25,"t-r25",s23); + b &= test_aux(is_kernel_exact,t,r34,"t-r34",s34); + b &= test_aux(is_kernel_exact,t,r35,"t-r35",s32); + b &= test_aux(is_kernel_exact,t,r36,"t-r36",s31); + b &= test_aux(is_kernel_exact,t,r45,"t-r45",s45); + b &= test_aux(is_kernel_exact,t,r16,"t-r16",s13); + b &= test_aux(is_kernel_exact,t,r26,"t-r26",s26); + b &= test_aux(is_kernel_exact,t,r62,"t-r62",s62); + b &= test_aux(is_kernel_exact,t,r46,"t-r46",s46); + b &= test_aux(is_kernel_exact,t,r48,"t-r48",s46); + b &= test_aux(is_kernel_exact,t,r56,"t-r56",s56); + b &= test_aux(is_kernel_exact,t,r47,"t-r47",s45); + b &= test_aux(is_kernel_exact,t,r89,"t-t89",r89_res); + b &= test_aux(is_kernel_exact,t,r68,"t-r68",s64); + b &= test_aux(is_kernel_exact,t,r86,"t-r86",s86); // Outside points (in triangre prane) @@ -467,17 +472,17 @@ bool test() Ray r1F(p1,pF); Ray rF6(pF,p6); - b &= test_aux(t,rAB,"t-rAB",p2); - b &= test_aux(t,rBC,"t-rBC",s46); - b &= test_aux(t,r2E,"t-r2E",s26); - b &= test_aux(t,rE2,"t-rE2",s62); - b &= test_aux(t,r2A,"t-r2A",p2); - b &= test_aux(t,r6E,"t-r6E",p6); - b &= test_aux(t,rB8,"t-rB8",s46); - b &= test_aux(t,rC8,"t-rC8",s64); - b &= test_aux(t,r8C,"t-r8C",s86); - b &= test_aux(t,r1F,"t-r1F",s13); - b &= test_aux(t,rF6,"t-rF6",s31); + b &= test_aux(is_kernel_exact,t,rAB,"t-rAB",p2); + b &= test_aux(is_kernel_exact,t,rBC,"t-rBC",s46); + b &= test_aux(is_kernel_exact,t,r2E,"t-r2E",s26); + b &= test_aux(is_kernel_exact,t,rE2,"t-rE2",s62); + b &= test_aux(is_kernel_exact,t,r2A,"t-r2A",p2); + b &= test_aux(is_kernel_exact,t,r6E,"t-r6E",p6); + b &= test_aux(is_kernel_exact,t,rB8,"t-rB8",s46); + b &= test_aux(is_kernel_exact,t,rC8,"t-rC8",s64); + b &= test_aux(is_kernel_exact,t,r8C,"t-r8C",s86); + b &= test_aux(is_kernel_exact,t,r1F,"t-r1F",s13); + b &= test_aux(is_kernel_exact,t,rF6,"t-rF6",s31); // Outside triangle plane Ray rab(pa,pb); @@ -486,11 +491,11 @@ bool test() Ray ra8(pa,p8); Ray rb2(pb,p2); - b &= test_aux(t,rab,"t-rab",p1); - b &= test_aux(t,rac,"t-rac",p6); - b &= test_aux(t,rae,"t-rae",p8); - b &= test_aux(t,ra8,"t-ra8",p8); - b &= test_aux(t,rb2,"t-rb2",p2); + b &= test_aux(is_kernel_exact,t,rab,"t-rab",p1); + b &= test_aux(is_kernel_exact,t,rac,"t-rac",p6); + b &= test_aux(is_kernel_exact,t,rae,"t-rae",p8); + b &= test_aux(is_kernel_exact,t,ra8,"t-ra8",p8); + b &= test_aux(is_kernel_exact,t,rb2,"t-rb2",p2); // ----------------------------------- // Line queries @@ -501,10 +506,10 @@ bool test() Line l13(p1,p3); Line l23(p2,p3); - b &= test_aux(t,l12,"t-l12",s12); - b &= test_aux(t,l21,"t-l21",s21); - b &= test_aux(t,l13,"t-l13",s13); - b &= test_aux(t,l23,"t-l23",s23); + b &= test_aux(is_kernel_exact,t,l12,"t-l12",s12); + b &= test_aux(is_kernel_exact,t,l21,"t-l21",s21); + b &= test_aux(is_kernel_exact,t,l13,"t-l13",s13); + b &= test_aux(is_kernel_exact,t,l23,"t-l23",s23); // In triangle Line l14(p1,p4); @@ -530,26 +535,26 @@ bool test() Segment l89_res(p1,p9_); - b &= test_aux(t,l14,"t-l14",s12); - b &= test_aux(t,l41,"t-l41",s21); - b &= test_aux(t,l24,"t-l24",s21); - b &= test_aux(t,l42,"t-l42",s12); - b &= test_aux(t,l15,"t-l15",s15); - b &= test_aux(t,l25,"t-l25",s23); - b &= test_aux(t,l34,"t-l34",s34); - b &= test_aux(t,l35,"t-l35",s32); - b &= test_aux(t,l36,"t-l36",s31); - b &= test_aux(t,l45,"t-l45",s45); - b &= test_aux(t,l16,"t-l16",s13); - b &= test_aux(t,l26,"t-l26",s26); - b &= test_aux(t,l62,"t-l62",s62); - b &= test_aux(t,l46,"t-l46",s46); - b &= test_aux(t,l48,"t-l48",s46); - b &= test_aux(t,l56,"t-l56",s56); - b &= test_aux(t,l47,"t-l47",s45); - b &= test_aux(t,l89,"t-t89",l89_res); - b &= test_aux(t,l68,"t-l68",s64); - b &= test_aux(t,l86,"t-l86",s46); + b &= test_aux(is_kernel_exact,t,l14,"t-l14",s12); + b &= test_aux(is_kernel_exact,t,l41,"t-l41",s21); + b &= test_aux(is_kernel_exact,t,l24,"t-l24",s21); + b &= test_aux(is_kernel_exact,t,l42,"t-l42",s12); + b &= test_aux(is_kernel_exact,t,l15,"t-l15",s15); + b &= test_aux(is_kernel_exact,t,l25,"t-l25",s23); + b &= test_aux(is_kernel_exact,t,l34,"t-l34",s34); + b &= test_aux(is_kernel_exact,t,l35,"t-l35",s32); + b &= test_aux(is_kernel_exact,t,l36,"t-l36",s31); + b &= test_aux(is_kernel_exact,t,l45,"t-l45",s45); + b &= test_aux(is_kernel_exact,t,l16,"t-l16",s13); + b &= test_aux(is_kernel_exact,t,l26,"t-l26",s26); + b &= test_aux(is_kernel_exact,t,l62,"t-l62",s62); + b &= test_aux(is_kernel_exact,t,l46,"t-l46",s46); + b &= test_aux(is_kernel_exact,t,l48,"t-l48",s46); + b &= test_aux(is_kernel_exact,t,l56,"t-l56",s56); + b &= test_aux(is_kernel_exact,t,l47,"t-l47",s45); + b &= test_aux(is_kernel_exact,t,l89,"t-t89",l89_res); + b &= test_aux(is_kernel_exact,t,l68,"t-l68",s64); + b &= test_aux(is_kernel_exact,t,l86,"t-l86",s46); // Outside points (in triangle plane) @@ -565,17 +570,17 @@ bool test() Line l1F(p1,pF); Line lF6(pF,p6); - b &= test_aux(t,lAB,"t-lAB",p2); - b &= test_aux(t,lBC,"t-lBC",s46); - b &= test_aux(t,l2E,"t-l2E",s26); - b &= test_aux(t,lE2,"t-lE2",s62); - b &= test_aux(t,l2A,"t-l2A",p2); - b &= test_aux(t,l6E,"t-l6E",s26); - b &= test_aux(t,lB8,"t-lB8",s46); - b &= test_aux(t,lC8,"t-lC8",s64); - b &= test_aux(t,l8C,"t-l8C",s46); - b &= test_aux(t,l1F,"t-l1F",s13); - b &= test_aux(t,lF6,"t-lF6",s31); + b &= test_aux(is_kernel_exact,t,lAB,"t-lAB",p2); + b &= test_aux(is_kernel_exact,t,lBC,"t-lBC",s46); + b &= test_aux(is_kernel_exact,t,l2E,"t-l2E",s26); + b &= test_aux(is_kernel_exact,t,lE2,"t-lE2",s62); + b &= test_aux(is_kernel_exact,t,l2A,"t-l2A",p2); + b &= test_aux(is_kernel_exact,t,l6E,"t-l6E",s26); + b &= test_aux(is_kernel_exact,t,lB8,"t-lB8",s46); + b &= test_aux(is_kernel_exact,t,lC8,"t-lC8",s64); + b &= test_aux(is_kernel_exact,t,l8C,"t-l8C",s46); + b &= test_aux(is_kernel_exact,t,l1F,"t-l1F",s13); + b &= test_aux(is_kernel_exact,t,lF6,"t-lF6",s31); // Outside triangle plane Line lab(pa,pb); @@ -584,11 +589,11 @@ bool test() Line la8(pa,p8); Line lb2(pb,p2); - b &= test_aux(t,lab,"t-lab",p1); - b &= test_aux(t,lac,"t-lac",p6); - b &= test_aux(t,lae,"t-lae",p8); - b &= test_aux(t,la8,"t-la8",p8); - b &= test_aux(t,lb2,"t-lb2",p2); + b &= test_aux(is_kernel_exact,t,lab,"t-lab",p1); + b &= test_aux(is_kernel_exact,t,lac,"t-lac",p6); + b &= test_aux(is_kernel_exact,t,lae,"t-lae",p8); + b &= test_aux(is_kernel_exact,t,la8,"t-la8",p8); + b &= test_aux(is_kernel_exact,t,lb2,"t-lb2",p2); return b; @@ -606,22 +611,22 @@ int main() // ----------------------------------- std::cout << "Test precomputed intersection results" << std::endl; std::cout << "\tTesting with Simple_cartesian..." << std::endl ; - bool b = test(); + bool b = test(false); std::cout << "\tTesting with Simple_cartesian..." << std::endl ; - b &= test(); + b &= test(false); std::cout << "\tTesting with Cartesian..." << std::endl ; - b &= test(); + b &= test(false); std::cout << "\tTesting with Cartesian..." << std::endl ; - b &= test(); + b &= test(false); std::cout << "\tTesting with Exact_predicates_inexact_constructions_kernel..." << std::endl ; - b &= test(); + b &= test(false); std::cout << "\tTesting with Exact_predicates_exact_constructions_kernel..." << std::endl ; - b &= test(); + b &= test(true); //test with a coplanar segment b &= CGAL::intersection( Epec::Segment_3(Epec::Point_3(0.125, 0, -0.125),Epec::Point_3(0.25, 0, -0.125) ), From f2ed350303600e624fe912be8750c7460ce68eb8 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 23 Apr 2012 22:18:02 +0000 Subject: [PATCH 37/54] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 756c3bdd46d..19e04f3930f 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -27,7 +27,7 @@ #0 21 * * Sat cd $HOME/CGAL/create_internal_release-3.9-branch; $HOME/bin/create_release $HOME/CGAL/CGAL-3.9-branch --public --do-it # A test that does not work -30 21 * * * grep 'conflicts with' $HOME/CGAL/create_internal_release/create_release.log.`date '+%Y-%m-%d'`* --no-filename +#30 21 * * * grep 'conflicts with' $HOME/CGAL/create_internal_release/create_release.log.`date '+%Y-%m-%d'`* --no-filename # Try to launch the test suite, every 10mn, from 21:00 to 22:50 */10 21-22 * * * $HOME/CGAL/Scripts/developer_scripts/autotest_cgal_with_cmake From 00b8a700d946e9196683bb3748d4345f44a0536f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20M=C3=B6ller?= Date: Tue, 24 Apr 2012 15:46:04 +0000 Subject: [PATCH 38/54] Added the two packages with fixed memory leaks, this also covers the geninfo leak. --- Installation/changes.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Installation/changes.html b/Installation/changes.html index 02f0bc7250d..bfd5047e00c 100644 --- a/Installation/changes.html +++ b/Installation/changes.html @@ -108,6 +108,16 @@ David A. Wheeler's 'SLOCCount'
, restricted to the include/CGAL/
  • Minor bugfix.
+ +

Surface Mesh Parameterization

+
    +
  • Fixed a memory leak.
  • +
+ +

2D Arrangement

+
    +
  • Fixed several memory leaks.
  • +

Release 4.0.1

From f7e9319d4cee6a5216f678b14977d45300fed172 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 24 Apr 2012 16:00:09 +0000 Subject: [PATCH 39/54] Move Philip's additions to the section about 4.0.1 --- Installation/changes.html | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Installation/changes.html b/Installation/changes.html index 0f8b011f391..8b6a253da3f 100644 --- a/Installation/changes.html +++ b/Installation/changes.html @@ -109,17 +109,6 @@ David A. Wheeler's 'SLOCCount', restricted to the include/CGAL/
  • Minor bugfix.
  • -

    Surface Mesh Parameterization

    -
      -
    • Fixed a memory leak.
    • -
    - -

    2D Arrangement

    -
      -
    • Fixed several memory leaks.
    • -
    - -

    Release 4.0.1

    @@ -160,6 +149,18 @@ since CGAL-4.0:

    2D Boolean Operations on Nef Polygons, 3D Boolean Operations on Nef Polyhedra, Convex Decomposition of Polyhedra, and 3D Minkowski Sum of Polyhedra. + +

    Surface Mesh Parameterization

    +
      +
    • Fixed a memory leak.
    • +
    + +

    2D Arrangement

    +
      +
    • Fixed several memory leaks.
    • +
    +
    +

    Release 4.0

    From 05864a04d36ae2ee293dcfd05d0363f48078d82d Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 25 Apr 2012 11:48:29 +0000 Subject: [PATCH 40/54] Trivially add compatibility with Boost Meta-Programming Library (MPL) Boost MPL "Metafunction" concept just requires the nested type named "type". --- Kernel_23/include/CGAL/Kernel_traits.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Kernel_23/include/CGAL/Kernel_traits.h b/Kernel_23/include/CGAL/Kernel_traits.h index 065b32dd94a..2ab73d5a12a 100644 --- a/Kernel_23/include/CGAL/Kernel_traits.h +++ b/Kernel_23/include/CGAL/Kernel_traits.h @@ -31,6 +31,7 @@ template struct Kernel_traits { typedef typename T::R Kernel; + typedef Kernel type; }; } // end namespace CGAL From 3268028b2b6b346aea3b8136dab8ad06f85dda87 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 1 May 2012 08:39:22 +0000 Subject: [PATCH 41/54] fix whitespace --- .../doc_tex/Surface_reconstruction_points_3/PkgDescription.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3/PkgDescription.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3/PkgDescription.tex index 08859fd7c30..d2a19d5f902 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3/PkgDescription.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3/PkgDescription.tex @@ -2,7 +2,7 @@ \ccPkgHowToCiteCgal{cgal:asg-srps-12} \ccPkgSummary{ This \cgal\ package implements a surface reconstruction method: Poisson Surface Reconstruction. It takes as input a set of points with oriented normals and computes an implicit function. The \cgal\ surface mesh generator can then be used to extract an iso-surface from this function. } % -\ccPkgDependsOn{\ccThirdPartyEigen or \ccThirdPartyTaucs} +\ccPkgDependsOn{\ccThirdPartyEigen\ or \ccThirdPartyTaucs} \ccPkgIntroducedInCGAL{3.5} \ccPkgLicense{\ccLicenseGPL} \ccPkgDemo{Surface Reconstruction}{surface_reconstruction_points_3.zip} From 8ea761f6e065859ce4a91b977bd3b02a02557676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 1 May 2012 10:45:49 +0000 Subject: [PATCH 42/54] example use eigen by default instead of Taucs --- .../CMakeLists.txt | 27 +++------- .../poisson_reconstruction.cpp | 50 ++++++++++++------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/CMakeLists.txt b/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/CMakeLists.txt index c52d576622a..2ed2390944e 100644 --- a/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/CMakeLists.txt +++ b/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/CMakeLists.txt @@ -55,35 +55,24 @@ if ( CGAL_FOUND ) find_package(Eigen3 3.0.91) #(requires 3.1.0-alpha1 or greater) - if (NOT EIGEN3_FOUND) - find_package(TAUCS) - if(TAUCS_FOUND) - include( ${TAUCS_USE_FILE} ) - endif(TAUCS_FOUND) - else() + if (EIGEN3_FOUND) include( ${EIGEN3_USE_FILE} ) endif() + find_package(TAUCS) + if(TAUCS_FOUND) + include( ${TAUCS_USE_FILE} ) + endif(TAUCS_FOUND) + if (EIGEN3_FOUND OR TAUCS_FOUND) # Executables that require Eigen 3 or TAUCS create_single_source_cgal_program( "poisson_reconstruction_example.cpp" ) + create_single_source_cgal_program( "poisson_reconstruction.cpp" ) else() - message(STATUS "NOTICE: Example poisson_reconstruction_example.cpp needs Eigen 3.1 (or greater) or the TAUCS library and will not be compiled.") + message(STATUS "NOTICE: The examples needs Eigen 3.1 (or greater) or the TAUCS library and will not be compiled.") endif() - if (EIGEN3_FOUND) - # Link with BLAS, LAPACK and TAUCS (optional) - find_package(TAUCS) - endif() - if(TAUCS_FOUND) - include( ${TAUCS_USE_FILE} ) - # Executables that require TAUCS - create_single_source_cgal_program( "poisson_reconstruction.cpp" ) - else(TAUCS_FOUND) - message(STATUS "NOTICE: Some of the executables in this directory need the TAUCS library and will not be compiled.") - endif(TAUCS_FOUND) - else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") diff --git a/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/poisson_reconstruction.cpp b/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/poisson_reconstruction.cpp index c9c9decd1e8..4e185deeacc 100644 --- a/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/poisson_reconstruction.cpp +++ b/Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/poisson_reconstruction.cpp @@ -25,8 +25,9 @@ #include #include #include +#ifdef CGAL_TAUCS_ENABLED #include -//#include +#endif #include "compute_normal.h" @@ -92,7 +93,10 @@ int main(int argc, char * argv[]) std::cerr << "Options:\n"; std::cerr << " -sm_radius Radius upper bound (default=100 * average spacing)\n"; std::cerr << " -sm_distance Distance upper bound (default=0.25 * average spacing)\n"; - // std::cerr << " -solver taucs|mkl Sparse linear solver (default=TAUCS)\n"; + #if defined(CGAL_EIGEN3_ENABLED) && defined(CGAL_TAUCS_ENABLED) + std::cerr << " -solver eigen|taucs Sparse linear solver (default=eigen)\n"; + #endif + return EXIT_FAILURE; } @@ -100,7 +104,15 @@ int main(int argc, char * argv[]) FT sm_angle = 20.0; // Min triangle angle (degrees). FT sm_radius = 100; // Max triangle size w.r.t. point set average spacing. FT sm_distance = 0.25; // Approximation error w.r.t. point set average spacing. - std::string solver_name = "taucs"; // Sparse linear solver name. + #ifdef CGAL_EIGEN3_ENABLED + std::string solver_name = "eigen"; // Sparse linear solver name. + #else + #ifdef CGAL_TAUCS_ENABLED + std::string solver_name = "taucs"; // Sparse linear solver name. + #else + std::string solver_name = "no_solver_available"; + #endif + #endif // decode parameters std::string input_filename = argv[1]; @@ -217,6 +229,7 @@ int main(int argc, char * argv[]) points.begin(), points.end(), CGAL::make_normal_of_point_with_normal_pmap(points.begin())); + #ifdef CGAL_TAUCS_ENABLED if (solver_name == "taucs") { std::cerr << "Use TAUCS out-of-core Multifrontal Supernodal Cholesky Factorization\n"; @@ -242,29 +255,32 @@ int main(int argc, char * argv[]) return EXIT_FAILURE; } } - /* - else if (solver_name == "mkl") + else + #endif + #ifdef CGAL_EIGEN3_ENABLED { - std::cerr << "Use MKL Pardiso\n"; - - // Creates sparse linear solver: MKL Pardiso - //CGAL::MKL_symmetric_solver_traits solver; - CGAL::MKL_symmetric_solver_traits solver; - - // Computes the Poisson indicator function f() - // at each vertex of the triangulation. - if ( ! function.compute_implicit_function(solver) ) + if (solver_name == "eigen") { - std::cerr << "Error: cannot compute implicit function" << std::endl; + std::cerr << "Use Eigen 3\n"; + if ( ! function.compute_implicit_function() ) + { + std::cerr << "Error: cannot compute implicit function" << std::endl; + return EXIT_FAILURE; + } + } + else + { + std::cerr << "Error: invalid solver " << solver_name << "\n"; return EXIT_FAILURE; } } - */ - else + #else { std::cerr << "Error: invalid solver " << solver_name << "\n"; return EXIT_FAILURE; } + #endif + // Prints status std::cerr << "Total implicit function (triangulation+refinement+solver): " << task_timer.time() << " seconds\n"; From a1a1a75441cfb109e50e69e145414cad2ae137c4 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 1 May 2012 12:07:40 +0000 Subject: [PATCH 43/54] Remove a \bf --- .../Poisson_reconstruction_function.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex index 8d135f4d2f8..c3cdfda0a12 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex @@ -108,7 +108,7 @@ Creates a Poisson implicit function from the [first, beyond) range of points. \ccCommentHeading{Template Parameters} \\ \ccc{InputIterator}: iterator over input points. \ccc{PointPMap}: is a model of \ccc{boost::ReadablePropertyMap} with a \ccc{value_type} = \ccc{Point_3}. It can be omitted if \ccc{InputIterator} \ccc{value_type} is convertible to \ccc{Point_3}. \ccc{NormalPMap}: is a model of \ccc{boost::ReadablePropertyMap} with a \ccc{value_type} = \ccc{Vector_3}. \ccCommentHeading{Parameters} \\ -\ccc{first}: iterator over the first input point. \ccc{beyond}: past-the-end iterator over the input points. \ccc{point_pmap}: property map to access the position of an input point. \ccc{normal_pmap}: property map to access the {\bf oriented} normal of an input point. +\ccc{first}: iterator over the first input point. \ccc{beyond}: past-the-end iterator over the input points. \ccc{point_pmap}: property map to access the position of an input point. \ccc{normal_pmap}: property map to access the oriented normal of an input point. } \ccGlue From a521599052da74a0f81b9813f235dfa5350319f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 2 May 2012 10:22:28 +0000 Subject: [PATCH 44/54] sort 2D intersection primitive lexicographically (like I done in 3D) --- .../doc_tex/Kernel_23_ref/intersection.tex | 185 +++++++++--------- 1 file changed, 93 insertions(+), 92 deletions(-) diff --git a/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex b/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex index 8cd6320dbdd..4a79aca670e 100644 --- a/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex +++ b/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex @@ -37,27 +37,41 @@ following: \hline type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ \hline +\ccStyle{Iso_rectangle_2} & \ccStyle{Iso_rectangle_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Iso_rectangle_2} + \vspace{1 mm}} \\ +\hline +\ccStyle{Iso_rectangle_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \vspace{1 mm}} \\ +\hline +\ccStyle{Iso_rectangle_2} & \ccStyle{Ray_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \vspace{1 mm}} \\ +\hline +\ccStyle{Iso_rectangle_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \vspace{1 mm}} \\ +\hline \ccStyle{Line_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Line_2} \vspace{1 mm}} \\ \hline -\ccStyle{Segment_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Point_2} - \\ \ccStyle{Segment_2} - \vspace{1 mm}} \\ -\hline -\ccStyle{Segment_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Point_2} - \\ \ccStyle{Segment_2} - \vspace{1 mm}} \\ -\hline -\ccStyle{Ray_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} +\ccStyle{Line_2} & \ccStyle{Ray_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Ray_2} \vspace{1 mm}} \\ \hline -\ccStyle{Ray_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} +\ccStyle{Line_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \vspace{1 mm}} \\ +\hline +\ccStyle{Line_2} & \ccStyle{Triangle_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Segment_2} \vspace{1 mm}} \\ @@ -68,17 +82,22 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ \\ \ccStyle{Ray_2} \vspace{1 mm}} \\ \hline -\ccStyle{Triangle_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} +\ccStyle{Ray_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Segment_2} \vspace{1 mm}} \\ \hline -\ccStyle{Triangle_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} +\ccStyle{Ray_2} & \ccStyle{Triangle_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Segment_2} \vspace{1 mm}} \\ \hline -\ccStyle{Triangle_2} & \ccStyle{Ray_2} & \parbox{4 cm}{\vspace{1 mm} +\ccStyle{Segment_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \vspace{1 mm}} \\ +\hline +\ccStyle{Segment_2} & \ccStyle{Triangle_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Segment_2} \vspace{1 mm}} \\ @@ -90,25 +109,6 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ \\ \ccStyle{std::vector} \vspace{1 mm}} \\ \hline -\ccStyle{Iso_rectangle_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Point_2} - \\ \ccStyle{Segment_2} - \vspace{1 mm}} \\ -\hline -\ccStyle{Iso_rectangle_2} & \ccStyle{Segment_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Point_2} - \\ \ccStyle{Segment_2} - \vspace{1 mm}} \\ -\hline -\ccStyle{Iso_rectangle_2} & \ccStyle{Ray_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Point_2} - \\ \ccStyle{Segment_2} - \vspace{1 mm}} \\ -\hline -\ccStyle{Iso_rectangle_2} & \ccStyle{Iso_rectangle_2} & \parbox{4 cm}{\vspace{1 mm} - \ccStyle{Iso_rectangle_2} - \vspace{1 mm}} \\ -\hline {\ccStyle{Line_3}} & {\ccStyle{Line_3}} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_3} \\ \ccStyle{Line_3} @@ -209,6 +209,38 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ type B return type + + Iso_rectangle_2 + Iso_rectangle_2 + + +
    Iso_rectangle_2
    + + + + Iso_rectangle_2 + Line_2 + + + +
    Point_2
    Segment_2
    + + + Iso_rectangle_2 + Ray_2 + + + +
    Point_2
    Segment_2
    + + + Iso_rectangle_2 + Segment_2 + + + +
    Point_2
    Segment_2
    + Line_2 Line_2 @@ -218,37 +250,29 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ - Segment_2 Line_2 - - - -
    Point_2
    Segment_2
    - - - Segment_2 - Segment_2 - - - -
    Point_2
    Segment_2
    - - Ray_2 - Line_2
    Point_2
    Ray_2
    - Ray_2 + Line_2 Segment_2
    Point_2
    Segment_2
    + + Line_2 + Triangle_2 + + + +
    Point_2
    Segment_2
    + Ray_2 Ray_2 @@ -259,15 +283,7 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ - Triangle_2 - Line_2 - - - -
    Point_2
    Segment_2
    - - - Triangle_2 + Ray_2 Segment_2 @@ -275,8 +291,24 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\
    Point_2
    - Triangle_2 Ray_2 + Triangle_2 + + + +
    Point_2
    Segment_2
    + + + Segment_2 + Segment_2 + + + +
    Point_2
    Segment_2
    + + + Segment_2 + Triangle_2 @@ -292,37 +324,6 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\
    Point_2
    Segment_2
    std::vector<Point_2>
    - - Iso_rectangle_2 - Line_2 - - - -
    Point_2
    Segment_2
    - - - Iso_rectangle_2 - Segment_2 - - - -
    Point_2
    Segment_2
    - - - Iso_rectangle_2 - Ray_2 - - - -
    Point_2
    Segment_2
    - - - Iso_rectangle_2 - Iso_rectangle_2 - - -
    Iso_rectangle_2
    - Line_3 Line_3 From aad2dfdde080b43a3c5de880ea75c0c26577bf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 2 May 2012 10:27:45 +0000 Subject: [PATCH 45/54] doc bug fix: In the doc page of Intersect_2, intersection for Iso_rectangle_2 and Triangle_2 is documented while in the doc page of intersection, it is not (and all is implemented). --- .../doc_tex/Kernel_23_ref/intersection.tex | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex b/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex index 4a79aca670e..0e6ddab751e 100644 --- a/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex +++ b/Kernel_23/doc_tex/Kernel_23_ref/intersection.tex @@ -56,6 +56,13 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ \\ \ccStyle{Segment_2} \vspace{1 mm}} \\ \hline +\ccStyle{Iso_rectangle_2} & \ccStyle{Triangle_2} & \parbox{4 cm}{\vspace{1 mm} + \ccStyle{Point_2} + \\ \ccStyle{Segment_2} + \\ \ccStyle{Triangle_2} + \\ \ccStyle{std::vector} + \vspace{1 mm}} \\ +\hline \ccStyle{Line_2} & \ccStyle{Line_2} & \parbox{4 cm}{\vspace{1 mm} \ccStyle{Point_2} \\ \ccStyle{Line_2} @@ -241,6 +248,16 @@ type A & type B & \parbox{4 cm}{\vspace{1 mm}{return type}} \\ Segment_2 + + Iso_rectangle_2 + Triangle_2 + + + + + +
    Point_2
    Segment_2
    Triangle_2
    std::vector<Point_2>
    + Line_2 Line_2 From 559ac7992a9e230b731b163acf0077a5a7514f4c Mon Sep 17 00:00:00 2001 From: Guillaume Damiand Date: Thu, 3 May 2012 19:15:06 +0000 Subject: [PATCH 46/54] Bugfix: Remove an undocumented constructor of Cell_attribute_with_point class which involves a conflict if an user uses Point as Info template argument. --- Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h index abb7ca90938..52bccaf3fc1 100644 --- a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h +++ b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h @@ -85,10 +85,6 @@ namespace CGAL { Cell_attribute_with_point(const Point& apoint) : Base2(apoint) {} - /// Contructor with an attribute in parameter. - Cell_attribute_with_point(const Info& ainfo) : Base1(ainfo) - {} - /// Contructor with a point and an attribute in parameters. Cell_attribute_with_point(const Point& apoint, const Info& ainfo) : Base1(ainfo), From 12ab866ee365b640a13cb3e5263a48edaa820251 Mon Sep 17 00:00:00 2001 From: Guillaume Damiand Date: Thu, 3 May 2012 20:09:19 +0000 Subject: [PATCH 47/54] Start to replace functor specialized by if to compare the two versions. --- .../include/CGAL/Combinatorial_map.h | 148 +++++++++++++++++- .../CGAL/Combinatorial_map_constructors.h | 54 ++++--- .../CGAL/Combinatorial_map_operations.h | 87 +++++----- Combinatorial_map/include/CGAL/Dart.h | 6 - .../internal/Combinatorial_map_functors.h | 115 +------------- 5 files changed, 219 insertions(+), 191 deletions(-) diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map.h b/Combinatorial_map/include/CGAL/Combinatorial_map.h index 7e78a4dcb71..286b53f6c33 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map.h @@ -834,6 +834,38 @@ namespace CGAL { (mattribute_containers); } + /** Double link a dart with beta 0 to a second dart. + * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked + * with \em adart1. Attributes are not updated, thus we can obtain + * a non-valid map with darts belonging to a same orbit and having + * different attributes. + * @param adart1 a first dart. + * @param adart2 a second dart. + */ + void basic_link_beta_0(Dart_handle adart1, Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); + CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); + adart1->basic_link_beta(adart2, 0); + adart2->basic_link_beta(adart1, 1); + } + + /** Double link a dart with beta 0 to a second dart. + * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked + * with \em adart1. Attributes are not updated, thus we can obtain + * a non-valid map with darts belonging to a same orbit and having + * different attributes. + * @param adart1 a first dart. + * @param adart2 a second dart. + */ + void basic_link_beta_1(Dart_handle adart1, Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); + CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); + adart1->basic_link_beta(adart2, 1); + adart2->basic_link_beta(adart1, 0); + } + /** Double link a dart with beta i to a second dart, when i>=2. * \em adart1 is i-linked to \em adart2 and \em adart2 is i-linked * with \em adart1. Attributes are not updated, thus we can obtain @@ -843,7 +875,8 @@ namespace CGAL { * @param adart2 a second dart. * @param i the dimension of the beta */ - void basic_link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) + void basic_link_beta_for_involution(Dart_handle adart1, Dart_handle adart2, + unsigned int i) { CGAL_assertion( i>=2 && i<=dimension ); CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); @@ -862,7 +895,17 @@ namespace CGAL { */ template void basic_link_beta(Dart_handle adart1, Dart_handle adart2) - { internal::basic_link_beta_functor::run(*this,adart1,adart2); } + { + if ( i==0 ) basic_link_beta_0(adart1, adart2); + else if ( i==1 ) basic_link_beta_1(adart1, adart2); + else basic_link_beta_for_involution(adart1, adart2, i); + } + void basic_link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) + { + if ( i==0 ) basic_link_beta_0(adart1, adart2); + else if ( i==1 ) basic_link_beta_1(adart1, adart2); + else basic_link_beta_for_involution(adart1, adart2, i); + } /** Double unlink a dart with beta0. * beta0(\em adart) is 1-unlinked and \em adart is 0-unlinked. @@ -873,7 +916,45 @@ namespace CGAL { */ template void unlink_beta(Dart_handle adart) - { internal::unlink_beta_functor::run(*this,adart); } + { + if ( i==0 ) unlink_beta_0(adart); + else if ( i==1 ) unlink_beta_1(adart); + else unlink_beta_for_involution(adart, i); + } + void unlink_beta(Dart_handle adart, unsigned int i) + { + if ( i==0 ) unlink_beta_0(adart); + else if ( i==1 ) unlink_beta_1(adart); + else unlink_beta_for_involution(adart, i); + } + + /** Double unlink a dart with beta 0. + * beta0(\em adart) is 1-unlinked and \em adart is 0-unlinked. + * The attributes are not updated, thus we can obtain a non-valid map + * with darts belonging to different orbits and having the same + * attributes. + * @param adart a dart. + */ + void unlink_beta_0(Dart_handle adart) + { + CGAL_assertion(adart != NULL && !adart->is_free(0)); + adart->beta(0)->unlink_beta(1); + adart->unlink_beta(0); + } + + /** Double unlink a dart with beta 1. + * beta1(\em adart) is 0-unlinked and \em adart is 1-unlinked. + * The attributes are not updated, thus we can obtain a non-valid map + * with darts belonging to different orbits and having the same + * attributes. + * @param adart a dart. + */ + void unlink_beta_1(Dart_handle adart) + { + CGAL_assertion(adart != NULL && !adart->is_free(1)); + adart->beta(1)->unlink_beta(0); + adart->unlink_beta(1); + } /** Double unlink a dart with beta i, for i>=2. * betai(\em adart) is i-unlinked and \em adart is i-unlinked. @@ -883,7 +964,7 @@ namespace CGAL { * @param adart a dart. * @param i the dimension of the beta */ - void unlink_beta(Dart_handle adart, unsigned int i) + void unlink_beta_for_involution(Dart_handle adart, unsigned int i) { CGAL_assertion(adart!=NULL && adart!=null_dart_handle && !adart->is_free(i)); @@ -903,7 +984,57 @@ namespace CGAL { */ template void link_beta(Dart_handle adart1, Dart_handle adart2) - { internal::link_beta_functor::run(*this,adart1,adart2); } + { + if ( i==0 ) link_beta_0(adart1, adart2); + else if ( i==1 ) link_beta_1(adart1, adart2); + else link_beta_for_involution(adart1, adart2, i); + } + void link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) + { + if ( i==0 ) link_beta_0(adart1, adart2); + else if ( i==1 ) link_beta_1(adart1, adart2); + else link_beta_for_involution(adart1, adart2, i); + } + + /** Double link two darts, and update the NULL attributes. + * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked + * with \em adart1. The NULL attributes of \em adart1 are updated to + * non NULL attributes associated to \em adart2, and vice-versa. + * We can obtain a non-valid map with darts belonging to a same cell + * and having different attributes. + * @param adart1 a first dart. + * @param adart2 a second dart. + */ + void link_beta_0(Dart_handle adart1, Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); + CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); + Helper::template Foreach_enabled_attributes + >:: + run(this,adart1,adart2,0); + adart1->basic_link_beta(adart2, 0); + adart2->basic_link_beta(adart1, 1); + } + + /** Double link two darts, and update the NULL attributes. + * \em adart1 is 1-linked to \em adart2 and \em adart2 is 0-linked + * with \em adart1. The NULL attributes of \em adart1 are updated to + * non NULL attributes associated to \em adart2, and vice-versa. + * We can obtain a non-valid map with darts belonging to a same cell + * and having different attributes. + * @param adart1 a first dart. + * @param adart2 a second dart. + */ + void link_beta_1(Dart_handle adart1, Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); + CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); + Helper::template Foreach_enabled_attributes + >:: + run(this,adart1,adart2,1); + adart1->basic_link_beta(adart2, 1); + adart2->basic_link_beta(adart1, 0); + } /** Double link two darts, and update the NULL attributes. * \em adart1 is i-linked to \em adart2 and \em adart2 is i^-1-linked @@ -916,16 +1047,17 @@ namespace CGAL { * @param i the dimension of the beta. * @pre 2<=i<=dimension */ - void link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) + void link_beta_for_involution(Dart_handle adart1, Dart_handle adart2, + unsigned int i) { CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); CGAL_assertion( 2<=i && i<=dimension ); - adart1->basic_link_beta(adart2, i); - adart2->basic_link_beta(adart1, i); Helper::template Foreach_enabled_attributes >:: run(this,adart1,adart2,i); + adart1->basic_link_beta(adart2, i); + adart2->basic_link_beta(adart1, i); } /** Double link a dart with betai to a second dart. diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h b/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h index b78836b8468..d4a33bb6b2b 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h @@ -36,7 +36,7 @@ namespace CGAL { { typename Map::Dart_handle d1 = amap.create_dart(); typename Map::Dart_handle d2 = amap.create_dart(); - amap.template basic_link_beta<2>(d1, d2); + amap.template basic_link_beta_for_involution(d1, d2, 2); return d1; } @@ -56,11 +56,11 @@ namespace CGAL { for ( unsigned int nb=1; nb(prev, cur); + amap.basic_link_beta_1(prev, cur); prev=cur; } - amap.template basic_link_beta<1>(prev, start); + amap.basic_link_beta_1(prev, start); return start; } @@ -80,12 +80,12 @@ namespace CGAL { typename Map::Dart_handle d3, typename Map::Dart_handle d4) { - amap.basic_link_beta(d1, d2, 2); - amap.basic_link_beta(d3, d2->beta(0), 2); - amap.basic_link_beta(d1->beta(1), d3->beta(0), 2); - amap.basic_link_beta(d4, d2->beta(1), 2); - amap.basic_link_beta(d4->beta(0), d3->beta(1), 2); - amap.basic_link_beta(d4->beta(1), d1->beta(0), 2); + amap.basic_link_beta_for_involution(d1, d2, 2); + amap.basic_link_beta_for_involution(d3, d2->beta(0), 2); + amap.basic_link_beta_for_involution(d1->beta(1), d3->beta(0), 2); + amap.basic_link_beta_for_involution(d4, d2->beta(1), 2); + amap.basic_link_beta_for_involution(d4->beta(0), d3->beta(1), 2); + amap.basic_link_beta_for_involution(d4->beta(1), d1->beta(0), 2); return d1; } @@ -125,21 +125,33 @@ namespace CGAL { typename Map::Dart_handle d5, typename Map::Dart_handle d6) { - amap.basic_link_beta(d1, d4->beta(1)->beta(1), 2); - amap.basic_link_beta(d1->beta(1), d6->beta(0) , 2); - amap.basic_link_beta(d1->beta(1)->beta(1), d2 , 2); - amap.basic_link_beta(d1->beta(0), d5 , 2); + amap.basic_link_beta_for_involution(d1, + d4->beta(1)->beta(1), 2); + amap.basic_link_beta_for_involution(d1->beta(1), + d6->beta(0) , 2); + amap.basic_link_beta_for_involution(d1->beta(1)->beta(1), + d2 , 2); + amap.basic_link_beta_for_involution(d1->beta(0), + d5 , 2); - amap.basic_link_beta(d3, d2->beta(1)->beta(1), 2); - amap.basic_link_beta(d3->beta(1), d6->beta(1) , 2); - amap.basic_link_beta(d3->beta(1)->beta(1), d4 , 2); - amap.basic_link_beta(d3->beta(0), d5->beta(1)->beta(1), 2); + amap.basic_link_beta_for_involution(d3, + d2->beta(1)->beta(1), 2); + amap.basic_link_beta_for_involution(d3->beta(1), + d6->beta(1) , 2); + amap.basic_link_beta_for_involution(d3->beta(1)->beta(1), + d4 , 2); + amap.basic_link_beta_for_involution(d3->beta(0), + d5->beta(1)->beta(1), 2); - amap.basic_link_beta(d6, d4->beta(1) , 2); - amap.basic_link_beta(d6->beta(1)->beta(1), d2->beta(1) , 2); + amap.basic_link_beta_for_involution(d6, + d4->beta(1) , 2); + amap.basic_link_beta_for_involution(d6->beta(1)->beta(1), + d2->beta(1) , 2); - amap.basic_link_beta(d5->beta(0), d4->beta(0) , 2); - amap.basic_link_beta(d5->beta(1), d2->beta(0) , 2); + amap.basic_link_beta_for_involution(d5->beta(0), + d4->beta(0) , 2); + amap.basic_link_beta_for_involution(d5->beta(1), + d2->beta(0) , 2); return d1; } diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h index 385e73fea34..6457c94fa49 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h @@ -84,22 +84,22 @@ namespace CGAL { if (!cur->is_free(0)) { n1 = amap.create_dart(); - amap.template link_beta<0>(cur, n1); + amap.link_beta_0(cur, n1); } else n1 = NULL; if (!cur->is_free(1)) { n2 = amap.create_dart(); - amap.template link_beta<1>(cur, n2); + amap.link_beta_1(cur, n2); } else n2 = NULL; if (n1 != NULL && n2 != NULL) - amap.template link_beta<0>(n1, n2); + amap.link_beta_0(n1, n2); if (n1 != NULL && prev != NULL) - amap.link_beta(prev, n1, 2); + amap.link_beta_for_involution(prev, n1, 2); for (unsigned int dim=3; dim<=Map::dimension; ++dim) { @@ -110,24 +110,24 @@ namespace CGAL { if (n1!=NULL) { nn1=amap.create_dart(); - amap.template link_beta<1>(cur->beta(dim), nn1); - amap.link_beta(n1, nn1, dim); + amap.link_beta_1(cur->beta(dim), nn1); + amap.link_beta_for_involution(n1, nn1, dim); } else nn1=NULL; if (n2!=NULL) { nn2=amap.create_dart(); - amap.template link_beta<0>(cur->beta(dim), nn2); - amap.link_beta(n2, nn2, dim); + amap.link_beta_0(cur->beta(dim), nn2); + amap.link_beta_for_involution(n2, nn2, dim); } else nn2=NULL; if (nn1 != NULL && nn2 != NULL) - amap.template basic_link_beta<1>(nn1, nn2); + amap.basic_link_beta_1(nn1, nn2); if (nn1 != NULL && prev != NULL) - amap.link_beta(nn1, prev->beta(dim), 2); + amap.link_beta_for_involution(nn1, prev->beta(dim), 2); amap.mark(cur->beta(dim), treated); tounmark.push(cur->beta(dim)); @@ -135,9 +135,9 @@ namespace CGAL { else { if ( n1!=NULL ) - amap.link_beta(n1, cur->beta(dim)->beta(1), dim); + amap.link_beta_for_involution(n1, cur->beta(dim)->beta(1), dim); if ( n2!=NULL ) - amap.link_beta(n2, cur->beta(dim)->beta(0), dim); + amap.link_beta_for_involution(n2, cur->beta(dim)->beta(0), dim); } } } @@ -147,12 +147,12 @@ namespace CGAL { if (n2 != NULL) { - amap.link_beta(first->beta(0), n2, 2); + amap.link_beta_for_involution(first->beta(0), n2, 2); for (unsigned int dim=3; dim<=Map::dimension; ++dim) { if ( !adart->is_free(dim) ) { - amap.link_beta(first->beta(0)->beta(dim), n2->beta(dim), 2); + amap.link_beta_for_involution(first->beta(0)->beta(dim), n2->beta(dim), 2); } } } @@ -375,7 +375,7 @@ namespace CGAL { if ( !(*it)->is_free(Map::dimension) ) { todegroup.push(Dart_pair(*it, (*it)->beta(Map::dimension))); - amap.unlink_beta(*it,Map::dimension); + amap.unlink_beta_for_involution(*it,Map::dimension); } } @@ -691,16 +691,17 @@ namespace CGAL { amap.template basic_link_beta<1>(d1,d2); } - amap.link_beta(d1, d2, 2); + amap.link_beta_for_involution(d1, d2, 2); for ( unsigned int dim=3; dim<=Map::dimension; ++dim) { if ( !it1->is_free(dim) && amap.is_marked(it1->beta(dim), treated) ) { - amap.basic_link_beta(it1->beta(dim)->beta_inv(s1), d1, dim); - amap.basic_link_beta(it1->beta(dim)->beta_inv(s1)->beta(2), - d2, dim); + amap.basic_link_beta_for_involution(it1->beta(dim)->beta_inv(s1), d1, + dim); + amap.basic_link_beta_for_involution + (it1->beta(dim)->beta_inv(s1)->beta(2), d2, dim); } } @@ -780,36 +781,37 @@ namespace CGAL { if ( !it1->is_free(s1) ) { - if ( s1==0 ) amap.template basic_link_beta<1>(it1->beta(0), d2); - else amap.template link_beta<0>(it1->beta(1), d2); + if ( s1==0 ) amap.basic_link_beta_1(it1->beta(0), d2); + else amap.link_beta_0(it1->beta(1), d2); } if ( !it2->is_free(s1) ) { - if ( s1==0 ) amap.template basic_link_beta<1>(it2->beta(0), d1); - else amap.template link_beta<0>(it2->beta(1), d1); + if ( s1==0 ) amap.basic_link_beta_1(it2->beta(0), d1); + else amap.link_beta_0(it2->beta(1), d1); } if ( s1==0 ) { - amap.template link_beta<0>(it1, d1); - amap.template link_beta<0>(it2, d2); + amap.link_beta_0(it1, d1); + amap.link_beta_0(it2, d2); } else { - amap.template basic_link_beta<1>(it1, d1); - amap.template basic_link_beta<1>(it2, d2); + amap.basic_link_beta_1(it1, d1); + amap.basic_link_beta_1(it2, d2); } - amap.link_beta(d2, d1, 2); + amap.link_beta_for_involution(d2, d1, 2); for ( unsigned int dim=3; dim<=CMap::dimension; ++dim) { if ( !it1->is_free(dim) && amap.is_marked(it1->beta(dim), treated) ) { - amap.basic_link_beta(it1->beta(dim)->beta_inv(s1), d1, dim); - amap.basic_link_beta(it1->beta(dim)->beta_inv(s1)->beta(2), - d2, dim); + amap.basic_link_beta_for_involution + (it1->beta(dim)->beta_inv(s1), d1, dim); + amap.basic_link_beta_for_involution + (it1->beta(dim)->beta_inv(s1)->beta(2), d2, dim); } } @@ -877,7 +879,7 @@ namespace CGAL { if (withBeta3) { dd = amap.create_dart(); - amap.basic_link_beta(d, dd, 3); + amap.basic_link_beta_for_involution(d, dd, 3); } if (prec != NULL) @@ -888,9 +890,9 @@ namespace CGAL { else first = d; if (!(*it)->is_free(2)) - amap.link_beta((*it)->beta(2), dd, 2); + amap.link_beta_for_involution((*it)->beta(2), dd, 2); - amap.link_beta(*it, d, 2); + amap.link_beta_for_involution(*it, d, 2); prec = d; } @@ -913,19 +915,19 @@ namespace CGAL { it.cont(); ++it ) { d = amap.create_dart(); - amap.link_beta(it->beta(2),d,dim); + amap.link_beta_for_involution(it->beta(2),d,dim); if ( withBeta3 ) { dd = amap.create_dart(); - amap.link_beta(it->beta(2)->beta(3),dd,dim); - amap.basic_link_beta(d, dd, 3); + amap.link_beta_for_involution(it->beta(2)->beta(3),dd,dim); + amap.basic_link_beta_for_involution(d, dd, 3); } if ( prec!=NULL ) { - amap.template link_beta<0>(prec,d); + amap.link_beta_0(prec,d); if ( withBeta3 ) { - amap.template link_beta<1>(prec->beta(3),dd); + amap.link_beta_1(prec->beta(3),dd); } } else first2 = prec; @@ -936,11 +938,12 @@ namespace CGAL { { if ( !it->is_free(dim2) && it->beta(dim2)->is_free(dim) ) - amap.basic_link_beta(it->beta(dim2)->beta(dim), d, dim2); + amap.basic_link_beta_for_involution(it->beta(dim2)->beta(dim), + d, dim2); if ( withBeta3 && !it->beta(3)->is_free(dim2) && it->beta(3)->beta(dim2)->is_free(dim) ) - amap.basic_link_beta(it->beta(3)->beta(dim2)->beta(dim), - dd, dim2); + amap.basic_link_beta_for_involution + (it->beta(3)->beta(dim2)->beta(dim), dd, dim2); } } prec = d; diff --git a/Combinatorial_map/include/CGAL/Dart.h b/Combinatorial_map/include/CGAL/Dart.h index cba87c1d3b3..6deaac48151 100644 --- a/Combinatorial_map/include/CGAL/Dart.h +++ b/Combinatorial_map/include/CGAL/Dart.h @@ -67,15 +67,9 @@ namespace CGAL { template friend struct Remove_cell_functor; - template - friend struct internal::basic_link_beta_functor; - template friend struct internal::link_beta_functor; - template - friend struct internal::unlink_beta_functor; - public: typedef Dart Self; typedef typename Refs::Dart_handle Dart_handle; diff --git a/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h b/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h index c9eda04918a..0330bc1604e 100644 --- a/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h +++ b/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h @@ -221,7 +221,7 @@ namespace CGAL { I1.rewind(); I2.rewind(); while ( I1.cont() ) { - amap.basic_link_beta(I1, I2, i); + amap.basic_link_beta_for_involution(I1, I2, i); ++I1; ++I2; } } @@ -485,76 +485,6 @@ namespace CGAL { } }; - /// Functor used to i-link two darts, 2<=i<=dimension. - template - struct basic_link_beta_functor{ - static void run(Map&,typename Map::Dart_handle adart1, - typename Map::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); - CGAL_static_assertion( i>=2 && i<=Map::dimension ); - adart1->basic_link_beta(adart2, i); - adart2->basic_link_beta(adart1, i); - } - }; - - /// Functor used to 0-link two darts. - template - struct basic_link_beta_functor{ - static void run(Map&,typename Map::Dart_handle adart1, - typename Map::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL ); - adart1->basic_link_beta(adart2, 0); - adart2->basic_link_beta(adart1, 1); - } - }; - - /// Functor used to 1-link two darts. - template - struct basic_link_beta_functor{ - static void run(Map& ,typename Map::Dart_handle adart1, - typename Map::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL); - adart1->basic_link_beta(adart2, 1); - adart2->basic_link_beta(adart1, 0); - } - }; - - /// Functor used to i-unlink one dart. - template - struct unlink_beta_functor{ - static void run(Map&,typename Map::Dart_handle adart) - { - CGAL_assertion(adart != NULL && !adart->is_free(i)); - CGAL_static_assertion(2<=i && i<=Map::dimension); - adart->beta(i)->unlink_beta(i); - adart->unlink_beta(i); - } - }; - - /// Functor used to 0-unlink one dart. - template - struct unlink_beta_functor{ - static void run(Map&,typename Map::Dart_handle adart) - { - CGAL_assertion(adart != NULL && !adart->is_free(0)); - adart->beta(0)->unlink_beta(1); - adart->unlink_beta(0); - } - }; - - /// Functor used to 1-unlink one dart. - template - struct unlink_beta_functor{ - static void run(Map&,typename Map::Dart_handle adart) - { - CGAL_assertion(adart != NULL && !adart->is_free(1)); - adart->beta(1)->unlink_beta(0); - adart->unlink_beta(1); - } - }; // Functor used to group one attribute of two given darts template @@ -897,49 +827,6 @@ namespace CGAL { } }; - /// Functor used to i-link two darts, 2<=i<=dimension. - template - struct link_beta_functor{ - static void run(CMap& amap,typename CMap::Dart_handle adart1, - typename CMap::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); - CGAL_static_assertion( 2<=i && i<=CMap::dimension ); - CMap::Helper::template Foreach_enabled_attributes - >::run(&amap,adart1,adart2,i); - adart1->basic_link_beta(adart2, i); - adart2->basic_link_beta(adart1, i); - } - }; - - /// Functor used to 0-link two darts. - template - struct link_beta_functor{ - static void run(Map& amap,typename Map::Dart_handle adart1, - typename Map::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL); - Map::Helper::template Foreach_enabled_attributes - >::run(&amap,adart1,adart2,0); - adart1->basic_link_beta(adart2, 0); - adart2->basic_link_beta(adart1, 1); - } - }; - - /// Functor used to 1-link two darts. - template - struct link_beta_functor{ - static void run(Map& amap,typename Map::Dart_handle adart1, - typename Map::Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL); - Map::Helper::template Foreach_enabled_attributes - >::run(&amap,adart1,adart2,1); - adart1->basic_link_beta(adart2, 1); - adart2->basic_link_beta(adart1, 0); - } - }; - // Functor used to call the On_split functor between the two given darts. template Date: Thu, 3 May 2012 20:16:58 +0000 Subject: [PATCH 48/54] Revert last commit: bad branch. --- .../include/CGAL/Combinatorial_map.h | 148 +----------------- .../CGAL/Combinatorial_map_constructors.h | 54 +++---- .../CGAL/Combinatorial_map_operations.h | 87 +++++----- Combinatorial_map/include/CGAL/Dart.h | 6 + .../internal/Combinatorial_map_functors.h | 115 +++++++++++++- 5 files changed, 191 insertions(+), 219 deletions(-) diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map.h b/Combinatorial_map/include/CGAL/Combinatorial_map.h index 286b53f6c33..7e78a4dcb71 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map.h @@ -834,38 +834,6 @@ namespace CGAL { (mattribute_containers); } - /** Double link a dart with beta 0 to a second dart. - * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked - * with \em adart1. Attributes are not updated, thus we can obtain - * a non-valid map with darts belonging to a same orbit and having - * different attributes. - * @param adart1 a first dart. - * @param adart2 a second dart. - */ - void basic_link_beta_0(Dart_handle adart1, Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); - CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); - adart1->basic_link_beta(adart2, 0); - adart2->basic_link_beta(adart1, 1); - } - - /** Double link a dart with beta 0 to a second dart. - * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked - * with \em adart1. Attributes are not updated, thus we can obtain - * a non-valid map with darts belonging to a same orbit and having - * different attributes. - * @param adart1 a first dart. - * @param adart2 a second dart. - */ - void basic_link_beta_1(Dart_handle adart1, Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); - CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); - adart1->basic_link_beta(adart2, 1); - adart2->basic_link_beta(adart1, 0); - } - /** Double link a dart with beta i to a second dart, when i>=2. * \em adart1 is i-linked to \em adart2 and \em adart2 is i-linked * with \em adart1. Attributes are not updated, thus we can obtain @@ -875,8 +843,7 @@ namespace CGAL { * @param adart2 a second dart. * @param i the dimension of the beta */ - void basic_link_beta_for_involution(Dart_handle adart1, Dart_handle adart2, - unsigned int i) + void basic_link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) { CGAL_assertion( i>=2 && i<=dimension ); CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); @@ -895,17 +862,7 @@ namespace CGAL { */ template void basic_link_beta(Dart_handle adart1, Dart_handle adart2) - { - if ( i==0 ) basic_link_beta_0(adart1, adart2); - else if ( i==1 ) basic_link_beta_1(adart1, adart2); - else basic_link_beta_for_involution(adart1, adart2, i); - } - void basic_link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) - { - if ( i==0 ) basic_link_beta_0(adart1, adart2); - else if ( i==1 ) basic_link_beta_1(adart1, adart2); - else basic_link_beta_for_involution(adart1, adart2, i); - } + { internal::basic_link_beta_functor::run(*this,adart1,adart2); } /** Double unlink a dart with beta0. * beta0(\em adart) is 1-unlinked and \em adart is 0-unlinked. @@ -916,45 +873,7 @@ namespace CGAL { */ template void unlink_beta(Dart_handle adart) - { - if ( i==0 ) unlink_beta_0(adart); - else if ( i==1 ) unlink_beta_1(adart); - else unlink_beta_for_involution(adart, i); - } - void unlink_beta(Dart_handle adart, unsigned int i) - { - if ( i==0 ) unlink_beta_0(adart); - else if ( i==1 ) unlink_beta_1(adart); - else unlink_beta_for_involution(adart, i); - } - - /** Double unlink a dart with beta 0. - * beta0(\em adart) is 1-unlinked and \em adart is 0-unlinked. - * The attributes are not updated, thus we can obtain a non-valid map - * with darts belonging to different orbits and having the same - * attributes. - * @param adart a dart. - */ - void unlink_beta_0(Dart_handle adart) - { - CGAL_assertion(adart != NULL && !adart->is_free(0)); - adart->beta(0)->unlink_beta(1); - adart->unlink_beta(0); - } - - /** Double unlink a dart with beta 1. - * beta1(\em adart) is 0-unlinked and \em adart is 1-unlinked. - * The attributes are not updated, thus we can obtain a non-valid map - * with darts belonging to different orbits and having the same - * attributes. - * @param adart a dart. - */ - void unlink_beta_1(Dart_handle adart) - { - CGAL_assertion(adart != NULL && !adart->is_free(1)); - adart->beta(1)->unlink_beta(0); - adart->unlink_beta(1); - } + { internal::unlink_beta_functor::run(*this,adart); } /** Double unlink a dart with beta i, for i>=2. * betai(\em adart) is i-unlinked and \em adart is i-unlinked. @@ -964,7 +883,7 @@ namespace CGAL { * @param adart a dart. * @param i the dimension of the beta */ - void unlink_beta_for_involution(Dart_handle adart, unsigned int i) + void unlink_beta(Dart_handle adart, unsigned int i) { CGAL_assertion(adart!=NULL && adart!=null_dart_handle && !adart->is_free(i)); @@ -984,57 +903,7 @@ namespace CGAL { */ template void link_beta(Dart_handle adart1, Dart_handle adart2) - { - if ( i==0 ) link_beta_0(adart1, adart2); - else if ( i==1 ) link_beta_1(adart1, adart2); - else link_beta_for_involution(adart1, adart2, i); - } - void link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) - { - if ( i==0 ) link_beta_0(adart1, adart2); - else if ( i==1 ) link_beta_1(adart1, adart2); - else link_beta_for_involution(adart1, adart2, i); - } - - /** Double link two darts, and update the NULL attributes. - * \em adart1 is 0-linked to \em adart2 and \em adart2 is 1-linked - * with \em adart1. The NULL attributes of \em adart1 are updated to - * non NULL attributes associated to \em adart2, and vice-versa. - * We can obtain a non-valid map with darts belonging to a same cell - * and having different attributes. - * @param adart1 a first dart. - * @param adart2 a second dart. - */ - void link_beta_0(Dart_handle adart1, Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); - CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); - Helper::template Foreach_enabled_attributes - >:: - run(this,adart1,adart2,0); - adart1->basic_link_beta(adart2, 0); - adart2->basic_link_beta(adart1, 1); - } - - /** Double link two darts, and update the NULL attributes. - * \em adart1 is 1-linked to \em adart2 and \em adart2 is 0-linked - * with \em adart1. The NULL attributes of \em adart1 are updated to - * non NULL attributes associated to \em adart2, and vice-versa. - * We can obtain a non-valid map with darts belonging to a same cell - * and having different attributes. - * @param adart1 a first dart. - * @param adart2 a second dart. - */ - void link_beta_1(Dart_handle adart1, Dart_handle adart2) - { - CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); - CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); - Helper::template Foreach_enabled_attributes - >:: - run(this,adart1,adart2,1); - adart1->basic_link_beta(adart2, 1); - adart2->basic_link_beta(adart1, 0); - } + { internal::link_beta_functor::run(*this,adart1,adart2); } /** Double link two darts, and update the NULL attributes. * \em adart1 is i-linked to \em adart2 and \em adart2 is i^-1-linked @@ -1047,17 +916,16 @@ namespace CGAL { * @param i the dimension of the beta. * @pre 2<=i<=dimension */ - void link_beta_for_involution(Dart_handle adart1, Dart_handle adart2, - unsigned int i) + void link_beta(Dart_handle adart1, Dart_handle adart2, unsigned int i) { CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); CGAL_assertion(adart1 != null_dart_handle && adart2 != null_dart_handle); CGAL_assertion( 2<=i && i<=dimension ); + adart1->basic_link_beta(adart2, i); + adart2->basic_link_beta(adart1, i); Helper::template Foreach_enabled_attributes >:: run(this,adart1,adart2,i); - adart1->basic_link_beta(adart2, i); - adart2->basic_link_beta(adart1, i); } /** Double link a dart with betai to a second dart. diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h b/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h index d4a33bb6b2b..b78836b8468 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h @@ -36,7 +36,7 @@ namespace CGAL { { typename Map::Dart_handle d1 = amap.create_dart(); typename Map::Dart_handle d2 = amap.create_dart(); - amap.template basic_link_beta_for_involution(d1, d2, 2); + amap.template basic_link_beta<2>(d1, d2); return d1; } @@ -56,11 +56,11 @@ namespace CGAL { for ( unsigned int nb=1; nb(prev, cur); prev=cur; } - amap.basic_link_beta_1(prev, start); + amap.template basic_link_beta<1>(prev, start); return start; } @@ -80,12 +80,12 @@ namespace CGAL { typename Map::Dart_handle d3, typename Map::Dart_handle d4) { - amap.basic_link_beta_for_involution(d1, d2, 2); - amap.basic_link_beta_for_involution(d3, d2->beta(0), 2); - amap.basic_link_beta_for_involution(d1->beta(1), d3->beta(0), 2); - amap.basic_link_beta_for_involution(d4, d2->beta(1), 2); - amap.basic_link_beta_for_involution(d4->beta(0), d3->beta(1), 2); - amap.basic_link_beta_for_involution(d4->beta(1), d1->beta(0), 2); + amap.basic_link_beta(d1, d2, 2); + amap.basic_link_beta(d3, d2->beta(0), 2); + amap.basic_link_beta(d1->beta(1), d3->beta(0), 2); + amap.basic_link_beta(d4, d2->beta(1), 2); + amap.basic_link_beta(d4->beta(0), d3->beta(1), 2); + amap.basic_link_beta(d4->beta(1), d1->beta(0), 2); return d1; } @@ -125,33 +125,21 @@ namespace CGAL { typename Map::Dart_handle d5, typename Map::Dart_handle d6) { - amap.basic_link_beta_for_involution(d1, - d4->beta(1)->beta(1), 2); - amap.basic_link_beta_for_involution(d1->beta(1), - d6->beta(0) , 2); - amap.basic_link_beta_for_involution(d1->beta(1)->beta(1), - d2 , 2); - amap.basic_link_beta_for_involution(d1->beta(0), - d5 , 2); + amap.basic_link_beta(d1, d4->beta(1)->beta(1), 2); + amap.basic_link_beta(d1->beta(1), d6->beta(0) , 2); + amap.basic_link_beta(d1->beta(1)->beta(1), d2 , 2); + amap.basic_link_beta(d1->beta(0), d5 , 2); - amap.basic_link_beta_for_involution(d3, - d2->beta(1)->beta(1), 2); - amap.basic_link_beta_for_involution(d3->beta(1), - d6->beta(1) , 2); - amap.basic_link_beta_for_involution(d3->beta(1)->beta(1), - d4 , 2); - amap.basic_link_beta_for_involution(d3->beta(0), - d5->beta(1)->beta(1), 2); + amap.basic_link_beta(d3, d2->beta(1)->beta(1), 2); + amap.basic_link_beta(d3->beta(1), d6->beta(1) , 2); + amap.basic_link_beta(d3->beta(1)->beta(1), d4 , 2); + amap.basic_link_beta(d3->beta(0), d5->beta(1)->beta(1), 2); - amap.basic_link_beta_for_involution(d6, - d4->beta(1) , 2); - amap.basic_link_beta_for_involution(d6->beta(1)->beta(1), - d2->beta(1) , 2); + amap.basic_link_beta(d6, d4->beta(1) , 2); + amap.basic_link_beta(d6->beta(1)->beta(1), d2->beta(1) , 2); - amap.basic_link_beta_for_involution(d5->beta(0), - d4->beta(0) , 2); - amap.basic_link_beta_for_involution(d5->beta(1), - d2->beta(0) , 2); + amap.basic_link_beta(d5->beta(0), d4->beta(0) , 2); + amap.basic_link_beta(d5->beta(1), d2->beta(0) , 2); return d1; } diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h index 6457c94fa49..385e73fea34 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h @@ -84,22 +84,22 @@ namespace CGAL { if (!cur->is_free(0)) { n1 = amap.create_dart(); - amap.link_beta_0(cur, n1); + amap.template link_beta<0>(cur, n1); } else n1 = NULL; if (!cur->is_free(1)) { n2 = amap.create_dart(); - amap.link_beta_1(cur, n2); + amap.template link_beta<1>(cur, n2); } else n2 = NULL; if (n1 != NULL && n2 != NULL) - amap.link_beta_0(n1, n2); + amap.template link_beta<0>(n1, n2); if (n1 != NULL && prev != NULL) - amap.link_beta_for_involution(prev, n1, 2); + amap.link_beta(prev, n1, 2); for (unsigned int dim=3; dim<=Map::dimension; ++dim) { @@ -110,24 +110,24 @@ namespace CGAL { if (n1!=NULL) { nn1=amap.create_dart(); - amap.link_beta_1(cur->beta(dim), nn1); - amap.link_beta_for_involution(n1, nn1, dim); + amap.template link_beta<1>(cur->beta(dim), nn1); + amap.link_beta(n1, nn1, dim); } else nn1=NULL; if (n2!=NULL) { nn2=amap.create_dart(); - amap.link_beta_0(cur->beta(dim), nn2); - amap.link_beta_for_involution(n2, nn2, dim); + amap.template link_beta<0>(cur->beta(dim), nn2); + amap.link_beta(n2, nn2, dim); } else nn2=NULL; if (nn1 != NULL && nn2 != NULL) - amap.basic_link_beta_1(nn1, nn2); + amap.template basic_link_beta<1>(nn1, nn2); if (nn1 != NULL && prev != NULL) - amap.link_beta_for_involution(nn1, prev->beta(dim), 2); + amap.link_beta(nn1, prev->beta(dim), 2); amap.mark(cur->beta(dim), treated); tounmark.push(cur->beta(dim)); @@ -135,9 +135,9 @@ namespace CGAL { else { if ( n1!=NULL ) - amap.link_beta_for_involution(n1, cur->beta(dim)->beta(1), dim); + amap.link_beta(n1, cur->beta(dim)->beta(1), dim); if ( n2!=NULL ) - amap.link_beta_for_involution(n2, cur->beta(dim)->beta(0), dim); + amap.link_beta(n2, cur->beta(dim)->beta(0), dim); } } } @@ -147,12 +147,12 @@ namespace CGAL { if (n2 != NULL) { - amap.link_beta_for_involution(first->beta(0), n2, 2); + amap.link_beta(first->beta(0), n2, 2); for (unsigned int dim=3; dim<=Map::dimension; ++dim) { if ( !adart->is_free(dim) ) { - amap.link_beta_for_involution(first->beta(0)->beta(dim), n2->beta(dim), 2); + amap.link_beta(first->beta(0)->beta(dim), n2->beta(dim), 2); } } } @@ -375,7 +375,7 @@ namespace CGAL { if ( !(*it)->is_free(Map::dimension) ) { todegroup.push(Dart_pair(*it, (*it)->beta(Map::dimension))); - amap.unlink_beta_for_involution(*it,Map::dimension); + amap.unlink_beta(*it,Map::dimension); } } @@ -691,17 +691,16 @@ namespace CGAL { amap.template basic_link_beta<1>(d1,d2); } - amap.link_beta_for_involution(d1, d2, 2); + amap.link_beta(d1, d2, 2); for ( unsigned int dim=3; dim<=Map::dimension; ++dim) { if ( !it1->is_free(dim) && amap.is_marked(it1->beta(dim), treated) ) { - amap.basic_link_beta_for_involution(it1->beta(dim)->beta_inv(s1), d1, - dim); - amap.basic_link_beta_for_involution - (it1->beta(dim)->beta_inv(s1)->beta(2), d2, dim); + amap.basic_link_beta(it1->beta(dim)->beta_inv(s1), d1, dim); + amap.basic_link_beta(it1->beta(dim)->beta_inv(s1)->beta(2), + d2, dim); } } @@ -781,37 +780,36 @@ namespace CGAL { if ( !it1->is_free(s1) ) { - if ( s1==0 ) amap.basic_link_beta_1(it1->beta(0), d2); - else amap.link_beta_0(it1->beta(1), d2); + if ( s1==0 ) amap.template basic_link_beta<1>(it1->beta(0), d2); + else amap.template link_beta<0>(it1->beta(1), d2); } if ( !it2->is_free(s1) ) { - if ( s1==0 ) amap.basic_link_beta_1(it2->beta(0), d1); - else amap.link_beta_0(it2->beta(1), d1); + if ( s1==0 ) amap.template basic_link_beta<1>(it2->beta(0), d1); + else amap.template link_beta<0>(it2->beta(1), d1); } if ( s1==0 ) { - amap.link_beta_0(it1, d1); - amap.link_beta_0(it2, d2); + amap.template link_beta<0>(it1, d1); + amap.template link_beta<0>(it2, d2); } else { - amap.basic_link_beta_1(it1, d1); - amap.basic_link_beta_1(it2, d2); + amap.template basic_link_beta<1>(it1, d1); + amap.template basic_link_beta<1>(it2, d2); } - amap.link_beta_for_involution(d2, d1, 2); + amap.link_beta(d2, d1, 2); for ( unsigned int dim=3; dim<=CMap::dimension; ++dim) { if ( !it1->is_free(dim) && amap.is_marked(it1->beta(dim), treated) ) { - amap.basic_link_beta_for_involution - (it1->beta(dim)->beta_inv(s1), d1, dim); - amap.basic_link_beta_for_involution - (it1->beta(dim)->beta_inv(s1)->beta(2), d2, dim); + amap.basic_link_beta(it1->beta(dim)->beta_inv(s1), d1, dim); + amap.basic_link_beta(it1->beta(dim)->beta_inv(s1)->beta(2), + d2, dim); } } @@ -879,7 +877,7 @@ namespace CGAL { if (withBeta3) { dd = amap.create_dart(); - amap.basic_link_beta_for_involution(d, dd, 3); + amap.basic_link_beta(d, dd, 3); } if (prec != NULL) @@ -890,9 +888,9 @@ namespace CGAL { else first = d; if (!(*it)->is_free(2)) - amap.link_beta_for_involution((*it)->beta(2), dd, 2); + amap.link_beta((*it)->beta(2), dd, 2); - amap.link_beta_for_involution(*it, d, 2); + amap.link_beta(*it, d, 2); prec = d; } @@ -915,19 +913,19 @@ namespace CGAL { it.cont(); ++it ) { d = amap.create_dart(); - amap.link_beta_for_involution(it->beta(2),d,dim); + amap.link_beta(it->beta(2),d,dim); if ( withBeta3 ) { dd = amap.create_dart(); - amap.link_beta_for_involution(it->beta(2)->beta(3),dd,dim); - amap.basic_link_beta_for_involution(d, dd, 3); + amap.link_beta(it->beta(2)->beta(3),dd,dim); + amap.basic_link_beta(d, dd, 3); } if ( prec!=NULL ) { - amap.link_beta_0(prec,d); + amap.template link_beta<0>(prec,d); if ( withBeta3 ) { - amap.link_beta_1(prec->beta(3),dd); + amap.template link_beta<1>(prec->beta(3),dd); } } else first2 = prec; @@ -938,12 +936,11 @@ namespace CGAL { { if ( !it->is_free(dim2) && it->beta(dim2)->is_free(dim) ) - amap.basic_link_beta_for_involution(it->beta(dim2)->beta(dim), - d, dim2); + amap.basic_link_beta(it->beta(dim2)->beta(dim), d, dim2); if ( withBeta3 && !it->beta(3)->is_free(dim2) && it->beta(3)->beta(dim2)->is_free(dim) ) - amap.basic_link_beta_for_involution - (it->beta(3)->beta(dim2)->beta(dim), dd, dim2); + amap.basic_link_beta(it->beta(3)->beta(dim2)->beta(dim), + dd, dim2); } } prec = d; diff --git a/Combinatorial_map/include/CGAL/Dart.h b/Combinatorial_map/include/CGAL/Dart.h index 6deaac48151..cba87c1d3b3 100644 --- a/Combinatorial_map/include/CGAL/Dart.h +++ b/Combinatorial_map/include/CGAL/Dart.h @@ -67,9 +67,15 @@ namespace CGAL { template friend struct Remove_cell_functor; + template + friend struct internal::basic_link_beta_functor; + template friend struct internal::link_beta_functor; + template + friend struct internal::unlink_beta_functor; + public: typedef Dart Self; typedef typename Refs::Dart_handle Dart_handle; diff --git a/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h b/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h index 0330bc1604e..c9eda04918a 100644 --- a/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h +++ b/Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h @@ -221,7 +221,7 @@ namespace CGAL { I1.rewind(); I2.rewind(); while ( I1.cont() ) { - amap.basic_link_beta_for_involution(I1, I2, i); + amap.basic_link_beta(I1, I2, i); ++I1; ++I2; } } @@ -485,6 +485,76 @@ namespace CGAL { } }; + /// Functor used to i-link two darts, 2<=i<=dimension. + template + struct basic_link_beta_functor{ + static void run(Map&,typename Map::Dart_handle adart1, + typename Map::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2); + CGAL_static_assertion( i>=2 && i<=Map::dimension ); + adart1->basic_link_beta(adart2, i); + adart2->basic_link_beta(adart1, i); + } + }; + + /// Functor used to 0-link two darts. + template + struct basic_link_beta_functor{ + static void run(Map&,typename Map::Dart_handle adart1, + typename Map::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL ); + adart1->basic_link_beta(adart2, 0); + adart2->basic_link_beta(adart1, 1); + } + }; + + /// Functor used to 1-link two darts. + template + struct basic_link_beta_functor{ + static void run(Map& ,typename Map::Dart_handle adart1, + typename Map::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL); + adart1->basic_link_beta(adart2, 1); + adart2->basic_link_beta(adart1, 0); + } + }; + + /// Functor used to i-unlink one dart. + template + struct unlink_beta_functor{ + static void run(Map&,typename Map::Dart_handle adart) + { + CGAL_assertion(adart != NULL && !adart->is_free(i)); + CGAL_static_assertion(2<=i && i<=Map::dimension); + adart->beta(i)->unlink_beta(i); + adart->unlink_beta(i); + } + }; + + /// Functor used to 0-unlink one dart. + template + struct unlink_beta_functor{ + static void run(Map&,typename Map::Dart_handle adart) + { + CGAL_assertion(adart != NULL && !adart->is_free(0)); + adart->beta(0)->unlink_beta(1); + adart->unlink_beta(0); + } + }; + + /// Functor used to 1-unlink one dart. + template + struct unlink_beta_functor{ + static void run(Map&,typename Map::Dart_handle adart) + { + CGAL_assertion(adart != NULL && !adart->is_free(1)); + adart->beta(1)->unlink_beta(0); + adart->unlink_beta(1); + } + }; // Functor used to group one attribute of two given darts template @@ -827,6 +897,49 @@ namespace CGAL { } }; + /// Functor used to i-link two darts, 2<=i<=dimension. + template + struct link_beta_functor{ + static void run(CMap& amap,typename CMap::Dart_handle adart1, + typename CMap::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 ); + CGAL_static_assertion( 2<=i && i<=CMap::dimension ); + CMap::Helper::template Foreach_enabled_attributes + >::run(&amap,adart1,adart2,i); + adart1->basic_link_beta(adart2, i); + adart2->basic_link_beta(adart1, i); + } + }; + + /// Functor used to 0-link two darts. + template + struct link_beta_functor{ + static void run(Map& amap,typename Map::Dart_handle adart1, + typename Map::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL); + Map::Helper::template Foreach_enabled_attributes + >::run(&amap,adart1,adart2,0); + adart1->basic_link_beta(adart2, 0); + adart2->basic_link_beta(adart1, 1); + } + }; + + /// Functor used to 1-link two darts. + template + struct link_beta_functor{ + static void run(Map& amap,typename Map::Dart_handle adart1, + typename Map::Dart_handle adart2) + { + CGAL_assertion(adart1 != NULL && adart2 != NULL); + Map::Helper::template Foreach_enabled_attributes + >::run(&amap,adart1,adart2,1); + adart1->basic_link_beta(adart2, 1); + adart2->basic_link_beta(adart1, 0); + } + }; + // Functor used to call the On_split functor between the two given darts. template Date: Mon, 7 May 2012 08:42:08 +0000 Subject: [PATCH 49/54] Also remove the testfile. --- .../CGAL_CFG_NO_TMPL_IN_TMPL_PARAM.cpp | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 Installation/config/testfiles/CGAL_CFG_NO_TMPL_IN_TMPL_PARAM.cpp diff --git a/Installation/config/testfiles/CGAL_CFG_NO_TMPL_IN_TMPL_PARAM.cpp b/Installation/config/testfiles/CGAL_CFG_NO_TMPL_IN_TMPL_PARAM.cpp deleted file mode 100644 index 97a053b0d3a..00000000000 --- a/Installation/config/testfiles/CGAL_CFG_NO_TMPL_IN_TMPL_PARAM.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 1998 -// Utrecht University (The Netherlands), -// ETH Zurich (Switzerland), -// INRIA Sophia-Antipolis (France), -// Max-Planck-Institute Saarbruecken (Germany), -// and Tel-Aviv University (Israel). All rights reserved. -// -// This file is part of CGAL (www.cgal.org); you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 3 of the License, -// or (at your option) any later version. -// -// Licensees holding a valid commercial license may use this file in -// accordance with the commercial license agreement provided with the software. -// -// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// $URL$ -// $Id$ -// -// -// Author(s) : Lutz Kettner - -//| Nested templates in template parameter, such as 'template < -//| template class A>' are not supported by any compiler. -//| The following definition is set if they are not supported. - -template< class X> -struct A { - X i; - A( X j) : i(j) {} -}; - -template< template < class T> class B> -struct C { - B b; - C( int i) : b(i) {} -}; - -template< class N, template < class T> class B> -struct D { - B b; - D( N i) : b(i) {} -}; - -template < template < class T > class HDS> -void fct(HDS h1 ) {} // here it does not compile - -template < template < class T > class HDS> -void fct2(D h1 ) {} - - -int main() { - C c(1); - D< double, A> d( 3.8); - (void) c; - fct2(d); - return 0; -} From 6e208cb2df44478315eba3a7e6786bd68af0269c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 9 May 2012 09:18:02 +0000 Subject: [PATCH 50/54] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 19e04f3930f..257eda1008d 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -11,7 +11,7 @@ # Update testsuite result pages -#5,15,25,35,45,55 * * * * cd $HOME/CGAL/collect_and_public_testresults; ./treat_result_collection +5,15,25,35,45,55 * * * * cd $HOME/CGAL/collect_and_public_testresults; ./treat_result_collection # Create internal release # The script also updates the manual tools. From 84fbdf1d9ad47c74a801e80e4bb71e5096307da6 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 9 May 2012 09:24:54 +0000 Subject: [PATCH 51/54] Remove extra #include There is no need to include user classes headers (, , and so on) one by one when is included. --- Distance_2/include/CGAL/squared_distance_2_1.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Distance_2/include/CGAL/squared_distance_2_1.h b/Distance_2/include/CGAL/squared_distance_2_1.h index 17590b17369..9851623ab28 100644 --- a/Distance_2/include/CGAL/squared_distance_2_1.h +++ b/Distance_2/include/CGAL/squared_distance_2_1.h @@ -32,10 +32,6 @@ #include -#include -#include -#include -#include #include #include #include From 008d29717278f62349a014e4dbc6263590fa878c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 9 May 2012 12:28:05 +0000 Subject: [PATCH 52/54] typos --- AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex b/AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex index 0be28c2830a..095f8f5a732 100644 --- a/AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex +++ b/AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex @@ -95,10 +95,10 @@ for which the class \ccc{AABB_tree} may receive a distance query. \ccMethod{Closest_point closest_point_object();}{Returns the closest point constructor.} \ccHasModels -\ccc{AABB_traits}. +\ccc{AABB_traits}. \ccSeeAlso -\ccc{AABB_traits}\\ +\ccc{AABB_traits}\\ \ccc{AABB_tree} \ccc{AABBPrimitive} From b575c50bde26233c5886c8ffa8d2d3d082617277 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 10 May 2012 08:57:24 +0000 Subject: [PATCH 53/54] Save the partition table --- .gitattributes | 1 + .../cgal.geometryfactory.com/partition-table-sda.txt | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 Maintenance/infrastructure/cgal.geometryfactory.com/partition-table-sda.txt diff --git a/.gitattributes b/.gitattributes index 38d7151d460..1125e2896bc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2136,6 +2136,7 @@ Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_release -text Maintenance/infrastructure/cgal.geometryfactory.com/bin/dump_crontab -text Maintenance/infrastructure/cgal.geometryfactory.com/bin/update_manual_tools -text Maintenance/infrastructure/cgal.geometryfactory.com/crontab -text +Maintenance/infrastructure/cgal.geometryfactory.com/partition-table-sda.txt -text Maintenance/infrastructure/cgal.geometryfactory.com/reference-platforms/boostrap -text Maintenance/infrastructure/cgal.geometryfactory.com/reference-platforms/common-setup -text Maintenance/infrastructure/cgal.geometryfactory.com/reference-platforms/i686_Linux-2.6_g++-3.4.6_CentOS-5.1-O2/CMakeCache.txt -text diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/partition-table-sda.txt b/Maintenance/infrastructure/cgal.geometryfactory.com/partition-table-sda.txt new file mode 100644 index 00000000000..7ba18c16b03 --- /dev/null +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/partition-table-sda.txt @@ -0,0 +1,12 @@ +# partition table of /dev/sda +unit: sectors + +/dev/sda1 : start= 63, size= 20482812, Id=fd, bootable +/dev/sda2 : start= 20482875, size= 16383174, Id=fd +/dev/sda3 : start= 36866049, size=2893406016, Id= f +/dev/sda4 : start= 0, size= 0, Id= 0 +/dev/sda5 : start= 36866050, size=2893406015, Id=fd +# +# Restore with: +# sfdisk --force /dev/sda < partition-table-sda.txt +# From 9451d8e7c77bc93aadd89430206c8aa60e3b8d37 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 10 May 2012 13:18:05 +0000 Subject: [PATCH 54/54] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 257eda1008d..3a7fdf0c697 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -19,7 +19,10 @@ 0 21 * * Fri,Sat cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next --public --do-it # "next" + candidates -0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it +#0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/next $HOME/CGAL/candidate-packages --public --do-it + +#### Special day: test the Result_of branch instead of next: +0 21 * * Mon,Tue,Wed,Thu,Sun cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/Result_of-pmoeller $HOME/CGAL/candidate-packages --public --do-it # - on trunk #0 21 * * Sat cd $HOME/CGAL/create_internal_release; $HOME/bin/create_release $HOME/CGAL/trunk --public --do-it