Solve conflicts

This commit is contained in:
Maxime Gimeno 2019-04-09 10:04:44 +02:00
commit 78db3f646d
1589 changed files with 27490 additions and 16637 deletions

View File

@ -20,34 +20,35 @@ env:
- PACKAGE='Envelope_3 Filtered_kernel Generalized_map ' - PACKAGE='Envelope_3 Filtered_kernel Generalized_map '
- PACKAGE='Generator Geomview GraphicsView ' - PACKAGE='Generator Geomview GraphicsView '
- PACKAGE='HalfedgeDS Hash_map Heat_method_3 ' - PACKAGE='HalfedgeDS Hash_map Heat_method_3 '
- PACKAGE='Homogeneous_kernel Inscribed_areas Installation ' - PACKAGE='Homogeneous_kernel Hyperbolic_triangulation_2 Inscribed_areas '
- PACKAGE='Interpolation Intersections_2 Intersections_3 ' - PACKAGE='Installation Interpolation Intersections_2 '
- PACKAGE='Interval_skip_list Interval_support Inventor ' - PACKAGE='Intersections_3 Interval_skip_list Interval_support '
- PACKAGE='Jet_fitting_3 Kernel_23 Kernel_d ' - PACKAGE='Inventor Jet_fitting_3 Kernel_23 '
- PACKAGE='LEDA Linear_cell_complex MacOSX ' - PACKAGE='Kernel_d LEDA Linear_cell_complex '
- PACKAGE='Maintenance Matrix_search Mesh_2 ' - PACKAGE='MacOSX Maintenance Matrix_search '
- PACKAGE='Mesh_3 Mesher_level Minkowski_sum_2 ' - PACKAGE='Mesh_2 Mesh_3 Mesher_level '
- PACKAGE='Minkowski_sum_3 Modifier Modular_arithmetic ' - PACKAGE='Minkowski_sum_2 Minkowski_sum_3 Modifier '
- PACKAGE='Nef_2 Nef_3 Nef_S2 ' - PACKAGE='Modular_arithmetic Nef_2 Nef_3 '
- PACKAGE='NewKernel_d Number_types OpenNL ' - PACKAGE='Nef_S2 NewKernel_d Number_types '
- PACKAGE='Optimal_transportation_reconstruction_2 Optimisation_basic Partition_2 ' - PACKAGE='OpenNL Optimal_transportation_reconstruction_2 Optimisation_basic '
- PACKAGE='Periodic_2_triangulation_2 Periodic_3_mesh_3 Periodic_3_triangulation_3 ' - PACKAGE='Partition_2 Periodic_2_triangulation_2 Periodic_3_mesh_3 '
- PACKAGE='Point_set_2 Point_set_3 Point_set_processing_3 ' - PACKAGE='Periodic_3_triangulation_3 Periodic_4_hyperbolic_triangulation_2 Point_set_2 '
- PACKAGE='Point_set_shape_detection_3 Poisson_surface_reconstruction_3 Polygon ' - PACKAGE='Point_set_3 Point_set_processing_3 Point_set_shape_detection_3 '
- PACKAGE='Polygon_mesh_processing Polyhedron Polyhedron_IO ' - PACKAGE='Poisson_surface_reconstruction_3 Polygon Polygon_mesh_processing '
- PACKAGE='Polyline_simplification_2 Polynomial Polytope_distance_d ' - PACKAGE='Polyhedron Polyhedron_IO Polyline_simplification_2 '
- PACKAGE='Principal_component_analysis Principal_component_analysis_LGPL Profiling_tools ' - PACKAGE='Polynomial Polytope_distance_d Principal_component_analysis '
- PACKAGE='Property_map QP_solver Random_numbers ' - PACKAGE='Principal_component_analysis_LGPL Profiling_tools Property_map '
- PACKAGE='Ridges_3 Scale_space_reconstruction_3 Scripts ' - PACKAGE='QP_solver Random_numbers Ridges_3 '
- PACKAGE='SearchStructures Segment_Delaunay_graph_2 Segment_Delaunay_graph_Linf_2 ' - PACKAGE='Scale_space_reconstruction_3 Scripts SearchStructures '
- PACKAGE='Set_movable_separability_2 Skin_surface_3 Snap_rounding_2 ' - PACKAGE='Segment_Delaunay_graph_2 Segment_Delaunay_graph_Linf_2 Set_movable_separability_2 '
- PACKAGE='Solver_interface Spatial_searching Spatial_sorting ' - PACKAGE='Skin_surface_3 Snap_rounding_2 Solver_interface '
- PACKAGE='STL_Extension Straight_skeleton_2 Stream_lines_2 ' - PACKAGE='Spatial_searching Spatial_sorting STL_Extension '
- PACKAGE='Stream_support Subdivision_method_3 Surface_mesh ' - PACKAGE='Straight_skeleton_2 Stream_lines_2 Stream_support '
- PACKAGE='Surface_mesh_approximation Surface_mesh_deformation Surface_mesher ' - PACKAGE='Subdivision_method_3 Surface_mesh Surface_mesh_approximation '
- PACKAGE='Surface_mesh_parameterization Surface_mesh_segmentation Surface_mesh_shortest_path ' - PACKAGE='Surface_mesh_deformation Surface_mesher Surface_mesh_parameterization '
- PACKAGE='Surface_mesh_simplification Surface_mesh_skeletonization Surface_sweep_2 ' - PACKAGE='Surface_mesh_segmentation Surface_mesh_shortest_path Surface_mesh_simplification '
- PACKAGE='TDS_2 TDS_3 Testsuite ' - PACKAGE='Surface_mesh_skeletonization Surface_sweep_2 TDS_2 '
- PACKAGE='TDS_3 TestPackage Testsuite '
- PACKAGE='Three Triangulation Triangulation_2 ' - PACKAGE='Three Triangulation Triangulation_2 '
- PACKAGE='Triangulation_3 Union_find Visibility_2 ' - PACKAGE='Triangulation_3 Union_find Visibility_2 '
- PACKAGE='Voronoi_diagram_2 wininst ' - PACKAGE='Voronoi_diagram_2 wininst '
@ -55,23 +56,24 @@ compiler: clang
install: install:
- echo "$PWD" - echo "$PWD"
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$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 - if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$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
- bash .travis/install.sh - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh
- export CXX=clang++ CC=clang; - export CXX=clang++ CC=clang;
before_script: before_script:
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
- sudo mv doxygen_exe /usr/bin/doxygen - sudo mv doxygen_exe /usr/bin/doxygen
- sudo chmod +x /usr/bin/doxygen - sudo chmod +x /usr/bin/doxygen
- mkdir -p build - mkdir -p build
- cd build - cd build
- cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON .. - /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- make - /usr/bin/time -f 'Spend time of %C -- %E (real)' make
- sudo make install &>/dev/null - /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null
- cd .. - cd ..
script: script:
- cd ./.travis - cd ./.travis
- bash ./build_package.sh $PACKAGE - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE
notifications: notifications:
email: email:
on_success: change # default: always on_success: change
on_failure: always # default: always # default: always
on_failure: always
# default: always

View File

