From f2b65d652fcbbb47600ba877cd797145c0d7d739 Mon Sep 17 00:00:00 2001 From: Efi Fogel Date: Sun, 20 May 2018 23:43:53 +0300 Subject: [PATCH] Suppress c++11 for now. --- .../Arrangement_on_surface_2/CMakeLists.txt | 10 - .../Point_location_test.h | 206 +++++++++++------- 2 files changed, 126 insertions(+), 90 deletions(-) diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt index 2ffece8e931..1e9b152f714 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt @@ -8,16 +8,6 @@ enable_testing() cmake_minimum_required(VERSION 3.1) -list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_generalized_initializers has_cpp11) -if (has_cpp11 LESS 0) - message(STATUS "NOTICE: These examples requires a C++11 compiler and will not be compiled.") - return() -endif() - -# Use C++11 for this directory and its sub-directories. -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED TRUE) - find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Point_location_test.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Point_location_test.h index 40f14620a61..3224dfe54eb 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Point_location_test.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Point_location_test.h @@ -14,7 +14,7 @@ #define TRAPEZOID_RIC_PL_ENABLED 1 #define TRAPEZOID_RIC_NO_GUARANTEE_PL_ENABLED 1 -#include +#include #include #include @@ -149,23 +149,24 @@ protected: NUM_PL_STRATEGIES }; - struct Locator { - typedef boost::variant Pl_variant; + Trapezoid_ric_pl*> Pl_variant; + + struct Locator { Pl_variant m_variant; //! The name of the locator. @@ -174,7 +175,7 @@ protected: bool m_active; }; - std::array m_locators; + std::vector m_locators; // Landmark point-location generators Random_lm_generator* m_random_g; @@ -238,9 +239,11 @@ public: void query(Point_location& pl, const char* type, InputIterator begin, InputIterator end, OutputIterator oi) { + typedef InputIterator Input_iterator; CGAL::Timer timer; timer.reset(); timer.start(); - for (auto piter = begin; piter != end; ++piter) *oi++ = pl.locate(*piter); + for (Input_iterator piter = begin; piter != end; ++piter) + *oi++ = pl.locate(*piter); timer.stop(); std::cout << type << " location took " << timer.time() << std::endl; } @@ -250,7 +253,7 @@ private: template void init_pl(const std::string& name) { - m_locators[id].m_variant = static_cast(nullptr); + m_locators[id].m_variant = static_cast(NULL); m_locators[id].m_name = name; m_locators[id].m_active = true; } @@ -259,7 +262,7 @@ private: template void allocate_pl() { - auto* locator = new Strategy(); + Strategy* locator = new Strategy(); CGAL_assertion(locator); m_locators[id].m_variant = locator; } @@ -268,7 +271,7 @@ private: template bool construct_pl() { - auto* locator = new Strategy(*m_arr); + Strategy* locator = new Strategy(*m_arr); if (! locator) return false; m_locators[id].m_variant = locator; return true; @@ -278,7 +281,7 @@ private: template bool construct_pl(Generator* generator) { - auto* locator = new Strategy(*m_arr, generator); + Strategy* locator = new Strategy(*m_arr, generator); if (! locator) return false; m_locators[id].m_variant = locator; return true; @@ -288,10 +291,10 @@ private: template void deallocate_pl() { - auto* strategy = boost::get(m_locators[id].m_variant); + Strategy* strategy = boost::get(m_locators[id].m_variant); if (strategy) { delete strategy; - m_locators[id].m_variant = static_cast(nullptr); + m_locators[id].m_variant = static_cast(NULL); } } @@ -300,7 +303,7 @@ private: void attach_pl() { if (! m_locators[id].m_active) return; - auto* strategy = boost::get(m_locators[id].m_variant); + Strategy* strategy = boost::get(m_locators[id].m_variant); strategy->attach(*m_arr); } @@ -309,7 +312,7 @@ private: void attach_pl(Generator* generator) { if (! m_locators[id].m_active) return; - auto* strategy = boost::get(m_locators[id].m_variant); + Strategy* strategy = boost::get(m_locators[id].m_variant); strategy->attach(*m_arr, generator); } @@ -318,8 +321,8 @@ private: void query_pl(T& objs) { if (! m_locators[id].m_active) return; - const auto& name = m_locators[id].m_name; - auto* strategy = boost::get(m_locators[id].m_variant); + const std::string& name = m_locators[id].m_name; + Strategy* strategy = boost::get(m_locators[id].m_variant); query(*strategy, name.c_str(), m_query_points.begin(), m_query_points.end(), std::back_inserter(objs)); } @@ -329,7 +332,7 @@ private: void measure(Timer& timer, UnaryOperation op) { if (! m_locators[id].m_active) return; - const auto& name = m_locators[id].m_name; + const std::string& name = m_locators[id].m_name; timer.reset(); timer.start(); op(); @@ -420,7 +423,7 @@ private: #define DEALLOCATE_PL_LM_RANDOM() \ if (m_random_g) { \ delete m_random_g; \ - m_random_g = nullptr; \ + m_random_g = NULL; \ } \ deallocate_pl() @@ -450,7 +453,7 @@ private: #define DEALLOCATE_PL_LM_GRID() \ if (m_grid_g) { \ delete m_grid_g; \ - m_grid_g = nullptr; \ + m_grid_g = NULL; \ } \ deallocate_pl() @@ -481,7 +484,7 @@ private: #define DEALLOCATE_PL_LM_HALTON() \ if (m_halton_g) { \ delete m_halton_g; \ - m_halton_g = nullptr; \ + m_halton_g = NULL; \ } \ deallocate_pl() @@ -513,7 +516,7 @@ private: #define DEALLOCATE_PL_LM_MIDDLE_EDGES() \ if (m_middle_edges_g) { \ delete m_middle_edges_g; \ - m_middle_edges_g = nullptr; \ + m_middle_edges_g = NULL; \ } \ deallocate_pl() @@ -546,7 +549,7 @@ private: #define DEALLOCATE_PL_LM_SPECIFIED_POINTS() \ if (m_specified_points_g) { \ delete m_specified_points_g; \ - m_specified_points_g = nullptr; \ + m_specified_points_g = NULL; \ } \ deallocate_pl() @@ -621,10 +624,10 @@ private: #define DEALLOCATE_PL_TRAPEZOID_RIC_NO_GUARANTEE() \ deallocate_pl() -#define ATTACH_PL_TRAPEZOID_RIC_NO_GUARANTEE() \ - auto& var = m_locators[TRAPEZOID_RIC_NO_GUARANTEE_PL].m_variant; \ - auto* strategy = boost::get(var); \ - strategy->with_guarantees(false); \ +#define ATTACH_PL_TRAPEZOID_RIC_NO_GUARANTEE() \ + Pl_variant& var = m_locators[TRAPEZOID_RIC_NO_GUARANTEE_PL].m_variant; \ + Trapezoid_ric_pl* strategy = boost::get(var); \ + strategy->with_guarantees(false); \ attach_pl() #define QUERY_PL_TRAPEZOID_RIC_NO_GUARANTEE(obj) \ @@ -638,19 +641,57 @@ private: #define QUERY_PL_TRAPEZOID_RIC_NO_GUARANTEE(obj) #endif +#if defined(CGAL_CFG_NO_CPP0X_LAMBDAS) +#define MEASURE_NAIVE_PL(timer, op) op +#define MEASURE_SIMPLE_PL(timer, op) op +#define MEASURE_WALK_PL(timer, op) op +#define MEASURE_LM_PL(timer, op) op +#define MEASURE_LM_RANDOM_PL(timer, op) op +#define MEASURE_LM_GRID_PL(timer, op) op +#define MEASURE_LM_HALTON_PL(timer, op) op +#define MEASURE_LM_MIDDLE_EDGES_PL(timer, op) op +#define MEASURE_LM_SPECIFIED_POINTS_PL(timer, op) op +#define MEASURE_TRIANGULATION_PL(timer, op) op +#define MEASURE_TRAPEZOID_RIC_PL(timer, op) op +#define MEASURE_TRAPEZOID_RIC_NO_GUARANTEE_PL(timer, op) op +#else +#define MEASURE_NAIVE_PL(timer, op) measure(timer, [&](){ op; }); +#define MEASURE_SIMPLE_PL(timer, op) measure(timer, [&](){ op; }); +#define MEASURE_WALK_PL(timer, op) measure(timer, [&](){ op; }); +#define MEASURE_LM_PL(timer, op) measure(timer, [&](){ op; }); +#define MEASURE_LM_RANDOM_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_LM_GRID_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_LM_HALTON_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_LM_MIDDLE_EDGES_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_LM_SPECIFIED_POINTS_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_TRIANGULATION_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_TRAPEZOID_RIC_PL(timer, op) \ + measure(timer, [&](){ op; }); +#define MEASURE_TRAPEZOID_RIC_NO_GUARANTEE_PL(timer, op) \ + measure(timer, [&](){ op; }); +#endif + //! Constructor. template Point_location_test:: Point_location_test(const Geom_traits& geom_traits) : Base(geom_traits), m_geom_traits(geom_traits), - m_arr(nullptr), - m_random_g(nullptr), - m_grid_g(nullptr), - m_halton_g(nullptr), - m_middle_edges_g(nullptr), - m_specified_points_g(nullptr) + m_arr(NULL), + m_random_g(NULL), + m_grid_g(NULL), + m_halton_g(NULL), + m_middle_edges_g(NULL), + m_specified_points_g(NULL) { + m_locators.resize(NUM_PL_STRATEGIES); + INIT_PL_NATIVE(); INIT_PL_SIMPLE(); INIT_PL_WALK(); @@ -748,7 +789,7 @@ deallocate_arrangement() { if (m_arr) { delete m_arr; - m_arr = nullptr; + m_arr = NULL; } } @@ -816,25 +857,22 @@ bool Point_location_test::construct_pl_strategies() #if (TEST_GEOM_TRAITS == SEGMENT_GEOM_TRAITS) || \ (TEST_GEOM_TRAITS == LINEAR_GEOM_TRAITS) - measure(timer, [&](){ CONSTRUCT_PL_LM(); }); - measure(timer, [&](){ CONSTRUCT_PL_LM_RANDOM(); }); - measure(timer, [&](){ CONSTRUCT_PL_LM_GRID(); }); - measure(timer, [&](){ CONSTRUCT_PL_LM_HALTON(); }); - measure(timer, [&](){ CONSTRUCT_PL_LM_MIDDLE_EDGES(); }); - measure(timer, [&](){ - CONSTRUCT_PL_LM_SPECIFIED_POINTS(); - }); + MEASURE_LM_PL(timer, CONSTRUCT_PL_LM()); + MEASURE_LM_RANDOM_PL(timer, CONSTRUCT_PL_LM_RANDOM()); + MEASURE_LM_GRID_PL(timer, CONSTRUCT_PL_LM_GRID()); + MEASURE_LM_HALTON_PL(timer, CONSTRUCT_PL_LM_HALTON()); + MEASURE_LM_MIDDLE_EDGES_PL(timer, CONSTRUCT_PL_LM_MIDDLE_EDGES()); + MEASURE_LM_SPECIFIED_POINTS_PL(timer, CONSTRUCT_PL_LM_SPECIFIED_POINTS()); #endif #if (TEST_GEOM_TRAITS == SEGMENT_GEOM_TRAITS) - measure(timer, [&](){ CONSTRUCT_PL_TRIANGULATION_PL(); }); + MEASURE_TRIANGULATION_PL(timer, CONSTRUCT_PL_TRIANGULATION_PL()); #endif - measure(timer, [&](){ CONSTRUCT_PL_TRAPEZOID_RIC_PL(); }); - measure(timer, [&](){ - CONSTRUCT_PL_TRAPEZOID_RIC_NO_GUARANTEE(); - }); + MEASURE_TRAPEZOID_RIC_PL(timer, CONSTRUCT_PL_TRAPEZOID_RIC_PL()); + MEASURE_TRAPEZOID_RIC_NO_GUARANTEE_PL(timer, + CONSTRUCT_PL_TRAPEZOID_RIC_NO_GUARANTEE()); std::cout << std::endl; @@ -854,24 +892,21 @@ bool Point_location_test::attach_pl_strategies() #if (TEST_GEOM_TRAITS == SEGMENT_GEOM_TRAITS) || \ (TEST_GEOM_TRAITS == LINEAR_GEOM_TRAITS) - measure(timer, [&](){ ATTACH_PL_LM(); }); - measure(timer, [&](){ ATTACH_PL_LM_RANDOM(); }); - measure(timer, [&](){ ATTACH_PL_LM_GRID(); }); - measure(timer, [&](){ ATTACH_PL_LM_HALTON(); }); - measure(timer, [&](){ ATTACH_PL_LM_MIDDLE_EDGES(); }); - measure(timer, [&](){ - ATTACH_PL_LM_SPECIFIED_POINTS(); - }); + MEASURE_LM_PL(timer, ATTACH_PL_LM()); + MEASURE_LM_RANDOM_PL(timer, ATTACH_PL_LM_RANDOM()); + MEASURE_LM_GRID_PL(timer, ATTACH_PL_LM_GRID()); + MEASURE_LM_HALTON_PL(timer, ATTACH_PL_LM_HALTON()); + MEASURE_LM_MIDDLE_EDGES_PL(timer, ATTACH_PL_LM_MIDDLE_EDGES()); + MEASURE_LM_SPECIFIED_POINTS_PL(timer, ATTACH_PL_LM_SPECIFIED_POINTS()); #endif #if (TEST_GEOM_TRAITS == SEGMENT_GEOM_TRAITS) - measure(timer, [&](){ ATTACH_PL_TRIANGULATION_PL(); }); + MEASURE_TRIANGULATION_PL(timer, ATTACH_PL_TRIANGULATION_PL()); #endif - measure(timer, [&](){ ATTACH_PL_TRAPEZOID_RIC_PL(); }); - measure(timer, [&](){ - ATTACH_PL_TRAPEZOID_RIC_NO_GUARANTEE(); - }); + MEASURE_TRAPEZOID_RIC_PL(timer, ATTACH_PL_TRAPEZOID_RIC_PL()); + MEASURE_TRAPEZOID_RIC_NO_GUARANTEE_PL(timer, + ATTACH_PL_TRAPEZOID_RIC_NO_GUARANTEE()); std::cout << std::endl; @@ -1069,10 +1104,11 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) // Assign and check results for (size_t qi = 0; qi < size; ++qi) { // Assign object to a face - auto* fh_ref = boost::get(&(objs[0][qi])); + Face_const_handle* fh_ref = boost::get(&(objs[0][qi])); if (fh_ref) { for (size_t pl = 1; pl < pls_num; ++pl) { - auto* fh_cur = boost::get(&(objs[pl][qi])); + Face_const_handle* fh_cur = + boost::get(&(objs[pl][qi])); if (fh_cur) { if ((*fh_cur) != (*fh_ref)) { std::cout << "Error: point location number " << pl << std::endl; @@ -1086,12 +1122,14 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) std::cout << "Error: point location number " << pl << std::endl; std::cout << "Expected: a face." << std::endl; result += -1; - auto* hh_cur = boost::get(&(objs[pl][qi])); + Halfedge_const_handle* hh_cur = + boost::get(&(objs[pl][qi])); if (hh_cur) { std::cout << "Actual: a halfedge." << std::endl; continue; } - auto* vh_cur = boost::get(&(objs[pl][qi])); + Vertex_const_handle* vh_cur = + boost::get(&(objs[pl][qi])); if (vh_cur) { std::cout << "Actual: a vertex." << std::endl; continue; @@ -1106,10 +1144,12 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) } // Assign object to a halfedge - auto* hh_ref = boost::get(&(objs[0][qi])); + Halfedge_const_handle* hh_ref = + boost::get(&(objs[0][qi])); if (hh_ref) { for (size_t pl = 1; pl < pls_num; ++pl) { - auto* hh_cur = boost::get(&(objs[pl][qi])); + Halfedge_const_handle* hh_cur = + boost::get(&(objs[pl][qi])); if (hh_cur) { if (((*hh_cur) != (*hh_ref)) && ((*hh_cur)->twin() != (*hh_ref))) { std::cout << "Error: point location number " << pl << std::endl; @@ -1125,12 +1165,14 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) std::cout << "Expected: a halfedge, " << (*hh_ref)->curve() << std::endl; result += -1; - auto* fh_cur = boost::get(&(objs[pl][qi])); + Face_const_handle* fh_cur = + boost::get(&(objs[pl][qi])); if (fh_cur) { std::cout << "Actual: a face." << std::endl; continue; } - auto* vh_cur = boost::get(&(objs[pl][qi])); + Vertex_const_handle* vh_cur = + boost::get(&(objs[pl][qi])); if (vh_cur) { std::cout << "Actual: a vertex." << std::endl; continue; @@ -1141,10 +1183,12 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) } // Assign object to a vertex - auto* vh_ref = boost::get(&(objs[0][qi])); + Vertex_const_handle* vh_ref = + boost::get(&(objs[0][qi])); if (vh_ref) { for (size_t pl = 1; pl < pls_num; ++pl) { - auto vh_cur = boost::get(&(objs[pl][qi])); + Vertex_const_handle* vh_cur = + boost::get(&(objs[pl][qi])); if (vh_cur) { if ((*vh_cur) != (*vh_ref)) { std::cout << "Error: point location number " << pl << std::endl; @@ -1159,12 +1203,14 @@ verify(Variants_vector objs[NUM_PL_STRATEGIES], size_t size, size_t pls_num) std::cout << "Error: point location number " << pl << std::endl; std::cout << "Expected: a vertex: "<< (*vh_ref)->point() << std::endl; result += -1; - auto fh_cur = boost::get(&(objs[pl][qi])); + Face_const_handle* fh_cur = + boost::get(&(objs[pl][qi])); if (fh_cur) { std::cout << "Actual: a face." << std::endl; continue; } - auto hh_cur = boost::get(&(objs[pl][qi])); + Halfedge_const_handle* hh_cur = + boost::get(&(objs[pl][qi])); if (hh_cur) { std::cout << "Actual: a halfedge." << std::endl; continue;