diff --git a/.travis.yml b/.travis.yml index 2c2fe62d3f4..f9e0528d35d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: cpp -dist: xenial +dist: bionic sudo: required git: depth: 3 @@ -58,7 +58,7 @@ install: - echo "$PWD" - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh - - export CXX=clang++ CC=clang; + - export CXX=clang++-10 CC=clang-10; before_script: - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - sudo mv doxygen_exe /usr/bin/doxygen diff --git a/.travis/install.sh b/.travis/install.sh index 507ecd0894e..63a9ec329eb 100644 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -2,14 +2,15 @@ [ -n "$CGAL_DEBUG_TRAVIS" ] && set -x DONE=0 +sudo add-apt-repository ppa:mhier/libboost-latest -y sudo apt-get update + while [ $DONE = 0 ] do - DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \ -flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev libboost-dev \ -libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-dev \ + DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang-10 zsh \ +flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev \ qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \ -|| DONE=0 && sudo apt-get update +libboost1.73-dev || DONE=0 && sudo apt-get update done exit 0 diff --git a/.travis/template.txt b/.travis/template.txt index 48d2facb8ce..3b99af1ff13 100644 --- a/.travis/template.txt +++ b/.travis/template.txt @@ -1,5 +1,5 @@ language: cpp -dist: xenial +dist: bionic sudo: required git: depth: 3 @@ -12,7 +12,7 @@ install: - echo "$PWD" - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh - - export CXX=clang++ CC=clang; + - export CXX=clang++-10 CC=clang-10; before_script: - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - sudo mv doxygen_exe /usr/bin/doxygen diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h index 2c99833b158..c58bbd3f6ba 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -25,6 +26,9 @@ #include +#include +#include + namespace CGAL { namespace Tetrahedral_remeshing @@ -760,31 +764,35 @@ Subdomain_relation compare_subdomains(const typename C3t3::Vertex_handle v0, const C3t3& c3t3) { typedef typename C3t3::Subdomain_index Subdomain_index; + typedef boost::container::flat_set, + boost::container::small_vector > Set_of_subdomains; - std::vector subdomains_v0; - incident_subdomains(v0, c3t3, std::back_inserter(subdomains_v0)); - std::sort(subdomains_v0.begin(), subdomains_v0.end()); + Set_of_subdomains subdomains_v0; + incident_subdomains(v0, c3t3, + std::inserter(subdomains_v0, subdomains_v0.begin())); - std::vector subdomains_v1; - incident_subdomains(v1, c3t3, std::back_inserter(subdomains_v1)); - std::sort(subdomains_v1.begin(), subdomains_v1.end()); + Set_of_subdomains subdomains_v1; + incident_subdomains(v1, c3t3, + std::inserter(subdomains_v1, subdomains_v1.begin())); if (subdomains_v0.size() == subdomains_v1.size()) { - for (unsigned int i = 0; i < subdomains_v0.size(); i++) - if (subdomains_v0[i] != subdomains_v1[i]) - return DIFFERENT; - return EQUAL; + if(std::equal(subdomains_v0.begin(), subdomains_v0.end(), subdomains_v1.begin())) + return EQUAL; + else + return DIFFERENT; } else { - std::vector - intersection((std::min)(subdomains_v0.size(), subdomains_v1.size()), -1); - typename std::vector::iterator + boost::container::small_vector + intersection((std::min)(subdomains_v0.size(), subdomains_v1.size()), -1); + typename boost::container::small_vector::iterator end_it = std::set_intersection(subdomains_v0.begin(), subdomains_v0.end(), subdomains_v1.begin(), subdomains_v1.end(), intersection.begin()); - std::ptrdiff_t intersection_size = (end_it - intersection.begin()); + std::ptrdiff_t intersection_size = + std::distance(intersection.begin(), end_it); if (subdomains_v0.size() > subdomains_v1.size() && intersection_size == std::ptrdiff_t(subdomains_v1.size()))