@ -4,11 +4,15 @@ set -e
CXX_FLAGS="-DCGAL_NDEBUG -ftemplate-backtrace-limit=0" CXX_FLAGS="-DCGAL_NDEBUG -ftemplate-backtrace-limit=0"
function mytime {
/usr/bin/time -f "Spend time of %C: %E (real)" "$@"
}
function build_examples { function build_examples {
mkdir -p build-travis mkdir -p build-travis
cd build-travis cd build-travis
cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" .. mytime cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" ..
make -j2 mytime make -j2
} }
function build_tests { function build_tests {
@ -24,8 +28,8 @@ function build_demo {
EXTRA_CXX_FLAGS="-Werror=inconsistent-missing-override" EXTRA_CXX_FLAGS="-Werror=inconsistent-missing-override"
;; ;;
esac esac
cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" .. mytime cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" ..
make -j2 mytime make -j2
} }
old_IFS=$IFS old_IFS=$IFS
IFS=$' ' IFS=$' '
@ -42,20 +46,20 @@ cd $ROOT
[ "$ARG" = Polygon_mesh_processing ] || [ "$ARG" = Property_map ] ||\ [ "$ARG" = Polygon_mesh_processing ] || [ "$ARG" = Property_map ] ||\
[ "$ARG" = Surface_mesh_deformation ] || [ "$ARG" = Surface_mesh_shortest_path ] ||\ [ "$ARG" = Surface_mesh_deformation ] || [ "$ARG" = Surface_mesh_shortest_path ] ||\
[ "$ARG" = Surface_mesh_simplification ]; then [ "$ARG" = Surface_mesh_simplification ]; then
sudo bash .travis/install_openmesh.sh mytime sudo bash .travis/install_openmesh.sh
fi fi
if [ "$ARG" = "CHECK" ] if [ "$ARG" = "CHECK" ]
then then
cd .travis cd .travis
./generate_travis.sh --check mytime ./generate_travis.sh --check
cd .. cd ..
IFS=$old_IFS IFS=$old_IFS
zsh $ROOT/Scripts/developer_scripts/test_merge_of_branch HEAD mytime zsh $ROOT/Scripts/developer_scripts/test_merge_of_branch HEAD
#test dependencies #test dependencies
cd $ROOT cd $ROOT
bash Scripts/developer_scripts/cgal_check_dependencies.sh --check_headers /usr/bin/doxygen mytime bash Scripts/developer_scripts/cgal_check_dependencies.sh --check_headers /usr/bin/doxygen
cd .travis cd .travis
#parse current matrix and check that no package has been forgotten #parse current matrix and check that no package has been forgotten
@ -92,8 +96,8 @@ cd $ROOT
cd $ROOT cd $ROOT
mkdir build_test mkdir build_test
cd build_test cd build_test
cmake -DCMAKE_INSTALL_PREFIX=install/ .. mytime cmake -DCMAKE_INSTALL_PREFIX=install/ ..
make install mytime make install
# test install with minimal downstream example # test install with minimal downstream example
mkdir installtest mkdir installtest
cd installtest cd installtest
@ -106,7 +110,7 @@ cd $ROOT
echo 'target_link_libraries(${PROJECT_NAME} CGAL::CGAL)' >> CMakeLists.txt echo 'target_link_libraries(${PROJECT_NAME} CGAL::CGAL)' >> CMakeLists.txt
echo '#include "CGAL/remove_outliers.h"' >> main.cpp echo '#include "CGAL/remove_outliers.h"' >> main.cpp
cd build cd build
cmake -DCMAKE_INSTALL_PREFIX=../../install .. mytime cmake -DCMAKE_INSTALL_PREFIX=../../install ..
cd .. cd ..
exit 0 exit 0
fi fi

View File

@ -48,12 +48,12 @@ do
break break
fi fi
done done
echo " matrix: " >> .travis.yml echo " matrix:" >> .travis.yml
#writes the matrix #writes the matrix
echo " - PACKAGE='CHECK' " >> .travis.yml echo " - PACKAGE='CHECK'" >> .travis.yml
for package in ${PACKAGES[@]} for package in ${PACKAGES[@]}
do do
echo " - PACKAGE='$package' " >> .travis.yml echo " - PACKAGE='$package'" >> .travis.yml
done done
#writes the end of the file #writes the end of the file
@ -69,7 +69,6 @@ do
echo "$LINE" >> .travis.yml echo "$LINE" >> .travis.yml
fi fi
done done
echo "" >> .travis.yml
IFS=$' ' IFS=$' '
#check if there are differences between the files #check if there are differences between the files
if ! cmp -s ./.travis.yml ./.travis.old; if ! cmp -s ./.travis.yml ./.travis.old;

View File

@ -8,7 +8,7 @@ do
DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \ 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 \ 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 \ libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-dev \
qtbase5-dev libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-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 || DONE=0 && sudo apt-get update
done done
exit 0 exit 0

View File

@ -41,6 +41,7 @@ HalfedgeDS
Hash_map Hash_map
Heat_method_3 Heat_method_3
Homogeneous_kernel Homogeneous_kernel
Hyperbolic_triangulation_2
Inscribed_areas Inscribed_areas
Installation Installation
Interpolation Interpolation
@ -76,6 +77,7 @@ Partition_2
Periodic_2_triangulation_2 Periodic_2_triangulation_2
Periodic_3_mesh_3 Periodic_3_mesh_3
Periodic_3_triangulation_3 Periodic_3_triangulation_3
Periodic_4_hyperbolic_triangulation_2
Point_set_2 Point_set_2
Point_set_3 Point_set_3
Point_set_processing_3 Point_set_processing_3
@ -123,6 +125,7 @@ Surface_mesh_skeletonization
Surface_sweep_2 Surface_sweep_2
TDS_2 TDS_2
TDS_3 TDS_3
TestPackage
Testsuite Testsuite
Three Three
Triangulation Triangulation

View File

@ -11,23 +11,24 @@ compiler: clang
install: install:
- echo "$PWD" - echo "$PWD"
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$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 - if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$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
- bash .travis/install.sh - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh
- export CXX=clang++ CC=clang; - export CXX=clang++ CC=clang;
before_script: before_script:
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
- sudo mv doxygen_exe /usr/bin/doxygen - sudo mv doxygen_exe /usr/bin/doxygen
- sudo chmod +x /usr/bin/doxygen - sudo chmod +x /usr/bin/doxygen
- mkdir -p build - mkdir -p build
- cd build - cd build
- cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON .. - /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- make - /usr/bin/time -f 'Spend time of %C -- %E (real)' make
- sudo make install &>/dev/null - /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null
- cd .. - cd ..
script: script:
- cd ./.travis - cd ./.travis
- bash ./build_package.sh $PACKAGE - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE
notifications: notifications:
email: email:
on_success: change # default: always on_success: change
on_failure: always # default: always # default: always
on_failure: always
# default: always

View File

@ -9,7 +9,7 @@ if [ ! -f "$2/package_info/$2/dependencies" ];then
echo "No dependencies found for $2" echo "No dependencies found for $2"
exit 1 exit 1
fi fi
LIST_OF_FILES=$(git diff --name-only origin/master |cut -d/ -f1 |uniq |sort) LIST_OF_FILES=$(git diff --name-only origin/master... |cut -d/ -f1 |uniq |sort)
LIST_OF_DEPS=$(cat "$2/package_info/$2/dependencies") LIST_OF_DEPS=$(cat "$2/package_info/$2/dependencies")
echo "$LIST_OF_DEPS" echo "$LIST_OF_DEPS"
for flie in $LIST_OF_DEPS for flie in $LIST_OF_DEPS

View File

@ -22,17 +22,17 @@
\cgalClassifedRefPages \cgalClassifedRefPages
## Concepts ## \cgalCRPSection{Concepts}
- `AABBPrimitive` - `AABBPrimitive`
- `AABBPrimitiveWithSharedData` - `AABBPrimitiveWithSharedData`
- `AABBTraits` - `AABBTraits`
- `AABBGeomTraits` - `AABBGeomTraits`
## Classes ## \cgalCRPSection{Classes}
- `CGAL::AABB_traits<GeomTraits,Primitive>` - `CGAL::AABB_traits<GeomTraits,Primitive>`
- `CGAL::AABB_tree<AT>` - `CGAL::AABB_tree<AT>`
## Primitives ## \cgalCRPSection{Primitives}
- `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>` - `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>` - `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>` - `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>`

View File

@ -64,7 +64,7 @@ void surface_mesh_cache_bbox(const char* fname)
t.start(); t.start();
Bbox_pmap bb = tmesh.add_property_map<face_descriptor,Bbox_3>("f:bbox",Bbox_3()).first; Bbox_pmap bb = tmesh.add_property_map<face_descriptor,Bbox_3>("f:bbox",Bbox_3()).first;
BOOST_FOREACH(face_descriptor fd, faces(tmesh)){ for(face_descriptor fd : faces(tmesh)){
put(bb, fd, bbox(fd,tmesh)); put(bb, fd, bbox(fd,tmesh));
} }
Traits traits(bb); Traits traits(bb);

View File

@ -51,7 +51,7 @@ int main(int argc, char* argv[])
double d = CGAL::Polygon_mesh_processing::is_outward_oriented(mesh)?-1:1; double d = CGAL::Polygon_mesh_processing::is_outward_oriented(mesh)?-1:1;
BOOST_FOREACH(face_descriptor fd, faces(mesh)){ for(face_descriptor fd : faces(mesh)){
halfedge_descriptor hd = halfedge(fd,mesh); halfedge_descriptor hd = halfedge(fd,mesh);
Point p = CGAL::centroid(mesh.point(source(hd,mesh)), Point p = CGAL::centroid(mesh.point(source(hd,mesh)),
mesh.point(target(hd,mesh)), mesh.point(target(hd,mesh)),

View File

@ -60,41 +60,10 @@ template <class Primitive>
struct AABB_traits_base<Primitive,true>{ struct AABB_traits_base<Primitive,true>{
typename Primitive::Shared_data m_primitive_data; typename Primitive::Shared_data m_primitive_data;
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template <typename ... T> template <typename ... T>
void set_shared_data(T&& ... t){ void set_shared_data(T&& ... t){
m_primitive_data=Primitive::construct_shared_data(std::forward<T>(t)...); m_primitive_data=Primitive::construct_shared_data(std::forward<T>(t)...);
} }
#else
void set_shared_data(){
m_primitive_data=Primitive::construct_shared_data();
}
template <class T1>
void set_shared_data(T1& t1){
m_primitive_data=Primitive::construct_shared_data(t1);
}
template <class T1,class T2>
void set_shared_data(T1& t1, T2& t2){
m_primitive_data=Primitive::construct_shared_data(t1,t2);
}
template <class T1,class T2,class T3>
void set_shared_data(T1& t1,T2& t2,T3& t3){
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3);
}
template <class T1,class T2,class T3,class T4>
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4){
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3,t4);
}
template <class T1,class T2,class T3,class T4,class T5>
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5){
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3,t4,t5);
}
#endif
const typename Primitive::Shared_data& shared_data() const {return m_primitive_data;} const typename Primitive::Shared_data& shared_data() const {return m_primitive_data;}
}; };
@ -396,20 +365,6 @@ public:
public: public:
Intersection(const AABB_traits<GeomTraits,AABBPrimitive,BboxMap>& traits) Intersection(const AABB_traits<GeomTraits,AABBPrimitive,BboxMap>& traits)
:m_traits(traits) {} :m_traits(traits) {}
#if CGAL_INTERSECTION_VERSION < 2
template<typename Query>
boost::optional<typename AT::Object_and_primitive_id>
operator()(const Query& query, const typename AT::Primitive& primitive) const
{
typedef boost::optional<Object_and_primitive_id> Intersection;
CGAL::Object object = GeomTraits().intersect_3_object()(internal::Primitive_helper<AT>::get_datum(primitive,m_traits),query);
if ( object.empty() )
return Intersection();
else
return Intersection(Object_and_primitive_id(object,primitive.id()));
}
#else
template<typename Query> template<typename Query>
boost::optional< typename Intersection_and_primitive_id<Query>::Type > boost::optional< typename Intersection_and_primitive_id<Query>::Type >
operator()(const Query& query, const typename AT::Primitive& primitive) const { operator()(const Query& query, const typename AT::Primitive& primitive) const {
@ -419,7 +374,6 @@ public:
return boost::none; return boost::none;
return boost::make_optional( std::make_pair(*inter_res, primitive.id()) ); return boost::make_optional( std::make_pair(*inter_res, primitive.id()) );
} }
#endif
}; };
Intersection intersection_object() const {return Intersection(*this);} Intersection intersection_object() const {return Intersection(*this);}

View File

