diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h index 71193952207..3699038ebda 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h @@ -43,7 +43,7 @@ Returns the placement computed by `place`, if no triangle in the profile changes the normal by more than 90 degree. */ template -optional +boost::optional operator()(const Profile& profile) const; /// @} diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h index 20b0ef685eb..4e8db2bb8e3 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h @@ -38,8 +38,8 @@ The `placement` argument is ignored. */ template -optional operator()(const Profile& profile, - const T& placement) const; +boost::optional operator()(const Profile& profile, + const T& placement) const; /// @} diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h index 72f724a93f7..e8209b32039 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h @@ -37,7 +37,7 @@ Returns the cost of collapsing the edge (represented by its profile) considering the new `placement` computed for it. */ template -optional +boost::optional operator()(const Profile& profile, const boost::optional& placement) const diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h index a714378f826..ac0c9466756 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h @@ -39,7 +39,7 @@ Returns the new position for the remaining vertex after collapsing the edge (represented by its profile). */ template -optional +boost::optional operator()(const Profile& profile) const; /// @} diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h index be4baa1fd3f..faaafe5d221 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h @@ -36,7 +36,7 @@ the points of the source and target vertices (`profile.p0()` and `profile.p1()`) */ template -optional +boost::optional operator()(const Profile& profile) const; /// @} diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Edge_collapse_visitor_base.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Edge_collapse_visitor_base.h index ad6a367b29d..66df504c40d 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Edge_collapse_visitor_base.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Edge_collapse_visitor_base.h @@ -22,7 +22,7 @@ #include -#include +#include #include namespace CGAL { diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Constrained_placement.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Constrained_placement.h index e09835e3677..4685d7565e8 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Constrained_placement.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Constrained_placement.h @@ -22,7 +22,7 @@ #include -#include +#include #include namespace CGAL { @@ -42,7 +42,7 @@ public: {} template - optional operator()(const Profile& aProfile) const + boost::optional operator()(const Profile& aProfile) const { typedef typename Profile::TM TM; typedef typename boost::graph_traits::halfedge_descriptor halfedge_descriptor; diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_ratio_stop_predicate.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_ratio_stop_predicate.h index 6188583ed32..e5c174d15af 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_ratio_stop_predicate.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_ratio_stop_predicate.h @@ -22,7 +22,7 @@ #include -#include +#include #include namespace CGAL { diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_stop_predicate.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_stop_predicate.h index 4100d9a6c76..525126d242a 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_stop_predicate.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Count_stop_predicate.h @@ -22,7 +22,7 @@ #include -#include +#include #include namespace CGAL { diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h index 2f8772d176c..e50dab45e7f 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_length_cost.h @@ -22,7 +22,7 @@ #include -#include +#include #include namespace CGAL { @@ -36,9 +36,9 @@ public: Edge_length_cost() {} template - optional operator()(const Profile& aProfile, const T& /*aPlacement*/) const + boost::optional operator()(const Profile& aProfile, const T& /*aPlacement*/) const { - typedef optional result_type; + typedef boost::optional result_type; return result_type(squared_distance(aProfile.p0(), aProfile.p1())); } }; diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_profile.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_profile.h index e26606ca668..c06ef1e1f86 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_profile.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_profile.h @@ -22,7 +22,7 @@ #include -#include +#include #include #include diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h index 3e70fb5e9e4..9d39e7d55b6 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_cost.h @@ -22,8 +22,8 @@ #include -#include -#include +#include +#include namespace CGAL { namespace Surface_mesh_simplification { @@ -39,11 +39,11 @@ public: {} template - optional + boost::optional operator()(const Profile& aProfile, - const optional& aPlacement) const + const boost::optional& aPlacement) const { - return LindstromTurkCore(mParams,aProfile).compute_cost(aPlacement); + return internal::LindstromTurkCore(mParams,aProfile).compute_cost(aPlacement); } private: diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h index 5d1dcf9de58..a285c793830 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/LindstromTurk_placement.h @@ -22,8 +22,8 @@ #include -#include -#include +#include +#include namespace CGAL { namespace Surface_mesh_simplification { @@ -39,9 +39,9 @@ public: {} template - optional operator()(const Profile& aProfile) const + boost::optional operator()(const Profile& aProfile) const { - return LindstromTurkCore(mParams,aProfile).compute_placement(); + return internal::LindstromTurkCore(mParams, aProfile).compute_placement(); } private: diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h index e998c99fa64..81b59cf1edd 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Midpoint_placement.h @@ -23,7 +23,7 @@ #include -#include +#include #include namespace CGAL { @@ -38,9 +38,9 @@ public: Midpoint_placement() {} template - optional operator()(const Profile& aProfile) const + boost::optional operator()(const Profile& aProfile) const { - return optional(midpoint(aProfile.p0(), aProfile.p1())); + return boost::optional(midpoint(aProfile.p0(), aProfile.p1())); } }; diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Detail/Lindstrom_Turk_core.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/Lindstrom_Turk_core.h similarity index 97% rename from Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Detail/Lindstrom_Turk_core.h rename to Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/Lindstrom_Turk_core.h index 70bdee2cbad..35eaae9d62b 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Detail/Lindstrom_Turk_core.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/Lindstrom_Turk_core.h @@ -22,12 +22,13 @@ #include -#include - -#include +#include #include #include +#include +#include + #include #include @@ -40,6 +41,7 @@ namespace CGAL { namespace Surface_mesh_simplification { +namespace internal { template class LindstromTurkCore @@ -65,9 +67,9 @@ public: typedef typename Kernel::Vector_3 Vector; typedef typename Kernel::FT FT; - typedef optional Optional_FT; - typedef optional Optional_point; - typedef optional Optional_vector; + typedef boost::optional Optional_FT; + typedef boost::optional Optional_point; + typedef boost::optional Optional_vector; typedef MatrixC33 Matrix; @@ -158,7 +160,7 @@ private : static bool is_finite(const Matrix& m) { return is_finite(m.r0()) && is_finite(m.r1()) && is_finite(m.r2()); } template - static optional filter_infinity(const T& n) { return is_finite(n) ? optional(n) : optional(); } + static boost::optional filter_infinity(const T& n) { return is_finite(n) ? boost::optional(n) : boost::optional(); } TM& surface() const { return mProfile.surface(); } @@ -307,7 +309,7 @@ compute_placement() if(mConstraints_n == 3) { // If the matrix is singular it's inverse cannot be computed so an 'absent' value is returned. - optional lOptional_Ai = inverse_matrix(mConstraints_A); + boost::optional lOptional_Ai = inverse_matrix(mConstraints_A); if(lOptional_Ai) { const Matrix& lAi = *lOptional_Ai; @@ -748,6 +750,7 @@ add_constraint_from_gradient(const Matrix& H, } } +} // namespace internal } // namespace Surface_mesh_simplification } // namespace CGAL diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/edge_collapse.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/edge_collapse.h index 95d72bde349..dfa9980175c 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/edge_collapse.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/edge_collapse.h @@ -25,8 +25,8 @@ #include #include -#include -#include +#include +#include #include namespace CGAL { @@ -97,10 +97,10 @@ int edge_collapse(TM& aSurface, internal_np::graph_visitor_t vis = internal_np::graph_visitor_t(); return edge_collapse(aSurface, aShould_stop, - choose_const_pmap(get_param(aParams,internal_np::vertex_index),aSurface,boost::vertex_index), - choose_pmap(get_param(aParams,internal_np::vertex_point),aSurface,boost::vertex_point), - choose_const_pmap(get_param(aParams,internal_np::halfedge_index),aSurface,boost::halfedge_index), - choose_param(get_param(aParams,internal_np::edge_is_constrained),No_constrained_edge_map()), + choose_const_pmap(get_param(aParams,internal_np::vertex_index), aSurface, boost::vertex_index), + choose_pmap(get_param(aParams,internal_np::vertex_point), aSurface, boost::vertex_point), + choose_const_pmap(get_param(aParams,internal_np::halfedge_index), aSurface, boost::halfedge_index), + choose_param(get_param(aParams,internal_np::edge_is_constrained), No_constrained_edge_map()), choose_param(get_param(aParams,internal_np::get_cost_policy), LindstromTurk_cost()), choose_param(get_param(aParams,internal_np::get_placement_policy), LindstromTurk_placement()), choose_param(get_param(aParams,vis), Dummy_visitor())); @@ -131,7 +131,7 @@ int edge_collapse(TM& aSurface, template int edge_collapse(TM& aSurface, const ShouldStop& aShould_stop) { - return edge_collapse(aSurface,aShould_stop, CGAL::parameters::halfedge_index_map(get(boost::halfedge_index,aSurface))); + return edge_collapse(aSurface, aShould_stop, CGAL::parameters::halfedge_index_map(get(boost::halfedge_index, aSurface))); } template diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Common.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Common.h similarity index 88% rename from Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Common.h rename to Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Common.h index b80589a8dcf..8814f921a4f 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Common.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Common.h @@ -23,20 +23,14 @@ #include #include -#include -#include #include #include #include -#include -#include #include #include -#include #include #include -#include #include #include #include @@ -50,24 +44,6 @@ namespace CGAL { namespace Surface_mesh_simplification { -using boost::num_edges; -using boost::num_vertices; -using boost::edges; -using boost::out_edges; -using boost::in_edges; -using boost::source; -using boost::target; - -using boost::shared_ptr; -using boost::optional; -using boost::none; -using boost::put_get_helper; -using boost::get; -using boost::put; -using boost::addressof; - -using namespace boost::tuples; - template inline bool handle_assigned(Handle h) { Handle null; return h != null; } @@ -167,4 +143,4 @@ inline std::string optional_to_string(const boost::optional& o) { #define CGAL_SURF_SIMPL_TEST_assertion_code(CODE) #endif -#endif // CGAL_SURFACE_MESH_SIMPLIFICATION_DETAIL_COMMON_H // +#endif // CGAL_SURFACE_MESH_SIMPLIFICATION_DETAIL_COMMON_H diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Edge_collapse.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Edge_collapse.h similarity index 98% rename from Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Edge_collapse.h rename to Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Edge_collapse.h index 0f20f23c1c5..c638f262539 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Detail/Edge_collapse.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/internal/Edge_collapse.h @@ -22,10 +22,14 @@ #include -#include +#include #include + #include #include +#include + +#include namespace CGAL { namespace Surface_mesh_simplification { @@ -79,8 +83,8 @@ public: typedef typename Traits::Vector_3 Vector; typedef typename Traits::FT FT; - typedef optional Cost_type; - typedef optional Placement_type; + typedef boost::optional Cost_type; + typedef boost::optional Placement_type; struct Compare_id { @@ -101,7 +105,7 @@ public: bool operator()(const halfedge_descriptor& a, const halfedge_descriptor& b) const { - // NOTE: A cost is an optional<> value. + // NOTE: A cost is a boost::optional<> value. // Absent optionals are ordered first; that is, "none < T" and "T > none" for any defined T != none. // In consequence, edges with undefined costs will be promoted to the top of the priority queue and poped out first. return mAlgorithm->get_data(a).cost() < mAlgorithm->get_data(b).cost(); @@ -293,9 +297,9 @@ private: CGAL_SURF_SIMPL_TEST_assertion(!mPQ->contains(aEdge)); } - optional pop_from_PQ() + boost::optional pop_from_PQ() { - optional rEdge = mPQ->extract_top(); + boost::optional rEdge = mPQ->extract_top(); if(rEdge) { CGAL_SURF_SIMPL_TEST_assertion(is_primary_edge(*rEdge)); @@ -564,7 +568,7 @@ loop() // Pops and processes each edge from the PQ - optional lEdge; + boost::optional lEdge; #ifdef CGAL_SURF_SIMPL_INTERMEDIATE_STEPS_PRINTING int i_rm=0; #endif diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp index 7bf9d392d3f..5d207ae9201 100644 --- a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp @@ -26,6 +26,8 @@ #include "basics.h" #include "test_self_intersection.h" +#include + //#define TEST_TEST_TRACE_ENABLED template struct eat_sizeof {};