Successfully tested in CGAL-4.3-Ic-59
Approved by the release manager
Conflicts:
Kernel_23/doc/Kernel_23/CGAL/intersections.h
Kernel_23/doc_tex/Kernel_23_ref/intersection.tex
Kernel_d/doc/Kernel_d/Kernel_d.txt
STL_Extension/doc/STL_Extension/CGAL/iterator.h
the primitive container was clear before deleting the nodes
(which was not done since the container was empty)
At the same time I made the delete of the KD-tree done only
if it was constructed
... to be a pair< variant<XXX>, Primitive_id > rather than
pair<optional<variant<XXX> >, Primitive_id >
The rational is that the optional around the variant here is not needed
since there is one around the pair.
- Group the documented methods that were not.
- Document typedefs that are used in the methods declarations.
- Use \tparam when relevant.
- Fix a comment block that was prefixed with ' ///' or '\t\t///'
depending on the lines. That one is particularily nasty because the
difference between lines is invisible. But that was confusing Doxygen.
- plus minor fixes
The AABB_tree code had several assertions checkinng that the tree was not
empty. Those preconditions were not documented. There was several places in
the code were it was not really required that the tree is not empty.
This patch rationalizes the preconditions: only the function `bbox()` and
the queries about distances or closest things now require that the tree is
not empty.
This commit also updates the respective mock-headers when the
corresponding .tex documentation has changed. This has been the case for:
AABB_tree/doc_tex/AABB_tree_ref/AABBGeomTraits.tex
AABB_tree/doc_tex/AABB_tree_ref/AABBTraits.tex
AABB_tree/doc_tex/AABB_tree_ref/AABB_traits.tex
Mesh_3/doc_tex/Mesh_3_ref/parameters_features.tex
Mesh_3/doc_tex/Mesh_3_ref/parameters_no_features.tex
Number_types/doc_tex/NumberTypeSupport_ref/Interval_nt.tex
Number_types/doc_tex/NumberTypeSupport_ref/Lazy_exact_nt.tex
Spatial_searching/doc_tex/Spatial_searching_ref/Search_traits_2.tex
Spatial_searching/doc_tex/Spatial_searching_ref/Search_traits_3.tex
Triangulation_2/doc_tex/Triangulation_2_ref/Constrained_Delaunay_triangulation_2.tex
* CODE+DOC: Bbox_3 is a nested type in CGAL's Kernel; the code uses Bbox_3
* DOC: Add Compute_squared_distance_3 in AABBGeomTraits as it is needed by AABBTraits
* DOC: remove Splitting_direction from AABBTraits as it is not used
* DOC: Squared_distance in AABBTraits is only used between two points
(I guess the confusion from the fact that nearest_point use the other
version but without using the AABBTraits model).
* CODE+DOC add the function to construct Squared_distance functor in AABBTraits + AABB_traits
and use it instead of AABBTraits::Compute_squared_distance_3 which was not in the concept
* DOC: remove from AABB_traits types Ray_3, Line_3 and Segment_3 that are not required by AABBTraits
* CODE: The code was using AABBTraits::Point which is not in the concept. Use Point_3 instead
* CODE: reorder typedefs in AABB_traits to match concept order
AABB_tree documentation, Intersections_3 and Arrangement_on_surface_2.
The merge also introduced a regression for a bug fixed in R68387 which
fixed a bug in Triangle_3 Segment_3 intersections. The relevant
testcase is in triangle_other_intersection_test.cpp.
http://gotw.ca/gotw/006.htm, accelerate_distance_queries and
clear_search_tree should be const.
To guarantee the read-only thread-safety, a mutex for the construction
of the internal kd-tree is used.
At the same time, optimize accelerate_distance_queries() to not
redo computation if nothing has changed in the aabb_tree.
Note that clear_search_tree does not need to be thread-safe as it is private.
if the build need to be done. We have an extra "if (m_need_build)"
but otherwise we would need to use mutex::try_lock() which results
in more code and as efficient.
*remove mutable data members
*accelerate_distance_queries is not const
*clear_search_tree is not const
*root_node() const returns a const Node*
*add root_note() non-const version
*update documentation of AABB_tree class. function constness was not documented
*update changes.html