@ -126,27 +126,10 @@ namespace CGAL {
* @param beyond past-the-end iterator * @param beyond past-the-end iterator
* *
* It is equivalent to constructing an empty tree and calling `insert(first,last,t...)`. * It is equivalent to constructing an empty tree and calling `insert(first,last,t...)`.
* For compilers that do not support variadic templates, overloads up to
* 5 template arguments are provided.
* The tree stays empty if the memory allocation is not successful. * The tree stays empty if the memory allocation is not successful.
*/ */
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template<typename InputIterator,typename ... T> template<typename InputIterator,typename ... T>
AABB_tree(InputIterator first, InputIterator beyond,T&& ...); AABB_tree(InputIterator first, InputIterator beyond,T&& ...);
#else
template<typename InputIterator>
AABB_tree(InputIterator first, InputIterator beyond);
template<typename InputIterator, typename T1>
AABB_tree(InputIterator first, InputIterator beyond, T1&);
template<typename InputIterator, typename T1, typename T2>
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&);
template<typename InputIterator, typename T1, typename T2, typename T3>
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&);
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4>
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&);
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&,T5&);
#endif
/// After one or more calls to `insert()` the internal data /// After one or more calls to `insert()` the internal data
/// structure of the tree must be reconstructed. This procedure /// structure of the tree must be reconstructed. This procedure
@ -158,26 +141,10 @@ namespace CGAL {
/// data structure. /// data structure.
/// A call to `AABBTraits::set_shared_data(t...)` /// A call to `AABBTraits::set_shared_data(t...)`
/// is made using the internally stored traits. /// is made using the internally stored traits.
/// For compilers that do not support variadic templates,
/// overloads up to 5 template arguments are provided.
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template<typename ... T> template<typename ... T>
void build(T&& ...); void build(T&& ...);
#ifndef DOXYGEN_RUNNING #ifndef DOXYGEN_RUNNING
void build(); void build();
#endif
#else
void build();
template<typename T1>
void build(T1& t1);
template<typename T1, typename T2>
void build(T1& t1, T2& t2);
template<typename T1, typename T2,typename T3>
void build(T1& t1, T2& t2, T3& t3);
template<typename T1, typename T2,typename T3,typename T4>
void build(T1& t1, T2& t2, T3& t3, T4& t4);
template<typename T1, typename T2,typename T3,typename T4,typename T5>
void build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5);
#endif #endif
///@} ///@}
@ -185,25 +152,8 @@ namespace CGAL {
///@{ ///@{
/// Equivalent to calling `clear()` and then `insert(first,last,t...)`. /// Equivalent to calling `clear()` and then `insert(first,last,t...)`.
/// For compilers that do not support variadic templates, overloads up
/// to 5 template arguments are provided.
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template<typename ConstPrimitiveIterator,typename ... T> template<typename ConstPrimitiveIterator,typename ... T>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T&& ...); void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T&& ...);
#else
template<typename ConstPrimitiveIterator>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond);
template<typename ConstPrimitiveIterator, typename T1>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond, T1&);
template<typename ConstPrimitiveIterator, typename T1, typename T2>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&);
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&);
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&,T4&);
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&,T4&,T5&);
#endif
/// Add a sequence of primitives to the set of primitives of the AABB tree. /// Add a sequence of primitives to the set of primitives of the AABB tree.
@ -212,25 +162,8 @@ namespace CGAL {
/// `Primitive(%InputIterator, T...)`. If `Primitive` is a model of the concept /// `Primitive(%InputIterator, T...)`. If `Primitive` is a model of the concept
/// `AABBPrimitiveWithSharedData`, a call to `AABBTraits::set_shared_data(t...)` /// `AABBPrimitiveWithSharedData`, a call to `AABBTraits::set_shared_data(t...)`
/// is made using the internally stored traits. /// is made using the internally stored traits.
/// For compilers that do not support variadic templates,
/// overloads up to 5 template arguments are provided.
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template<typename InputIterator,typename ... T> template<typename InputIterator,typename ... T>
void insert(InputIterator first, InputIterator beyond,T&& ...); void insert(InputIterator first, InputIterator beyond,T&& ...);
#else
template<typename InputIterator>
void insert(InputIterator first, InputIterator beyond);
template<typename InputIterator, typename T1>
void insert(InputIterator first, InputIterator beyond,T1&);
template<typename InputIterator, typename T1, typename T2>
void insert(InputIterator first, InputIterator beyond,T1&, T2&);
template<typename InputIterator, typename T1, typename T2, typename T3>
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&);
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4>
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&);
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&,T5&);
#endif
/// Adds a primitive to the set of primitives of the tree. /// Adds a primitive to the set of primitives of the tree.
inline void insert(const Primitive& p); inline void insert(const Primitive& p);
@ -274,7 +207,6 @@ namespace CGAL {
///@} ///@}
private: private:
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template <typename ... T> template <typename ... T>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T ... ){} void set_primitive_data_impl(CGAL::Boolean_tag<false>,T ... ){}
template <typename ... T> template <typename ... T>
@ -285,64 +217,6 @@ namespace CGAL {
void set_shared_data(T&& ...t){ void set_shared_data(T&& ...t){
set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),std::forward<T>(t)...); set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),std::forward<T>(t)...);
} }
#else
void set_primitive_data_impl(CGAL::Boolean_tag<false>){}
void set_primitive_data_impl(CGAL::Boolean_tag<true>)
{m_traits.set_shared_data();}
void set_shared_data(){
set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>());
}
template <typename T1>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1){}
template <typename T1>
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1)
{m_traits.set_shared_data(t1);}
template <typename T1>
void set_shared_data(T1& t1){
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1);
}
template <typename T1, typename T2>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2){}
template <typename T1, typename T2>
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2)
{m_traits.set_shared_data(t1,t2);}
template <typename T1, typename T2>
void set_shared_data(const T1& t1,const T2& t2){
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2);
}
template <typename T1, typename T2, typename T3>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3){}
template <typename T1, typename T2, typename T3>
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3)
{m_traits.set_shared_data(t1,t2,t3);}
template <typename T1, typename T2, typename T3>
void set_shared_data(T1& t1,T2& t2,T3& t3){
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3);
}
template <typename T1, typename T2, typename T3, typename T4>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3,T4){}
template <typename T1, typename T2, typename T3, typename T4>
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3,T4& t4)
{m_traits.set_shared_data(t1,t2,t3,t4);}
template <typename T1, typename T2, typename T3, typename T4>
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4){
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3,t4);
}
template <typename T1, typename T2, typename T3, typename T4, typename T5>
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3,T4,T5){}
template <typename T1, typename T2, typename T3, typename T4, typename T5>
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
{m_traits.set_shared_data(t1,t2,t3,t4,t5);}
template <typename T1, typename T2, typename T3, typename T4, typename T5>
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5){
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3,t4,t5);
}
#endif
bool build_kd_tree() const; bool build_kd_tree() const;
template<typename ConstPointIterator> template<typename ConstPointIterator>
@ -410,11 +284,7 @@ public:
/// for which `do_intersect` predicates /// for which `do_intersect` predicates
/// and intersections are defined in the traits class AABBTraits. /// and intersections are defined in the traits class AABBTraits.
template <typename Query> template <typename Query>
#if CGAL_INTERSECTION_VERSION < 2 && !defined(DOXYGEN_RUNNING)
boost::optional<Object_and_primitive_id>
#else
boost::optional< typename Intersection_and_primitive_id<Query>::Type > boost::optional< typename Intersection_and_primitive_id<Query>::Type >
#endif
any_intersection(const Query& query) const; any_intersection(const Query& query) const;
@ -429,6 +299,12 @@ public:
/// that returns `true` in order to skip the primitive. /// that returns `true` in order to skip the primitive.
/// Defaults to a functor that always returns `false`. /// Defaults to a functor that always returns `false`.
/// ///
/// \note `skip` might be given some primitives that are not intersected by `query`
/// because the intersection test is done after the skip test. Also note that
/// the order the primitives are given to `skip` is not necessarily the
/// intersection order with `query`.
///
///
/// `AABBTraits` must be a model of `AABBRayIntersectionTraits` to /// `AABBTraits` must be a model of `AABBRayIntersectionTraits` to
/// call this member function. /// call this member function.
template<typename Ray, typename SkipFunctor> template<typename Ray, typename SkipFunctor>
@ -738,7 +614,6 @@ public:
, m_need_build(false) , m_need_build(false)
{} {}
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
template<typename Tr> template<typename Tr>
template<typename ConstPrimitiveIterator, typename ... T> template<typename ConstPrimitiveIterator, typename ... T>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first, AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
@ -794,324 +669,6 @@ public:
set_shared_data(std::forward<T>(t)...); set_shared_data(std::forward<T>(t)...);
build(); build();
} }
#else
//=============constructor======================
template<typename Tr>
template<typename ConstPrimitiveIterator>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond);
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond,t1);
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond,t1,t2);
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond,t1,t2,t3);
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond,t1,t2,t3,t4);
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
: m_traits()
, m_primitives()
, m_p_root_node(NULL)
, m_p_search_tree(NULL)
, m_search_tree_constructed(false)
, m_default_search_tree_constructed(false)
, m_need_build(false)
{
// Insert each primitive into tree
insert(first, beyond,t1,t2,t3,t4,t5);
}
//=============insert======================
template<typename Tr>
template<typename ConstPrimitiveIterator>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond)
{
set_shared_data();
while(first != beyond)
{
m_primitives.push_back(Primitive(first));
++first;
}
m_need_build = true;
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1)
{
set_shared_data(t1);
while(first != beyond)
{
m_primitives.push_back(Primitive(first,t1));
++first;
}
m_need_build = true;
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1, T2& t2)
{
set_shared_data(t1,t2);
while(first != beyond)
{
m_primitives.push_back(Primitive(first,t1,t2));
++first;
}
m_need_build = true;
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3)
{
set_shared_data(t1,t2,t3);
while(first != beyond)
{
m_primitives.push_back(Primitive(first,t1,t2,t3));
++first;
}
m_need_build = true;
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4)
{
set_shared_data(t1,t2,t3,t4);
while(first != beyond)
{
m_primitives.push_back(Primitive(first,t1,t2,t3,t4));
++first;
}
m_need_build = true;
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
{
set_shared_data(t1,t2,t3,t4,t5);
while(first != beyond)
{
m_primitives.push_back(Primitive(first,t1,t2,t3,t4,t5));
++first;
}
m_need_build = true;
}
//=============rebuild======================
template<typename Tr>
template<typename ConstPrimitiveIterator>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond);
build();
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond,t1);
build();
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1, T2& t2)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond,t1,t2);
build();
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond,t1,t2,t3);
build();
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond,t1,t2,t3,t4);
build();
}
template<typename Tr>
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
ConstPrimitiveIterator beyond,
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
{
// cleanup current tree and internal KD tree
clear();
// inserts primitives
insert(first, beyond,t1,t2,t3,t4,t5);
build();
}
//overloads calling set_shared_data()
template<typename Tr>
template<typename T1>
void AABB_tree<Tr>::build(T1& t1)
{
set_shared_data(t1);
build();
}
template<typename Tr>
template<typename T1, typename T2>
void AABB_tree<Tr>::build(T1& t1, T2& t2)
{
set_shared_data(t1, t2);
build();
}
template<typename Tr>
template<typename T1, typename T2, typename T3>
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3)
{
set_shared_data(t1, t2, t3);
build();
}
template<typename Tr>
template<typename T1, typename T2, typename T3, typename T4>
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4)
{
set_shared_data(t1, t2, t3, t4);
build();
}
template<typename Tr>
template<typename T1, typename T2, typename T3, typename T4, typename T5>
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5)
{
set_shared_data(t1, t2, t3, t4, t5);
build();
}
#endif
template<typename Tr> template<typename Tr>
void AABB_tree<Tr>::insert(const Primitive& p) void AABB_tree<Tr>::insert(const Primitive& p)
@ -1285,11 +842,7 @@ public:
template <typename Tr> template <typename Tr>
template <typename Query> template <typename Query>
#if CGAL_INTERSECTION_VERSION < 2
boost::optional<typename AABB_tree<Tr>::Object_and_primitive_id>
#else
boost::optional< typename AABB_tree<Tr>::template Intersection_and_primitive_id<Query>::Type > boost::optional< typename AABB_tree<Tr>::template Intersection_and_primitive_id<Query>::Type >
#endif
AABB_tree<Tr>::any_intersection(const Query& query) const AABB_tree<Tr>::any_intersection(const Query& query) const
{ {
using namespace CGAL::internal::AABB_tree; using namespace CGAL::internal::AABB_tree;

View File

@ -0,0 +1,105 @@
// Copyright (c) 2017 GeometryFactory (France).
// 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
// 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$
// SPDX-License-Identifier: GPL-3.0+
//
//
// Author : Jane Tournois
//
#ifndef CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_
#define CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_
#include <CGAL/license/AABB_tree.h>
#include <CGAL/AABB_primitive.h>
#include <CGAL/result_of.h>
#include <iterator>
namespace CGAL
{
namespace internal
{
template <class GeomTraits, class Iterator>
struct Point_from_cell_iterator_proprety_map
{
//classical typedefs
typedef Iterator key_type;
typedef typename GeomTraits::Point_3 value_type;
typedef typename cpp11::result_of<
typename GeomTraits::Construct_vertex_3(typename GeomTraits::Tetrahedron_3, int)
>::type reference;
typedef boost::readable_property_map_tag category;
inline friend
typename Point_from_cell_iterator_proprety_map<GeomTraits, Iterator>::reference
get(Point_from_cell_iterator_proprety_map<GeomTraits, Iterator>, Iterator it)
{
typename GeomTraits::Construct_point_3 point;
return point(it->vertex(1)->point());
}
};
template <class GeomTraits, class Iterator>
struct Tet_from_cell_iterator_proprety_map
{
//classical typedefs
typedef Iterator key_type;
typedef typename GeomTraits::Tetrahedron_3 value_type;
typedef value_type reference;
typedef boost::readable_property_map_tag category;
inline friend
reference
get(Tet_from_cell_iterator_proprety_map<GeomTraits, Iterator>, key_type it)
{
typename GeomTraits::Construct_point_3 point;
return value_type(point(it->vertex(0)->point()),
point(it->vertex(1)->point()),
point(it->vertex(2)->point()),
point(it->vertex(3)->point()));
}
};
}//namespace internal
template < class GeomTraits,
class Tr,
class CacheDatum = Tag_false,
class Handle = typename Tr::Cell_handle>
class AABB_triangulation_3_cell_primitive
#ifndef DOXYGEN_RUNNING
: public AABB_primitive< Handle,
internal::Tet_from_cell_iterator_proprety_map<GeomTraits, Handle>,
internal::Point_from_cell_iterator_proprety_map<GeomTraits, Handle>,
Tag_false,
CacheDatum >
#endif
{
typedef AABB_primitive< Handle,
internal::Tet_from_cell_iterator_proprety_map<GeomTraits, Handle>,
internal::Point_from_cell_iterator_proprety_map<GeomTraits, Handle>,
Tag_false,
CacheDatum > Base;
public:
AABB_triangulation_3_cell_primitive(Handle h) : Base(h){} };
} // end namespace CGAL
#endif // CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_

View File

@ -188,7 +188,14 @@ private:
struct as_ray_param_visitor { struct as_ray_param_visitor {
typedef FT result_type; typedef FT result_type;
as_ray_param_visitor(const Ray* ray) : ray(ray) {} as_ray_param_visitor(const Ray* ray)
: ray(ray), max_i(0)
{
typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector();
for (int i=1; i<3; ++i)
if( CGAL::abs(v[i]) > CGAL::abs(v[max_i]) )
max_i = i;
}
template<typename T> template<typename T>
FT operator()(const T& s) FT operator()(const T& s)
@ -204,16 +211,11 @@ private:
typename AABB_traits::Geom_traits::Vector_3 x(ray->source(), point); typename AABB_traits::Geom_traits::Vector_3 x(ray->source(), point);
typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector(); typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector();
for(int i = 0; i < 3; ++i) { return x[max_i] / v[max_i];
if(v[i] != FT(0.)) {
return x[i] / v[i];
}
}
CGAL_assertion(false); // should never end-up here
return FT(0.);
} }
const Ray* ray; const Ray* ray;
int max_i;
}; };
}; };

View File

@ -65,6 +65,7 @@ namespace CGAL
m_id = rhs.m_id; m_id = rhs.m_id;
} }
Decorated_point& operator=(const Decorated_point&)=default;
private: private:
Id m_id; Id m_id;

View File

@ -78,11 +78,7 @@ class First_intersection_traits
public: public:
typedef typedef
#if CGAL_INTERSECTION_VERSION < 2
boost::optional<Object_and_primitive_id>
#else
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type > boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
#endif
Result; Result;
public: public:
First_intersection_traits(const AABBTraits& traits) First_intersection_traits(const AABBTraits& traits)
@ -137,11 +133,7 @@ public:
void intersection(const Query& query, const Primitive& primitive) void intersection(const Query& query, const Primitive& primitive)
{ {
#if CGAL_INTERSECTION_VERSION < 2
boost::optional<Object_and_primitive_id>
#else
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type > boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
#endif
intersection = m_traits.intersection_object()(query, primitive); intersection = m_traits.intersection_object()(query, primitive);
if(intersection) if(intersection)

View File

@ -30,6 +30,7 @@
#include <CGAL/AABB_face_graph_triangle_primitive.h> #include <CGAL/AABB_face_graph_triangle_primitive.h>
#include <CGAL/AABB_halfedge_graph_segment_primitive.h> #include <CGAL/AABB_halfedge_graph_segment_primitive.h>
#include <CGAL/Polyhedron_3.h> #include <CGAL/Polyhedron_3.h>
#include <CGAL/Timer.h>
#include <CGAL/disable_warnings.h> #include <CGAL/disable_warnings.h>
@ -103,17 +104,9 @@ void test_all_intersection_query_types(Tree& tree)
tree.all_intersected_primitives(segment,std::back_inserter(primitives)); tree.all_intersected_primitives(segment,std::back_inserter(primitives));
// any_intersection // any_intersection
#if CGAL_INTERSECTION_VERSION < 2
typedef typename Tree::Object_and_primitive_id Object_and_primitive_id;
boost::optional<Object_and_primitive_id> optional_object_and_primitive;
optional_object_and_primitive = tree.any_intersection(ray);
optional_object_and_primitive = tree.any_intersection(line);
optional_object_and_primitive = tree.any_intersection(segment);
#else
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > r = tree.any_intersection(ray); boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > r = tree.any_intersection(ray);
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > l = tree.any_intersection(line); boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > l = tree.any_intersection(line);
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > s = tree.any_intersection(segment); boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > s = tree.any_intersection(segment);
#endif
// any_intersected_primitive // any_intersected_primitive
boost::optional<typename Primitive::Id> optional_primitive; boost::optional<typename Primitive::Id> optional_primitive;
@ -122,19 +115,12 @@ void test_all_intersection_query_types(Tree& tree)
optional_primitive = tree.any_intersected_primitive(segment); optional_primitive = tree.any_intersected_primitive(segment);
// all_intersections // all_intersections
#if CGAL_INTERSECTION_VERSION < 2
std::list<Object_and_primitive_id> intersections;
tree.all_intersections(ray,std::back_inserter(intersections));
tree.all_intersections(line,std::back_inserter(intersections));
tree.all_intersections(segment,std::back_inserter(intersections));
#else
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > > intersections_r; std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > > intersections_r;
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > > intersections_l; std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > > intersections_l;
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > > intersections_s; std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > > intersections_s;
tree.all_intersections(ray,std::back_inserter(intersections_r)); tree.all_intersections(ray,std::back_inserter(intersections_r));
tree.all_intersections(line,std::back_inserter(intersections_l)); tree.all_intersections(line,std::back_inserter(intersections_l));
tree.all_intersections(segment,std::back_inserter(intersections_s)); tree.all_intersections(segment,std::back_inserter(intersections_s));
#endif
} }
@ -403,13 +389,8 @@ public:
Polyhedron_primitive_iterator it = Pr_generator().begin(p); Polyhedron_primitive_iterator it = Pr_generator().begin(p);
for ( ; it != Pr_generator().end(p) ; ++it ) for ( ; it != Pr_generator().end(p) ; ++it )
{ {
#if CGAL_INTERSECTION_VERSION < 2
Intersection_result
intersection = Traits().intersection_object()(query, Pr(it,p));
#else
boost::optional< typename Traits::template Intersection_and_primitive_id<Query>::Type > boost::optional< typename Traits::template Intersection_and_primitive_id<Query>::Type >
intersection = m_traits.intersection_object()(query, Pr(it,p)); intersection = m_traits.intersection_object()(query, Pr(it,p));
#endif
if ( intersection ) if ( intersection )
*out++ = *intersection; *out++ = *intersection;
} }
@ -716,11 +697,7 @@ private:
const Naive_implementation& naive) const const Naive_implementation& naive) const
{ {
typedef typedef
#if CGAL_INTERSECTION_VERSION < 2
Object_and_primitive_id
#else
typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type
#endif
Obj_type; Obj_type;
typedef typedef
@ -758,11 +735,7 @@ private:
} }
// Any intersection test (do not count time here) // Any intersection test (do not count time here)
#if CGAL_INTERSECTION_VERSION < 2
boost::optional<Object_and_primitive_id>
#else
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type > boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type >
#endif
intersection = tree.any_intersection(query); intersection = tree.any_intersection(query);
// Check: verify we do get the result by naive method // Check: verify we do get the result by naive method

View File

@ -1,5 +1,3 @@
#define CGAL_INTERSECTION_VERSION 2
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <algorithm> #include <algorithm>
@ -40,11 +38,7 @@ struct FilterP {
template<typename ForwardIterator, typename Tree> template<typename ForwardIterator, typename Tree>
std::size_t intersect(ForwardIterator b, ForwardIterator e, const Tree& tree, long& counter) { std::size_t intersect(ForwardIterator b, ForwardIterator e, const Tree& tree, long& counter) {
typedef typedef
#if CGAL_INTERSECTION_VERSION < 2
typename Tree::Object_and_primitive_id
#else
typename Tree::AABB_traits::template Intersection_and_primitive_id<typename ForwardIterator::value_type>::Type typename Tree::AABB_traits::template Intersection_and_primitive_id<typename ForwardIterator::value_type>::Type
#endif
Obj_type; Obj_type;
std::vector<Obj_type> v; std::vector<Obj_type> v;
@ -84,7 +78,7 @@ boost::tuple<std::size_t, std::size_t, std::size_t, long> test(const char* name)
std::vector<Point> points; std::vector<Point> points;
points.reserve(elements * 2); points.reserve(elements * 2);
CGAL::cpp11::copy_n(g, elements * 2, std::back_inserter(points)); std::copy_n(g, elements * 2, std::back_inserter(points));
// generate a bunch of happy random primitives // generate a bunch of happy random primitives
std::vector<Line> lines; std::vector<Line> lines;

View File

@ -26,9 +26,6 @@
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <CGAL/Timer.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>

View File

@ -25,10 +25,8 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <CGAL/Timer.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h> #include <CGAL/AABB_tree.h>

View File

@ -28,14 +28,12 @@
#include <CGAL/Timer.h> #include <CGAL/Timer.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h> #include <CGAL/AABB_tree.h>
#include <CGAL/AABB_traits.h> #include <CGAL/AABB_traits.h>
#include <CGAL/Polyhedron_3.h> #include <CGAL/Polyhedron_3.h>
#include <CGAL/spatial_sort.h> #include <CGAL/spatial_sort.h>
#include "AABB_test_util.h" #include "AABB_test_util.h"

View File

@ -24,8 +24,6 @@
// //
//****************************************************************************** //******************************************************************************
#define CGAL_INTERSECTION_VERSION 1
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>

View File

@ -24,8 +24,6 @@
// //
//****************************************************************************** //******************************************************************************
#define CGAL_INTERSECTION_VERSION 2
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>

View File

@ -109,8 +109,8 @@ int main()
const double r = max_extent / 2; const double r = max_extent / 2;
// Generate NB_RAYS*2 points that lie on a sphere of radius r, centered around bbox_center // Generate NB_RAYS*2 points that lie on a sphere of radius r, centered around bbox_center
CGAL::Random rand = CGAL::Random(23); // fix the seed to yield the same results each run CGAL::Random rand = CGAL::Random(23); // fix the seed to yield the same results each run
CGAL::cpp11::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v1)); std::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v1));
CGAL::cpp11::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v2)); std::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v2));
for(std::vector<Point>::iterator it = v1.begin(); it != v1.end(); ++it) { for(std::vector<Point>::iterator it = v1.begin(); it != v1.end(); ++it) {
*it = *it + bbox_center; *it = *it + bbox_center;

View File

@ -25,13 +25,13 @@ of topological singularities. }
\cgalClassifedRefPages \cgalClassifedRefPages
## Classes ## \cgalCRPSection{Classes}
- `CGAL::Advancing_front_surface_reconstruction` - `CGAL::Advancing_front_surface_reconstruction`
- `CGAL::Advancing_front_surface_reconstruction_vertex_base_3` - `CGAL::Advancing_front_surface_reconstruction_vertex_base_3`
- `CGAL::Advancing_front_surface_reconstruction_cell_base_3` - `CGAL::Advancing_front_surface_reconstruction_cell_base_3`
## Functions ## \cgalCRPSection{Functions}
- `CGAL::advancing_front_surface_reconstruction()` - `CGAL::advancing_front_surface_reconstruction()`

View File

@ -10,10 +10,6 @@ find_package(CGAL QUIET)
if ( CGAL_FOUND ) if ( CGAL_FOUND )
if (MSVC AND ( CMAKE_SIZEOF_VOID_P EQUAL 4 ) )
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244")
endif()
# create a target per cppfile # create a target per cppfile
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
foreach(cppfile ${cppfiles}) foreach(cppfile ${cppfiles})

View File

@ -2,7 +2,6 @@
#include <iostream> #include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Advancing_front_surface_reconstruction.h> #include <CGAL/Advancing_front_surface_reconstruction.h>
#include <boost/foreach.hpp>
struct Perimeter { struct Perimeter {
@ -64,15 +63,15 @@ int main(int argc, char* argv[])
reconstruction.run(); reconstruction.run();
std::cout << reconstruction.number_of_outliers() << " outliers:\n" << std::endl; std::cout << reconstruction.number_of_outliers() << " outliers:\n" << std::endl;
BOOST_FOREACH(const Point_3& p, reconstruction.outliers()){ for(const Point_3& p : reconstruction.outliers()){
std::cout << p << std::endl; std::cout << p << std::endl;
} }
std::cout << "Boundaries:" << std::endl ; std::cout << "Boundaries:" << std::endl ;
BOOST_FOREACH(const Vertex_on_boundary_range & vobr, reconstruction.boundaries()){ for(const Vertex_on_boundary_range& vobr : reconstruction.boundaries()){
std::cout << "boundary\n"; std::cout << "boundary\n";
// As we use BOOST_FOREACH we do not use the type Boundary_range // As we use range-base loop we do not use the type Boundary_range
BOOST_FOREACH(Vertex_handle v, vobr){ for(Vertex_handle v : vobr){
std::cout << v->point() << std::endl; std::cout << v->point() << std::endl;
} }
} }

View File

@ -9,7 +9,7 @@
typedef CGAL::Simple_cartesian<double> K; typedef CGAL::Simple_cartesian<double> K;
typedef K::Point_3 Point_3; typedef K::Point_3 Point_3;
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
namespace std { namespace std {
std::ostream& std::ostream&

View File

@ -37,7 +37,7 @@ typedef CGAL::Triangulation_data_structure_3<LVb,LCb> Tds;
typedef CGAL::Delaunay_triangulation_3<Kernel,Tds> Triangulation_3; typedef CGAL::Delaunay_triangulation_3<Kernel,Tds> Triangulation_3;
typedef Triangulation_3::Vertex_handle Vertex_handle; typedef Triangulation_3::Vertex_handle Vertex_handle;
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
// Functor to init the advancing front algorithm with indexed points // Functor to init the advancing front algorithm with indexed points

View File

@ -7,7 +7,7 @@
#include <CGAL/array.h> #include <CGAL/array.h>
#include <CGAL/disable_warnings.h> #include <CGAL/disable_warnings.h>
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_3 Point_3; typedef Kernel::Point_3 Point_3;

View File

@ -2488,7 +2488,7 @@ namespace CGAL {
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must \tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`. be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
\tparam IndicesOutputIterator must be an output iterator to which \tparam IndicesOutputIterator must be an output iterator to which
`CGAL::cpp11::array<std::size_t, 3>` can be assigned. `std::array<std::size_t, 3>` can be assigned.
\param b iterator on the first point of the sequence \param b iterator on the first point of the sequence
\param e past the end iterator of the point sequence \param e past the end iterator of the point sequence
@ -2540,7 +2540,7 @@ namespace CGAL {
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must \tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`. be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
\tparam IndicesOutputIterator must be an output iterator to which \tparam IndicesOutputIterator must be an output iterator to which
`CGAL::cpp11::array<std::size_t, 3>` can be assigned. `std::array<std::size_t, 3>` can be assigned.
\tparam Priority must be a functor with `double operator()(AdvancingFront,Cell_handle,int)` returning the \tparam Priority must be a functor with `double operator()(AdvancingFront,Cell_handle,int)` returning the
priority of the facet `(Cell_handle,int)`. priority of the facet `(Cell_handle,int)`.

View File

@ -9,7 +9,7 @@
typedef CGAL::Simple_cartesian<double> K; typedef CGAL::Simple_cartesian<double> K;
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
namespace std { namespace std {
std::ostream& std::ostream&

View File

@ -8,7 +8,7 @@
typedef CGAL::Simple_cartesian<double> K; typedef CGAL::Simple_cartesian<double> K;
typedef K::Point_3 Point_3; typedef K::Point_3 Point_3;
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
namespace std { namespace std {
std::ostream& std::ostream&

View File

@ -12,7 +12,7 @@ typedef K::Point_3 Point_3;
typedef CGAL::Polyhedron_3<K> Polyhedron; typedef CGAL::Polyhedron_3<K> Polyhedron;
typedef CGAL::cpp11::array<std::size_t,3> Facet; typedef std::array<std::size_t,3> Facet;
namespace std { namespace std {
std::ostream& std::ostream&

View File

@ -23,9 +23,9 @@
\cgalClassifedRefPages \cgalClassifedRefPages
## Algebraic Structures ## \cgalCRPSection{Algebraic Structures}
### Concepts ### \cgalCRPSubsection{Concepts}
- `IntegralDomainWithoutDivision` - `IntegralDomainWithoutDivision`
- `IntegralDomain` - `IntegralDomain`
@ -54,7 +54,7 @@
- `AlgebraicStructureTraits_::KthRoot` - `AlgebraicStructureTraits_::KthRoot`
- `AlgebraicStructureTraits_::RootOf` - `AlgebraicStructureTraits_::RootOf`
### Classes ### \cgalCRPSubsection{Classes}
- `CGAL::Algebraic_structure_traits<T>` - `CGAL::Algebraic_structure_traits<T>`
- `CGAL::Integral_domain_without_division_tag` - `CGAL::Integral_domain_without_division_tag`
@ -64,7 +64,7 @@
- `CGAL::Unique_factorization_domain_tag` - `CGAL::Unique_factorization_domain_tag`
- `CGAL::Euclidean_ring_tag` - `CGAL::Euclidean_ring_tag`
### Global Functions ### \cgalCRPSubsection{Global Functions}
- `CGAL::is_zero()` - `CGAL::is_zero()`
- `CGAL::is_one()` - `CGAL::is_one()`
@ -82,9 +82,9 @@
- `CGAL::kth_root()` - `CGAL::kth_root()`
- `CGAL::root_of()` - `CGAL::root_of()`
## Real Embeddable ## \cgalCRPSection{Real Embeddable}
### Concepts ### \cgalCRPSubsection{Concepts}
- `RealEmbeddable` - `RealEmbeddable`
@ -98,11 +98,11 @@
- `RealEmbeddableTraits_::ToDouble` - `RealEmbeddableTraits_::ToDouble`
- `RealEmbeddableTraits_::ToInterval` - `RealEmbeddableTraits_::ToInterval`
### Classes ### \cgalCRPSubsection{Classes}
- `CGAL::Real_embeddable_traits<T>` - `CGAL::Real_embeddable_traits<T>`
### Global Functions ### \cgalCRPSubsection{Global Functions}
- `CGAL::is_zero()` - `CGAL::is_zero()`
- `CGAL::abs()` - `CGAL::abs()`
@ -113,27 +113,27 @@
- `CGAL::to_double()` - `CGAL::to_double()`
- `CGAL::to_interval()` - `CGAL::to_interval()`
## Real Number Types ## \cgalCRPSection{Real Number Types}
### Concepts ### \cgalCRPSubsection{Concepts}
- `RingNumberType` - `RingNumberType`
- `FieldNumberType` - `FieldNumberType`
## Interoperability ## \cgalCRPSection{Interoperability}
### Concepts ### \cgalCRPSubsection{Concepts}
- `ExplicitInteroperable` - `ExplicitInteroperable`
- `ImplicitInteroperable` - `ImplicitInteroperable`
### Classes ### \cgalCRPSubsection{Classes}
- `CGAL::Coercion_traits<A,B>` - `CGAL::Coercion_traits<A,B>`
## Fractions ## \cgalCRPSection{Fractions}
### Concepts ### \cgalCRPSubsection{Concepts}
- `Fraction` - `Fraction`
- `FractionTraits` - `FractionTraits`
@ -141,13 +141,13 @@
- `FractionTraits_::Compose` - `FractionTraits_::Compose`
- `FractionTraits_::CommonFactor` - `FractionTraits_::CommonFactor`
### Classes ### \cgalCRPSubsection{Classes}
- `CGAL::Fraction_traits<T>` - `CGAL::Fraction_traits<T>`
## Miscellaneous ## \cgalCRPSection{Miscellaneous}
### Concepts ### \cgalCRPSubsection{Concepts}
- `FromIntConstructible` - `FromIntConstructible`
- `FromDoubleConstructible` - `FromDoubleConstructible`

View File

@ -1,6 +1,7 @@
#include <CGAL/basic.h>
#include <CGAL/IO/io.h> #include <CGAL/IO/io.h>
#include <CGAL/Algebraic_structure_traits.h> #include <CGAL/Algebraic_structure_traits.h>
#include <CGAL/number_utils.h>
#include <CGAL/int.h>
template< typename NT > NT unit_part(const NT& x); template< typename NT > NT unit_part(const NT& x);
template< typename NT > template< typename NT >

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Fraction_traits.h> #include <CGAL/Fraction_traits.h>
#include <CGAL/IO/io.h> #include <CGAL/IO/io.h>

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Coercion_traits.h> #include <CGAL/Coercion_traits.h>
#include <CGAL/Quotient.h> #include <CGAL/Quotient.h>
#include <CGAL/Sqrt_extension.h> #include <CGAL/Sqrt_extension.h>

View File

@ -1,7 +1,7 @@
#include <CGAL/basic.h>
#include <CGAL/Fraction_traits.h> #include <CGAL/Fraction_traits.h>
#include <CGAL/IO/io.h> #include <CGAL/IO/io.h>
#include <vector> #include <vector>
#include <CGAL/number_utils.h>
template <class Fraction> template <class Fraction>
std::vector<typename CGAL::Fraction_traits<Fraction>::Numerator_type > std::vector<typename CGAL::Fraction_traits<Fraction>::Numerator_type >

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Coercion_traits.h> #include <CGAL/Coercion_traits.h>
#include <CGAL/IO/io.h> #include <CGAL/IO/io.h>

View File

@ -23,7 +23,7 @@ public:
/*! /*!
*/ */
typedef CGAL::cpp11::array<AlgebraicKernel_d_1::Bound, 4> result_type; typedef std::array<AlgebraicKernel_d_1::Bound, 4> result_type;
/// @} /// @}
@ -31,7 +31,7 @@ typedef CGAL::cpp11::array<AlgebraicKernel_d_1::Bound, 4> result_type;
/// @{ /// @{
/*! /*!
The returned `CGAL::cpp11::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$ The returned `std::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
for \f$ a\f$ with respect to \f$ f\f$. for \f$ a\f$ with respect to \f$ f\f$.
\pre \f$ f(a)\neq0\f$ \pre \f$ f(a)\neq0\f$
\post \f$ a \in B\f$. \post \f$ a \in B\f$.
@ -42,7 +42,7 @@ result_type
operator()( AlgebraicKernel_d_2::Algebraic_real_2 a, AlgebraicKernel_d_2::Polynomial_2 f); operator()( AlgebraicKernel_d_2::Algebraic_real_2 a, AlgebraicKernel_d_2::Polynomial_2 f);
/*! /*!
The returned `CGAL::cpp11::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$ The returned `std::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
for \f$ a\f$ with respect to the common solutions of \f$ f\f$ and \f$ g\f$. for \f$ a\f$ with respect to the common solutions of \f$ f\f$ and \f$ g\f$.
It is not necessary that \f$ a\f$ is a common solution of \f$ f\f$ and \f$ g\f$. It is not necessary that \f$ a\f$ is a common solution of \f$ f\f$ and \f$ g\f$.
\post \f$ a \in B\f$. \post \f$ a \in B\f$.

View File

@ -34,9 +34,9 @@
\cgalClassifedRefPages \cgalClassifedRefPages
## Concepts ## \cgalCRPSection{Concepts}
### Univariate Algebraic %Kernel ### \cgalCRPSubsection{Univariate Algebraic %Kernel}
- `AlgebraicKernel_d_1` - `AlgebraicKernel_d_1`
@ -58,7 +58,7 @@
- `AlgebraicKernel_d_1::ApproximateAbsolute_1` - `AlgebraicKernel_d_1::ApproximateAbsolute_1`
- `AlgebraicKernel_d_1::ApproximateRelative_1` - `AlgebraicKernel_d_1::ApproximateRelative_1`
### Bivariate Algebraic %Kernel ### \cgalCRPSubsection{Bivariate Algebraic %Kernel}
- `AlgebraicKernel_d_2` - `AlgebraicKernel_d_2`
@ -95,7 +95,7 @@
- `AlgebraicKernel_d_2::BoundBetweenX_2` - `AlgebraicKernel_d_2::BoundBetweenX_2`
- `AlgebraicKernel_d_2::BoundBetweenY_2` - `AlgebraicKernel_d_2::BoundBetweenY_2`
## Models ## \cgalCRPSection{Models}
- `CGAL::Algebraic_kernel_d_1<Coeff>` - `CGAL::Algebraic_kernel_d_1<Coeff>`
- `CGAL::Algebraic_kernel_d_2<Coeff>` - `CGAL::Algebraic_kernel_d_2<Coeff>`

View File

@ -1,7 +1,7 @@
// $URL$ // $URL$
// $Id$ // $Id$
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifdef CGAL_USE_MPFI #ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h> #include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h> #include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$ // $URL$
// $Id$ // $Id$
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifdef CGAL_USE_MPFI #ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h> #include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h> #include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$ // $URL$
// $Id$ // $Id$
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifdef CGAL_USE_MPFI #ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h> #include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h> #include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$ // $URL$
// $Id$ // $Id$
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifdef CGAL_USE_MPFI #ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h> #include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h> #include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$ // $URL$
// $Id$ // $Id$
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifdef CGAL_USE_MPFI #ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h> #include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h> #include <CGAL/Gmpz.h>

View File

@ -736,7 +736,7 @@ public:
public: public:
typedef CGAL::cpp11::array<Bound,4> result_type; typedef std::array<Bound,4> result_type;
Isolate_2(const Algebraic_kernel_d_2* kernel) Isolate_2(const Algebraic_kernel_d_2* kernel)
: _m_kernel(kernel) {} : _m_kernel(kernel) {}

View File

@ -114,9 +114,6 @@ public:
//! Default constructor //! Default constructor
Algebraic_real_d_1() : Base(static_cast<const Base&>(get_default_instance())) {} Algebraic_real_d_1() : Base(static_cast<const Base&>(get_default_instance())) {}
//! copy constructor: copy existing Algebraic_real_d_1 (shares rep)
Algebraic_real_d_1(const Self& p) : Base(static_cast<const Base&>(p)) {}
//! creates the algebraic real from \a i. //! creates the algebraic real from \a i.
Algebraic_real_d_1(int i ) : Base(Algebraic_real_rep_d_1(i)) { } Algebraic_real_d_1(int i ) : Base(Algebraic_real_rep_d_1(i)) { }

View File

@ -108,8 +108,10 @@ public:
Bitstream_coefficient_kernel_at_alpha() : Base(Rep()) {} Bitstream_coefficient_kernel_at_alpha() : Base(Rep()) {}
#ifdef DOXYGEN_RUNNING
Bitstream_coefficient_kernel_at_alpha(const Self& traits) Bitstream_coefficient_kernel_at_alpha(const Self& traits)
: Base(static_cast<const Base&>(traits)) {} : Base(static_cast<const Base&>(traits)) {}
#endif
Bitstream_coefficient_kernel_at_alpha(Algebraic_kernel_d_1* kernel, Bitstream_coefficient_kernel_at_alpha(Algebraic_kernel_d_1* kernel,
Algebraic_real_1 alpha) Algebraic_real_1 alpha)

View File

@ -476,7 +476,7 @@ private:
log_C_eps_ = n.log_C_eps_; log_C_eps_ = n.log_C_eps_;
} }
// const Self& operator= (const Self&); // assignment is forbidden Self& operator= (const Self&) = delete;
}; // struct Bitstream_descartes_E08_node }; // struct Bitstream_descartes_E08_node
@ -575,9 +575,11 @@ public:
Bitstream_descartes_E08_tree() : Base(Rep()) { } Bitstream_descartes_E08_tree() : Base(Rep()) { }
//! copy constructor //! copy constructor
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_E08_tree(const Self& p) Bitstream_descartes_E08_tree(const Self& p)
: Base(static_cast<const Base&>(p)) : Base(static_cast<const Base&>(p))
{ } { }
#endif
/*! \brief construct from initial interval and coefficients /*! \brief construct from initial interval and coefficients
* *

View File

@ -567,7 +567,7 @@ private:
log_C_eps_ = n.log_C_eps_; log_C_eps_ = n.log_C_eps_;
} }
// const Self& operator= (const Self&); // assignment is forbidden Self& operator= (const Self&)=delete;
}; // struct Bitstream_descartes_rndl_node }; // struct Bitstream_descartes_rndl_node
@ -931,9 +931,11 @@ public:
Bitstream_descartes_rndl_tree() : Base(Rep()) { } Bitstream_descartes_rndl_tree() : Base(Rep()) { }
//! copy constructor //! copy constructor
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_rndl_tree(const Self& p) Bitstream_descartes_rndl_tree(const Self& p)
: Base(static_cast<const Base&>(p)) : Base(static_cast<const Base&>(p))
{ } { }
#endif
//! Internal function called by constructor. Avoids code duplication //! Internal function called by constructor. Avoids code duplication
void init_tree() { void init_tree() {

View File

@ -154,9 +154,10 @@ public:
: Base(static_cast<const Base&>(get_default_instance())){} : Base(static_cast<const Base&>(get_default_instance())){}
// explicit copy-constructor, required by VC9 // explicit copy-constructor, required by VC9
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_rndl_tree_traits(const Self& traits) Bitstream_descartes_rndl_tree_traits(const Self& traits)
: Base(static_cast<const Base&>(traits)){} : Base(static_cast<const Base&>(traits)){}
#endif
//! @} //! @}
class Approximator { class Approximator {

View File

@ -505,11 +505,12 @@ public:
} }
//! \brief Copy constructor //! \brief Copy constructor
#ifdef DOXYGEN_RUNNING
Curve_analysis_2(const Self& alg_curve) Curve_analysis_2(const Self& alg_curve)
: Base(static_cast<const Base&>(alg_curve)) : Base(static_cast<const Base&>(alg_curve))
{ {
} }
#endif
//!@} //!@}

View File

@ -446,11 +446,12 @@ public:
}; };
//! \brief Copy constructor //! \brief Copy constructor
#ifdef DOXYGEN_RUNNING
Curve_pair_analysis_2(const Self& alg_curve_pair) Curve_pair_analysis_2(const Self& alg_curve_pair)
: Base(static_cast<const Base&>(alg_curve_pair)) : Base(static_cast<const Base&>(alg_curve_pair))
{ {
} }
#endif
// Assignable // Assignable
/*! /*!
@ -1434,7 +1435,13 @@ compute_event_x_coordinates_with_event_indices() const {
CGAL_ACK_DEBUG_PRINT << " one curve event" << std::endl; CGAL_ACK_DEBUG_PRINT << " one curve event" << std::endl;
#endif #endif
*/ */
#if CGAL_CXX11
// Fix a warning by using `emplace_back()` instead of
// copying a non-initialized `optional
this->ptr()->event_slices.emplace_back();
#else
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1()); this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
#endif
switch(*(one_curve_it++)) { switch(*(one_curve_it++)) {
case(CGAL::internal::ROOT_OF_FIRST_SET): { case(CGAL::internal::ROOT_OF_FIRST_SET): {
event_indices.push_back(Event_indices(-1,f_count,-1)); event_indices.push_back(Event_indices(-1,f_count,-1));
@ -1461,8 +1468,11 @@ compute_event_x_coordinates_with_event_indices() const {
CGAL_ACK_DEBUG_PRINT << " two curve event" << std::endl; CGAL_ACK_DEBUG_PRINT << " two curve event" << std::endl;
#endif #endif
*/ */
this->ptr()-> #if CGAL_CXX11
event_slices.push_back(Lazy_status_line_CPA_1()); this->ptr()->event_slices.emplace_back();
#else
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
#endif
event_indices.push_back event_indices.push_back
(Event_indices(inter_count,-1,-1)); (Event_indices(inter_count,-1,-1));
@ -1476,7 +1486,11 @@ compute_event_x_coordinates_with_event_indices() const {
<< std::endl; << std::endl;
#endif #endif
*/ */
#if CGAL_CXX11
this->ptr()->event_slices.emplace_back();
#else
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1()); this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
#endif
switch(*(one_curve_it++)) { switch(*(one_curve_it++)) {

View File

@ -62,7 +62,7 @@ struct Interval_evaluate_1 : public CGAL::cpp98::binary_function
} }
result_type operator()(const Polynomial_1& p, result_type operator()(const Polynomial_1& p,
const CGAL::cpp11::array< Bound, 2 >& b) const { const std::array< Bound, 2 >& b) const {
typename CT::Cast cast; typename CT::Cast cast;
@ -79,7 +79,7 @@ struct Interval_evaluate_1 : public CGAL::cpp98::binary_function
Coefficient_const_iterator_range range = Coefficient_const_iterator_range range =
typename PT_1::Construct_coefficient_const_iterator_range()(p); typename PT_1::Construct_coefficient_const_iterator_range()(p);
Coefficient_const_iterator it = CGAL::cpp11::prev(range.second); Coefficient_const_iterator it = std::prev(range.second);
Coercion_interval res(cast(*it)); Coercion_interval res(cast(*it));

View File

@ -41,7 +41,7 @@ namespace internal {
template<typename Polynomial_2, typename Bound> template<typename Polynomial_2, typename Bound>
struct Interval_evaluate_2 : public CGAL::cpp98::binary_function struct Interval_evaluate_2 : public CGAL::cpp98::binary_function
<Polynomial_2,CGAL::cpp11::array<Bound,4>, <Polynomial_2,std::array<Bound,4>,
std::pair<typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type, std::pair<typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type,
typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type> > { typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type> > {
@ -58,7 +58,7 @@ public:
typedef std::pair< Coercion_type, Coercion_type > result_type; typedef std::pair< Coercion_type, Coercion_type > result_type;
result_type operator()(const Polynomial_2& p, result_type operator()(const Polynomial_2& p,
const CGAL::cpp11::array< Bound, 4 >& b) const { const std::array< Bound, 4 >& b) const {
typename CT::Cast cast; typename CT::Cast cast;
@ -87,7 +87,7 @@ public:
Coefficient_const_iterator_range range = Coefficient_const_iterator_range range =
typename PT_2::Construct_coefficient_const_iterator_range()(p); typename PT_2::Construct_coefficient_const_iterator_range()(p);
Coefficient_const_iterator it = CGAL::cpp11::prev(range.second); Coefficient_const_iterator it = std::prev(range.second);
Interval_result_type initial_pair = interval_evaluate_1(*it,x_pair); Interval_result_type initial_pair = interval_evaluate_1(*it,x_pair);
Coercion_interval res(initial_pair.first,initial_pair.second); Coercion_interval res(initial_pair.first,initial_pair.second);

View File

@ -252,9 +252,11 @@ public:
/*!\brief /*!\brief
* copy constructor * copy constructor
*/ */
#ifdef DOXYGEN_RUNNING
Status_line_CA_1(const Self& p) : Status_line_CA_1(const Self& p) :
Base(static_cast<const Base&>(p)) { Base(static_cast<const Base&>(p)) {
} }
#endif
/*!\brief /*!\brief
* constructs a status line over the \c i-th interval with x-coordinate * constructs a status line over the \c i-th interval with x-coordinate

View File

@ -174,9 +174,11 @@ public:
/*!\brief /*!\brief
* copy constructor * copy constructor
*/ */
#ifdef DOXYGEN_RUNNING
Status_line_CPA_1(const Self& p) : Status_line_CPA_1(const Self& p) :
Base(static_cast<const Base&>(p)) { Base(static_cast<const Base&>(p)) {
} }
#endif
/*!\brief /*!\brief
* constructs undefined status line * constructs undefined status line

View File

@ -219,9 +219,11 @@ public:
/*!\brief /*!\brief
* copy constructor * copy constructor
*/ */
#ifdef DOXYGEN_RUNNING
Xy_coordinate_2(const Self& p) : Xy_coordinate_2(const Self& p) :
Base(static_cast<const Base&>(p)) { Base(static_cast<const Base&>(p)) {
} }
#endif
/*!\brief /*!\brief
* Point at \c x, on \c curve with \c arcno. Finite points on vertical arcs * Point at \c x, on \c curve with \c arcno. Finite points on vertical arcs

View File

@ -48,7 +48,7 @@ void test_algebraic_kernel_2(const AlgebraicKernel_2& ak_2) {
typedef typename AK_2::Coefficient Coefficient; typedef typename AK_2::Coefficient Coefficient;
typedef typename AK_2::Bound Bound; typedef typename AK_2::Bound Bound;
typedef std::pair<Bound,Bound> BInterval; typedef std::pair<Bound,Bound> BInterval;
typedef CGAL::cpp11::array<Bound, 4> BArray; typedef std::array<Bound, 4> BArray;
typedef typename AK_2::Polynomial_1 Polynomial_1; typedef typename AK_2::Polynomial_1 Polynomial_1;
typedef typename AK_2::Polynomial_2 Polynomial_2; typedef typename AK_2::Polynomial_2 Polynomial_2;
typedef typename AK_2::Algebraic_real_1 Algebraic_real_1; typedef typename AK_2::Algebraic_real_1 Algebraic_real_1;

View File

@ -216,8 +216,8 @@ namespace CGAL {
const FT cz = (p.a()*p.c())/sqbc; const FT cz = (p.a()*p.c())/sqbc;
const Root_of_2 x = make_root_of_2(s.a(),FT(i?-1:1),delta); const Root_of_2 x = make_root_of_2(s.a(),FT(i?-1:1),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):(-cz)),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):FT(-cz)),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} }
@ -290,14 +290,14 @@ namespace CGAL {
const FT cz = (p.c()*p.b())/sqac; const FT cz = (p.c()*p.b())/sqac;
if(!is_positive(cx)) { if(!is_positive(cx)) {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):(-cx)),delta); const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):FT(-cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?-1:1),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?-1:1),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):(-cz)),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):FT(-cz)),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} else { } else {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(-cx):(cx)),delta); const Root_of_2 x = make_root_of_2(s.a(),FT(i?FT(-cx):(cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?1:-1),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?1:-1),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(-cz):(cz)),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?FT(-cz):(cz)),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} }
} }
@ -375,25 +375,25 @@ namespace CGAL {
const FT cy = (p.c()*p.b())/sqab; const FT cy = (p.c()*p.b())/sqab;
if(is_negative(cx)) { if(is_negative(cx)) {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):(-cx)),delta); const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):FT(-cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} else if(is_zero(cx)) { } else if(is_zero(cx)) {
if(!is_positive(cy)) { if(!is_positive(cy)) {
const Root_of_2 x = s.a(); const Root_of_2 x = s.a();
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} else { } else {
const Root_of_2 x = s.a(); const Root_of_2 x = s.a();
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(-cy):(cy)),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?FT(-cy):(cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} }
} else { } else {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(-cx):(cx)),delta); const Root_of_2 x = make_root_of_2(s.a(),FT(i?FT(-cx):(cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(-cy):(cy)),delta); const Root_of_2 y = make_root_of_2(s.b(),FT(i?FT(-cy):(cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta); const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
return Root_for_spheres_2_3(x,y,z); return Root_for_spheres_2_3(x,y,z);
} }

View File

@ -68,12 +68,12 @@ finite number of different \f$ \alpha\f$-shapes and corresponding
\cgalClassifedRefPages \cgalClassifedRefPages
## Concepts ## \cgalCRPSection{Concepts}
- `AlphaShapeTraits_2` - `AlphaShapeTraits_2`
- `AlphaShapeFace_2` - `AlphaShapeFace_2`
- `AlphaShapeVertex_2` - `AlphaShapeVertex_2`
## Classes ## \cgalCRPSection{Classes}
- `CGAL::Alpha_shape_2<Dt>` - `CGAL::Alpha_shape_2<Dt>`
- `CGAL::Weighted_alpha_shape_euclidean_traits_2<K>` - `CGAL::Weighted_alpha_shape_euclidean_traits_2<K>`
- `CGAL::Alpha_shape_vertex_base_2<AlphaShapeTraits_2>` - `CGAL::Alpha_shape_vertex_base_2<AlphaShapeTraits_2>`

View File

@ -1,5 +1,4 @@
#include <CGAL/Simple_cartesian.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/Cartesian_converter.h> #include <CGAL/Cartesian_converter.h>
#include <CGAL/Delaunay_triangulation_2.h> #include <CGAL/Delaunay_triangulation_2.h>
@ -16,9 +15,8 @@
typedef double coord_type; typedef double coord_type;
typedef CGAL::Simple_cartesian<coord_type> SC; typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic;
typedef CGAL::Filtered_kernel<SC> FK; typedef CGAL::Projection_traits_xy_3<Epic> K;
typedef CGAL::Projection_traits_xy_3<FK> K;
typedef K::Point_2 Point; typedef K::Point_2 Point;
typedef K::Segment_2 Segment; typedef K::Segment_2 Segment;
@ -34,10 +32,10 @@ typedef K::Segment_2 Segment;
namespace CGAL { namespace CGAL {
template < class K2, class C > template < class K2, class C >
class Cartesian_converter<FK, K2, C> class Cartesian_converter<Epic, K2, C>
{ {
public: public:
typedef CGAL::Projection_traits_xy_3<FK> Source_kernel; typedef CGAL::Projection_traits_xy_3<Epic> Source_kernel;
typedef K2 Target_kernel; typedef K2 Target_kernel;
typedef C Number_type_converter; typedef C Number_type_converter;
@ -109,7 +107,7 @@ bool file_input(OutputIterator out)
int n; int n;
is >> n; is >> n;
std::cout << "Reading " << n << " points from file" << std::endl; std::cout << "Reading " << n << " points from file" << std::endl;
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out); std::copy_n(std::istream_iterator<Point>(is), n, out);
return true; return true;
} }

View File

@ -50,7 +50,7 @@ bool file_input(OutputIterator out)
int n; int n;
is >> n; is >> n;
std::cout << "Reading " << n << " points from file" << std::endl; std::cout << "Reading " << n << " points from file" << std::endl;
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out); std::copy_n(std::istream_iterator<Point>(is), n, out);
return true; return true;
} }

View File

@ -52,7 +52,7 @@ bool file_input(OutputIterator out)
int n; int n;
is >> n; is >> n;
std::cout << "Reading " << n << " points from file" << std::endl; std::cout << "Reading " << n << " points from file" << std::endl;
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out); std::copy_n(std::istream_iterator<Point>(is), n, out);
return true; return true;
} }

View File

@ -1,5 +1,4 @@
#include <CGAL/Simple_cartesian.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/algorithm.h> #include <CGAL/algorithm.h>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
@ -15,8 +14,7 @@
typedef double coord_type; typedef double coord_type;
typedef CGAL::Simple_cartesian<coord_type> SC; typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Filtered_kernel<SC> K;
typedef K::Point_2 Point; typedef K::Point_2 Point;
typedef K::Segment_2 Segment; typedef K::Segment_2 Segment;
@ -99,7 +97,7 @@ file_input(OutputIterator out)
int n; int n;
is >> n; is >> n;
std::cout << "Reading " << n << " points from file" << std::endl; std::cout << "Reading " << n << " points from file" << std::endl;
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out); std::copy_n(std::istream_iterator<Point>(is), n, out);
return true; return true;
} }

View File

@ -5,8 +5,7 @@ corresponding to the weighted Alpha Shape.
************************************************************************/ ************************************************************************/
#include <CGAL/Simple_cartesian.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/Alpha_shape_2.h> #include <CGAL/Alpha_shape_2.h>
#include <CGAL/Alpha_shape_face_base_2.h> #include <CGAL/Alpha_shape_face_base_2.h>
@ -22,8 +21,7 @@ corresponding to the weighted Alpha Shape.
typedef double coord_type; typedef double coord_type;
typedef CGAL::Simple_cartesian<coord_type> SC; typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Filtered_kernel<SC> K;
typedef K::Point_2 Point; typedef K::Point_2 Point;
typedef K::Weighted_point_2 Weighted_point; typedef K::Weighted_point_2 Weighted_point;
typedef K::Segment_2 Segment; typedef K::Segment_2 Segment;

View File

@ -83,7 +83,7 @@ of the alpha complex where singular faces are removed.
\cgalClassifedRefPages \cgalClassifedRefPages
## Concepts ## \cgalCRPSection{Concepts}
- `AlphaShapeTraits_3` - `AlphaShapeTraits_3`
- `WeightedAlphaShapeTraits_3` - `WeightedAlphaShapeTraits_3`
- `AlphaShapeCell_3` - `AlphaShapeCell_3`
@ -93,7 +93,7 @@ of the alpha complex where singular faces are removed.
- `FixedAlphaShapeCell_3` - `FixedAlphaShapeCell_3`
- `FixedAlphaShapeVertex_3` - `FixedAlphaShapeVertex_3`
## Classes ## \cgalCRPSection{Classes}
- `CGAL::Alpha_status<NT>` - `CGAL::Alpha_status<NT>`
- `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>` - `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>`
- `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>` - `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>`

View File

@ -10,7 +10,6 @@
#include <boost/unordered_set.hpp> #include <boost/unordered_set.hpp>
#include <boost/unordered_map.hpp> #include <boost/unordered_map.hpp>
#include <boost/foreach.hpp>
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt; typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
@ -73,7 +72,7 @@ int main()
as.get_alpha_shape_facets(std::back_inserter( regular_facets ), Alpha_shape_3::REGULAR ); as.get_alpha_shape_facets(std::back_inserter( regular_facets ), Alpha_shape_3::REGULAR );
std::vector<Alpha_shape_3::Facet> filtered_regular_facets; std::vector<Alpha_shape_3::Facet> filtered_regular_facets;
BOOST_FOREACH(Alpha_shape_3::Facet f, regular_facets) for(Alpha_shape_3::Facet f : regular_facets)
{ {
if ( marked_cells.count(f.first)==1 ) if ( marked_cells.count(f.first)==1 )
filtered_regular_facets.push_back(f); filtered_regular_facets.push_back(f);
@ -90,7 +89,7 @@ int main()
boost::unordered_map< Alpha_shape_3::Vertex_handle, std::size_t> vids; boost::unordered_map< Alpha_shape_3::Vertex_handle, std::size_t> vids;
points.clear(); points.clear();
BOOST_FOREACH(Alpha_shape_3::Facet f, filtered_regular_facets) for(Alpha_shape_3::Facet f : filtered_regular_facets)
{ {
for (int i=1;i<4; ++i) for (int i=1;i<4; ++i)
{ {
@ -104,7 +103,7 @@ int main()
std::ofstream output("out.off"); std::ofstream output("out.off");
output << "OFF\n " << points.size() << " " << filtered_regular_facets.size() << " 0\n"; output << "OFF\n " << points.size() << " " << filtered_regular_facets.size() << " 0\n";
std::copy(points.begin(), points.end(), std::ostream_iterator<Point>(output, "\n")); std::copy(points.begin(), points.end(), std::ostream_iterator<Point>(output, "\n"));
BOOST_FOREACH(const Alpha_shape_3::Facet& f, filtered_regular_facets) for(const Alpha_shape_3::Facet& f : filtered_regular_facets)
{ {
output << 3; output << 3;

View File

@ -979,8 +979,8 @@ public:
template<class OutputIterator> template<class OutputIterator>
OutputIterator filtration(OutputIterator it) const OutputIterator filtration(OutputIterator it) const
{ {
Dispatch_or_drop_output_iterator<cpp11::tuple<CGAL::Object>, cpp11::tuple<OutputIterator> > out(it); Dispatch_or_drop_output_iterator<std::tuple<CGAL::Object>, std::tuple<OutputIterator> > out(it);
return cpp11::template get<0>( filtration_with_alpha_values(out) ); return std::template get<0>( filtration_with_alpha_values(out) );
} }
private: private:

View File

@ -40,7 +40,7 @@ aforementioned concepts.
\cgalClassifedRefPages \cgalClassifedRefPages
## Concepts ## \cgalCRPSection{Concepts}
- `ApolloniusSite_2` - `ApolloniusSite_2`
- `ApolloniusGraphDataStructure_2` - `ApolloniusGraphDataStructure_2`
@ -48,7 +48,7 @@ aforementioned concepts.
- `ApolloniusGraphTraits_2` - `ApolloniusGraphTraits_2`
- `ApolloniusGraphHierarchyVertexBase_2` - `ApolloniusGraphHierarchyVertexBase_2`
## Classes ## \cgalCRPSection{Classes}
- `CGAL::Apollonius_graph_2<Gt,Agds>` - `CGAL::Apollonius_graph_2<Gt,Agds>`
- `CGAL::Apollonius_site_2<K>` - `CGAL::Apollonius_site_2<K>`

View File

@ -1,4 +1,4 @@
#include <CGAL/basic.h> #include <CGAL/config.h>
// standard includes // standard includes
#include <iostream> #include <iostream>

View File

@ -48,10 +48,6 @@ public:
const Weight& w = Weight(0)) const Weight& w = Weight(0))
: _p(p), _w(w) {} : _p(p), _w(w) {}
Apollonius_site_2(const Apollonius_site_2& other)
: _p(other._p), _w(other._w) {}
const Point_2& point() const { return _p; } const Point_2& point() const { return _p; }
const Weight& weight() const { return _w; } const Weight& weight() const { return _w; }
RT x() const { return _p.x(); } RT x() const { return _p.x(); }

View File

@ -22,7 +22,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#ifndef DONT_USE_FILTERED_EXACT #ifndef DONT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {}; typedef CGAL::Simple_cartesian<number_t> Kernel;
#endif #endif
typedef CGAL::Integral_domain_without_division_tag Method_tag; typedef CGAL::Integral_domain_without_division_tag Method_tag;
@ -30,8 +30,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
#include "./include/test.h" #include "./include/test.h"
struct CK : public CGAL::Simple_cartesian<inexact_type> {}; typedef CGAL::Simple_cartesian<inexact_type> CK;
struct EK : public CGAL::Simple_cartesian<exact_type> {}; typedef CGAL::Simple_cartesian<exact_type> EK;
int main() int main()

View File

@ -23,7 +23,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#ifndef DNOT_USE_FILTERED_EXACT #ifndef DNOT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {}; typedef CGAL::Simple_cartesian<number_t> K;
#endif #endif
typedef CGAL::Integral_domain_without_division_tag Method_tag; typedef CGAL::Integral_domain_without_division_tag Method_tag;
@ -31,8 +31,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
#include "./include/test.h" #include "./include/test.h"
struct CK : public CGAL::Simple_cartesian<inexact_type> {}; typedef CGAL::Simple_cartesian<inexact_type> CK;
struct EK : public CGAL::Simple_cartesian<exact_type> {}; typedef CGAL::Simple_cartesian<exact_type> EK;
int main() int main()

View File

@ -10,11 +10,11 @@
typedef CGAL::Exact_rational exact_nt; typedef CGAL::Exact_rational exact_nt;
struct Rep : public CGAL::Simple_cartesian<exact_nt> {}; typedef CGAL::Simple_cartesian<exact_nt> Rep;
typedef CGAL::Integral_domain_without_division_tag Method_tag; typedef CGAL::Integral_domain_without_division_tag Method_tag;
struct Gt : public CGAL::Apollonius_graph_traits_2<Rep,Method_tag> {}; typedef CGAL::Apollonius_graph_traits_2<Rep,Method_tag> Gt;
typedef CGAL::Apollonius_graph_2<Gt> AG2; typedef CGAL::Apollonius_graph_2<Gt> AG2;
typedef AG2::Point_2 Point_2; typedef AG2::Point_2 Point_2;

View File

@ -1,5 +1,3 @@
#include <CGAL/basic.h>
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <cassert> #include <cassert>
@ -22,7 +20,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#ifndef DONT_USE_FILTERED_EXACT #ifndef DONT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {}; typedef CGAL::Simple_cartesian<number_t> Kernel;
#endif #endif
typedef CGAL::Integral_domain_without_division_tag Method_tag; typedef CGAL::Integral_domain_without_division_tag Method_tag;
@ -30,8 +28,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
#include "./include/test.h" #include "./include/test.h"
struct CK : public CGAL::Simple_cartesian<double> {}; typedef CGAL::Simple_cartesian<double> CK;
struct EK : public CGAL::Simple_cartesian<CGAL::MP_Float> {}; typedef CGAL::Simple_cartesian<CGAL::MP_Float> EK;
int main() int main()

View File

@ -10,7 +10,7 @@ of both types
`CGAL::Line_arc_2<CircularKernel>` or `CGAL::Line_arc_2<CircularKernel>` or
`CGAL::Circular_arc_2<CircularKernel>`. `CGAL::Circular_arc_2<CircularKernel>`.
It uses the <A HREF="http://www.boost.org/doc/html/variant.html">boost::variant</A>. It uses the <A HREF="https://www.boost.org/doc/html/variant.html">boost::variant</A>.
\cgalModels `ArrangementTraits_2` \cgalModels `ArrangementTraits_2`

View File

@ -1,12 +1,3 @@
/// \ingroup PkgArrangementOnSurface2Macros
/// @{
/*!
* If the macro is set to one, then \f$x\f$-monotone curves are always
* directed from left-to-right.
*/
#define CGAL_ALWAYS_LEFT_TO_RIGHT
/// @}
namespace CGAL { namespace CGAL {
/*! \ingroup PkgArrangementOnSurface2TraitsClasses /*! \ingroup PkgArrangementOnSurface2TraitsClasses
* *

View File

@ -1,29 +0,0 @@
/*
*/
class ArrTrimTraits_2 {
public:
typedef ArrTraits::X_monotone_curve_2 X_monotone_curve_2;
typedef ArrTraits::Point_2 Point_2;
/*!
returns an \f$ x\f$-monotone trimmed version \f$ x\f$-monotone
connecting `p1` and `p2` (i.e., the
two input points are its endpoints).
*/
X_monotone_curve_2 operator() ( X_monotone_curve_2 xcv,
Point_2 p1, Point_2 p2);
};

View File

@ -87,18 +87,18 @@ implemented as peripheral classes or as free (global) functions.
\cgalClassifedRefPages \cgalClassifedRefPages
## Enumerations ## \cgalCRPSection{Enumerations}
- `CGAL::Arr_parameter_space` - `CGAL::Arr_parameter_space`
- `CGAL::Arr_curve_end` - `CGAL::Arr_curve_end`
- `CGAL::Arr_halfedge_direction` - `CGAL::Arr_halfedge_direction`
## Tags ## \cgalCRPSection{Tags}
- `CGAL::Arr_oblivious_side_tag` - `CGAL::Arr_oblivious_side_tag`
- `CGAL::Arr_open_side_tag` - `CGAL::Arr_open_side_tag`
## Concepts ## \cgalCRPSection{Concepts}
- `ArrangementDcel` - `ArrangementDcel`
- `ArrangementDcelWithRebind` - `ArrangementDcelWithRebind`
@ -119,13 +119,13 @@ implemented as peripheral classes or as free (global) functions.
- `ArrangementPointLocation_2` - `ArrangementPointLocation_2`
- `ArrangementVerticalRayShoot_2` - `ArrangementVerticalRayShoot_2`
## Geometric Object Concepts ## \cgalCRPSection{Geometric Object Concepts}
- `ArrTraits::Point_2` - `ArrTraits::Point_2`
- `ArrTraits::XMonotoneCurve_2` - `ArrTraits::XMonotoneCurve_2`
- `ArrTraits::Curve_2` - `ArrTraits::Curve_2`
## Function Object Concepts ## \cgalCRPSection{Function Object Concepts}
- `ArrTraits::CompareX_2` - `ArrTraits::CompareX_2`
- `ArrTraits::CompareXy_2` - `ArrTraits::CompareXy_2`
@ -149,7 +149,7 @@ implemented as peripheral classes or as free (global) functions.
- `ArrTraits::Approximate_2` - `ArrTraits::Approximate_2`
- `ArrTraits::ConstructXMonotoneCurve_2` - `ArrTraits::ConstructXMonotoneCurve_2`
## Classes ## \cgalCRPSection{Classes}
- `CGAL::Arrangement_2<Traits,Dcel>` - `CGAL::Arrangement_2<Traits,Dcel>`
- `CGAL::Arr_accessor<Arrangement>` - `CGAL::Arr_accessor<Arrangement>`
@ -188,10 +188,10 @@ implemented as peripheral classes or as free (global) functions.
- `CGAL::Arr_face_index_map<Arrangement>` - `CGAL::Arr_face_index_map<Arrangement>`
- `CGAL::Arr_point_location_result<Arrangement>` - `CGAL::Arr_point_location_result<Arrangement>`
## Macros ## \cgalCRPSection{Macros}
- \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink - \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink
## Functions ## \cgalCRPSection{Functions}
- `CGAL::is_valid()` - `CGAL::is_valid()`
- `CGAL::insert()` - `CGAL::insert()`

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_on_surface_2/Bezier_curves.cpp //! \file examples/Arrangement_on_surface_2/Bezier_curves.cpp
// Constructing an arrangement of Bezier curves. // Constructing an arrangement of Bezier curves.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -1,4 +1,4 @@
#include <CGAL/basic.h> #include <CGAL/config.h>
#include <iostream> #include <iostream>
#if (!CGAL_USE_CORE) && (!CGAL_USE_LEDA) && (!(CGAL_USE_GMP && CGAL_USE_MPFI)) #if (!CGAL_USE_CORE) && (!CGAL_USE_LEDA) && (!(CGAL_USE_GMP && CGAL_USE_MPFI))

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_on_surface_2/conic_multiplicities.cpp //! \file examples/Arrangement_on_surface_2/conic_multiplicities.cpp
// Handling intersection points with multiplicity between conic arcs. // Handling intersection points with multiplicity between conic arcs.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -1,6 +1,6 @@
//! \file examples/Arrangement_on_surface_2/conics.cpp //! \file examples/Arrangement_on_surface_2/conics.cpp
// Constructing an arrangement of various conic arcs. // Constructing an arrangement of various conic arcs.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -1,8 +1,6 @@
//! \file examples/Arrangement_on_surface_2/edge_manipulation.cpp //! \file examples/Arrangement_on_surface_2/edge_manipulation.cpp
// Using the edge-manipulation functions. // Using the edge-manipulation functions.
#include <CGAL/basic.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h> #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Arr_segment_traits_2.h> #include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arrangement_2.h> #include <CGAL/Arrangement_2.h>

View File

@ -1,6 +1,6 @@
// Constructing a arrangement of Bezier polycurves. // Constructing a arrangement of Bezier polycurves.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE

View File

@ -1,6 +1,6 @@
// Constructing an arrangement of polycurves. // Constructing an arrangement of polycurves.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE

View File

@ -1,6 +1,6 @@
// Testing the do_equal function // Testing the do_equal function
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_2/ex_rational_functions.cpp //! \file examples/Arrangement_2/rational_functions.cpp
// Constructing an arrangement of arcs of rational functions. // Constructing an arrangement of arcs of rational functions.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_2/ex_rational_functions.cpp //! \file examples/Arrangement_2/rational_functions_rational_coefficients.cpp
// Constructing an arrangement of arcs of rational functions. // Constructing an arrangement of arcs of rational functions.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_2/unbounded_rational_functions.cpp //! \file examples/Arrangement_2/unbounded_rational_functions.cpp
// Constructing an arrangement of unbounded portions of rational functions. // Constructing an arrangement of unbounded portions of rational functions.
#include <CGAL/basic.h> #include <CGAL/config.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream> #include <iostream>

View File

@ -208,82 +208,6 @@ public:
// defining a type that inherits from the template we need to alias. However, // defining a type that inherits from the template we need to alias. However,
// the non-C++11 code requires the (re)definition of all constructors of the // the non-C++11 code requires the (re)definition of all constructors of the
// derived class. // derived class.
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
// Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv>
struct Construction_helper :
public Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
Base;
Construction_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the no-intersection construction surface-sweep visitor.
template <typename Evt, typename Crv>
struct No_intersection_construction_helper :
public Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
Base;
No_intersection_construction_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the insertion surface-sweep visitor.
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
template <typename Evt, typename Crv>
struct Insertion_helper :
public Arr_bounded_planar_insertion_helper<I_traits, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_insertion_helper<I_traits, Arr, Evt, Crv>
Base;
Insertion_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the no-intersection insertion surface-sweep visitor.
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
template <typename Evt, typename Crv>
struct No_intersection_insertion_helper :
public Arr_bounded_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
Base;
No_intersection_insertion_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the batched point-location surface-sweep visitor.
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
template <typename Evt, typename Crv>
struct Batched_point_location_helper :
public Arr_bounded_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
Base;
Batched_point_location_helper(const Arr* arr) : Base(arr) {}
};
// Type definition for the vertical decomposition sweep-line visitor.
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
template <typename Evt, typename Crv>
struct Vertical_decomposition_helper :
public Arr_bounded_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
Base;
Vertical_decomposition_helper(const Arr* arr) : Base(arr) {}
};
// Type definition for the overlay surface-sweep visitor.
template <typename Gt, typename Evt, typename Crv,
typename ArrA, typename ArrB>
struct Overlay_helper :
public Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
{
typedef Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
Base;
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
};
#else
// Type definition for the construction surface-sweep visitor. // Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv> template <typename Evt, typename Crv>
using Construction_helper = using Construction_helper =
@ -323,7 +247,6 @@ public:
typename ArrA, typename ArrB> typename ArrA, typename ArrB>
using Overlay_helper = using Overlay_helper =
Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>; Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
#endif
//@} //@}
public: public:

View File

@ -2881,11 +2881,13 @@ public:
/*! Copy constructor /*! Copy constructor
* \param other the other arc * \param other the other arc
*/ */
#ifdef DOXYGEN_RUNNING
Arr_geodesic_arc_on_sphere_3 Arr_geodesic_arc_on_sphere_3
(const Arr_geodesic_arc_on_sphere_3& other) : Base(other) (const Arr_geodesic_arc_on_sphere_3& other) : Base(other)
{ {
m_is_x_monotone = other.m_is_x_monotone; m_is_x_monotone = other.m_is_x_monotone;
} }
#endif
/*! Constructor /*! Constructor
* \param src the source point of the arc * \param src the source point of the arc

View File

@ -109,6 +109,8 @@ public:
Point_handle (p) Point_handle (p)
{} {}
_One_root_point_2& operator=(const _One_root_point_2&)=default;
/*! Constructor of a point with one-root coefficients. /*! Constructor of a point with one-root coefficients.
This constructor of a point can also be used with rational coefficients This constructor of a point can also be used with rational coefficients
thanks to convertor of CoordNT. */ thanks to convertor of CoordNT. */

View File

@ -89,6 +89,15 @@ public:
_rational_function(rational_function), _rational_function(rational_function),
_x_coordinate(x_coordinate) {} _x_coordinate(x_coordinate) {}
Algebraic_point_2_rep(const Algebraic_point_2_rep& other)
{
if (this != &other) // protect against invalid self-assignment
{
_rational_function = other._rational_function;
_x_coordinate = other._x_coordinate;
}
}
//assignment oparator //assignment oparator
Algebraic_point_2_rep& operator=(const Algebraic_point_2_rep& other) Algebraic_point_2_rep& operator=(const Algebraic_point_2_rep& other)
{ {
@ -374,10 +383,6 @@ public:
Algebraic_point_2() : Algebraic_point_2() :
Base(static_cast<const Base &> (get_default_instance())) {} Base(static_cast<const Base &> (get_default_instance())) {}
// explicit copy-constructor, required by VC9
Algebraic_point_2 (const Self & p)
: Base(static_cast<const Base &> (p)) {}
Comparison_result compare_xy_2(const Algebraic_point_2& other, Comparison_result compare_xy_2(const Algebraic_point_2& other,
const Cache& cache) const const Cache& cache) const
{ {

View File

@ -232,6 +232,8 @@ public:
Rational_function (const Self & r) Rational_function (const Self & r)
: Base(static_cast<const Base &> (r)) {} : Base(static_cast<const Base &> (r)) {}
Self& operator=(const Self&)=default;
CGAL::Sign sign_at(const Algebraic_real_1& x, CGAL::Sign sign_at(const Algebraic_real_1& x,
CGAL::Sign epsilon = CGAL::ZERO) const CGAL::Sign epsilon = CGAL::ZERO) const
{ {

View File

@ -321,7 +321,6 @@ public:
// the non-C++11 code requires the (re)definition of all constructors of the // the non-C++11 code requires the (re)definition of all constructors of the
// derived class. The non-C++11 code follows the commented out C++11 code. // derived class. The non-C++11 code follows the commented out C++11 code.
// When we move to C++11 we can use the more elgant code. // When we move to C++11 we can use the more elgant code.
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
// Type definition for the construction surface-sweep visitor. // Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv> template <typename Evt, typename Crv>
struct Construction_helper : struct Construction_helper :
@ -396,47 +395,6 @@ public:
Base; Base;
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {} Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
}; };
#else
// Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv>
using Construction_helper =
Arr_spherical_construction_helper<Gt2, Arr, Evt, Crv>;
// Type definition for the no-intersection construction surface-sweep visitor.
template <typename Evt, typename Crv>
using No_intersection_construction_helper =
Arr_spherical_construction_helper<Gt2, Arr, Evt, Crv>;
// Type definition for the insertion surface-sweep visitor.
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
template <typename Evt, typename Crv>
using Insertion_helper =
Arr_spherical_insertion_helper<I_traits, Arr, Evt, Crv>;
// Type definition for the no-intersection insertion surface-sweep visitor.
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
template <typename Evt, typename Crv>
using No_intersection_insertion_helper =
Arr_spherical_insertion_helper<Nxi_traits, Arr, Evt, Crv>;
// Type definition for the batched point-location surface-sweep visitor.
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
template <typename Evt, typename Crv>
using Batched_point_location_helper =
Arr_spherical_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>;
// Type definition for the vertical decomposition surface-sweep visitor.
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
template <typename Evt, typename Crv>
using Vertical_decomposition_helper =
Arr_spherical_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>;
// Type definition for the overlay surface-sweep visitor.
template <typename Gt, typename Evt, typename Crv,
typename ArrA, typename ArrB>
using Overlay_helper =
Arr_spherical_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
#endif
//@} //@}
public: public:

View File

@ -226,82 +226,6 @@ public:
// defining a type that inherits from the template we need to alias. However, // defining a type that inherits from the template we need to alias. However,
// the non-C++11 code requires the (re)definition of all constructors of the // the non-C++11 code requires the (re)definition of all constructors of the
// derived class. // derived class.
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
// Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv>
struct Construction_helper :
public Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
{
typedef Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
Base;
Construction_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the no-intersection construction surface-sweep visitor.
template <typename Evt, typename Crv>
struct No_intersection_construction_helper :
public Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
{
typedef Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
Base;
No_intersection_construction_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the insertion surface-sweep visitor.
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
template <typename Evt, typename Crv>
struct Insertion_helper :
public Arr_unb_planar_insertion_helper<I_traits, Arr, Evt, Crv>
{
typedef Arr_unb_planar_insertion_helper<I_traits, Arr, Evt, Crv>
Base;
Insertion_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the no-intersection insertion surface-sweep visitor.
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
template <typename Evt, typename Crv>
struct No_intersection_insertion_helper :
public Arr_unb_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
{
typedef Arr_unb_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
Base;
No_intersection_insertion_helper(Arr* arr) : Base(arr) {}
};
// Type definition for the batched point-location surface-sweep visitor.
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
template <typename Evt, typename Crv>
struct Batched_point_location_helper :
public Arr_unb_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
{
typedef Arr_unb_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
Base;
Batched_point_location_helper(const Arr* arr) : Base(arr) {}
};
// Type definition for the vertical decomposition surface-sweep visitor.
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
template <typename Evt, typename Crv>
struct Vertical_decomposition_helper :
public Arr_unb_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
{
typedef Arr_unb_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
Base;
Vertical_decomposition_helper(const Arr* arr) : Base(arr) {}
};
// Type definition for the overlay surface-sweep visitor.
template <typename Gt, typename Evt, typename Crv,
typename ArrA, typename ArrB>
struct Overlay_helper :
public Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
{
typedef Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
Base;
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
};
#else
// Type definition for the construction surface-sweep visitor. // Type definition for the construction surface-sweep visitor.
template <typename Evt, typename Crv> template <typename Evt, typename Crv>
using Construction_helper = using Construction_helper =
@ -341,7 +265,6 @@ public:
typename ArrA, typename ArrB> typename ArrA, typename ArrB>
using Overlay_helper = using Overlay_helper =
Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>; Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
#endif
//@} //@}
public: public:

Some files were not shown because too many files have changed in this diff Show More