Commit Graph

609 Commits

Author SHA1 Message Date
Laurent Rineau e8ec440859 Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF
# Conflicts:
#	STL_Extension/doc/STL_Extension/CGAL/Concurrent_compact_container.h
2022-12-05 14:51:31 +01:00
Mael da0b13699c
Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF 2022-12-02 23:19:29 +01:00
Mael Rouxel-Labbé b5c21e1f5d Http -> https + update some dead links 2022-11-23 18:54:37 +01:00
Mael Rouxel-Labbé 10eb694d38 Replace if constexpr with C++14 compatible code 2022-10-13 23:11:05 +02:00
Mael Rouxel-Labbé 2c23a6d5c5 Revert back to wrapping result_type to distinguish FT-necessary operator()s 2022-10-12 21:24:59 +02:00
Mael Rouxel-Labbé 873cc884b5 Get rid of _RT / _RT_FT kernel interface macros 2022-09-22 12:03:25 +02:00
Mael Rouxel-Labbé 214e072959 Switch from RT_sufficient to FT_necessary 2022-09-22 12:02:53 +02:00
Laurent Rineau 0141404f4d Merge pull request #6809 from lrineau/Filtered_kernel-fix__do_intersect__Bbox_3__Triangle_3__static_filters-GF
Fix static filter of Do_intersect_3(Bbox_3,Triangle_3)
2022-09-13 12:33:03 +02:00
Laurent Rineau f52298a8c5 WIP: try to always use Filtered_predicate_RT_FT 2022-09-08 17:30:14 +02:00
Laurent Rineau 8521c44c6f Add a constexpr, because I can 2022-09-07 15:10:39 +02:00
Laurent Rineau 4b660d9ec9 Another proposal for Filtered_predicate_RT_FT
Instead of having the return type wrapped in a `Needs_FT` tag,
not the call operator overloads that can be called with `RT` are
"tagged" by adding a last argument of type `RT_sufficient` with a
default value.
2022-09-07 11:10:13 +02:00
Laurent Rineau 1e485113e8 Add an important comment 2022-09-07 10:30:01 +02:00
Laurent Rineau 81410701f7 Factorize the test "needs_ft" into a meta-function 2022-09-06 17:25:39 +02:00
Laurent Rineau b114789abf Fix spelling 2022-09-06 13:56:31 +02:00
Laurent Rineau 7c92341be7 Introduce CGAL_Kernel_pred_RT_or_FT
This commit introduces a new kind of predicate in
`<CGAL/Kernel/interface_macros.h>`. In addition to
  - `CGAL_kernel_pred` for predicates,
  - `CGAL_Kernel_pred_RT` for predicates that can be implemented using a
    ring-type,

now there is also:
  - `CGAL_Kernel_pred_RT_or_FT` for predicates with multiple overloads of
    `operator()`, some needing a field type and other needing a ring type
    (without the division operator).

The C++ code can discriminate between the two cases with a special wrapper
for the return type: `CGAL::Needs_FT<result_type` instead of `result_type`
(defined in `<CGAL/tags.h>`.

In `<CGAL/Filtered_predicate.h>`, in addition to the usual class template
 `Filtered_predicate`, there is now also `Filtered_predicate_RT_FT` that
 takes three predicates as template parameters instead of two:
  - the exact predicate with an ring-type,
  - the exact predicate with a field-type,
  - the approximate predicate (with `Interval_nt` as number-type).

For the moment, only `Compare_distance_3` in
`<CGAL/Cartesian/function_objects.h>` is using the new
`Filtered_predicate_RT_FT`.

Before this commit, the file
`Kernel_23/test/Kernel_23/include/CGAL/_test_new_3.h` was testing
`Compare_distance_3` only with three points or for points. This commit adds:
  - a test with `Point_3, Point_3, Segment_3`, and
  - a test with `Line_3, Point_3, Point_3`, that actually needs a field type
    with its current implementation.

In the test `Kernel_23/test/Kernel_23/Filtered_cartesian.cpp`, the macro
`CGAL_NO_MPZF_DIVISION_OPERATOR` is defined, to remove the division operator
from `CGAL::Mpzf`. `CGAL::Mpzf` is a ring-type, even with its `operator/`
(because that `operator/` can only compute exact divisions), but with
`CGAL_NO_MPZF_DIVISION_OPERATOR` defined, that is now checked by the compiler.
2022-09-02 11:31:47 +02:00
Laurent Rineau c573ccb827 Fix static filter of Do_intersect_3(Bbox_3,Triangle_3)
See the publication at https://www.semanticscholar.org/paper/High-performance-triangle-versus-box-intersection-Christensen-Karlsson/bad661b58359ec01be2deb2f47ec8fd8eb293747

The test of intersection of `bbox` and `triangle.bbox` was missing.
2022-08-24 16:18:07 +02:00
Sébastien Loriot 9dd8235dc5 more workarounds for MSVC 2015
[skip ci]
2022-08-10 23:50:39 +02:00
Sébastien Loriot 861588abe1 Merge 'sloriot/CGAL-std_type_traits' into master 2022-08-03 20:19:51 +02:00
Sébastien Loriot b96f6d5ce9 move is_iterator to type_traits 2022-06-10 09:43:59 +02:00
Sébastien Loriot 44250cb019 is_iterator_XXX<>::value --> is_iterator_XXX_v<> 2022-06-10 09:40:29 +02:00
Sébastien Loriot ac8b6d4731 boost::is_same --> std::is_same 2022-06-10 08:18:20 +02:00
Laurent Rineau 575f7a42fe Move exact_intersection_point back to CT_2 2022-06-01 20:31:22 +02:00
Laurent Rineau feaf6a4ca2 Add Kernel::Construct_exact_intersection_point_2 2022-05-31 16:40:34 +02:00
Laurent Rineau 2288225448 Massive update of CMake policies to version 3.23 2022-05-06 09:34:35 +02:00
Laurent Rineau 97e99cbc22 Merge pull request #6487 from afabri/Filtered_kernel-fix_depth_bug-GF
Kernel_23: Fix depth() in Epeck
2022-04-27 16:32:08 +02:00
Marc Glisse 8644c82103 Don't check interval validity in Lazy_rep 2022-04-16 13:53:58 +02:00
Andreas Fabri 33a80835ae Kernel_23: Fix depth() in Epeck 2022-04-11 15:32:57 +01:00
Andreas Fabri c4b8c370cb Deal with Null_vector similar to Origin 2022-03-11 10:26:00 +00:00
Andreas Fabri 53a6308edb No longer a need for a partial specaialization for Bbox (thank you Mael) 2022-03-11 09:17:45 +00:00
Andreas Fabri 04fa75eb84 Use auto 2022-03-11 09:12:17 +00:00
Andreas Fabri f01e24c75b Add Orientation_3::operator()(Origin,Point_3,Point_3,Point_3) 2022-03-10 10:55:44 +00:00
Sébastien Loriot ab48f63e30 update latest cmake version tested 2021-11-09 10:58:47 +01:00
Mael Rouxel-Labbé 381ff61796 More profiler macros 2021-10-08 21:52:32 +02:00
Mael Rouxel-Labbé 7f55e63559 Merge remote-tracking branch 'cgal/master' into Filtered_kernel-Do_intersect_3-GF 2021-10-08 20:09:11 +02:00
Mael Rouxel-Labbé 180f9c8e8d Remove obsolete todo 2021-10-08 20:08:01 +02:00
Mael Rouxel-Labbé 37f2541942 Add profiler macros 2021-10-08 20:07:50 +02:00
Andreas Fabri c8d2761f45 partial work after Mael's review 2021-09-29 15:14:54 +01:00
Sébastien Loriot 7de9564e1c remove archive directories that are of not use (available in git history) 2021-09-23 18:55:54 +02:00
Laurent Rineau c7437c6fb4 Merge pull request #5996 from sloriot/CGAL-internal_dir_fixes
Restore sub-directories accidently removed in 4009
2021-09-23 16:14:00 +02:00
Laurent Rineau 72c0a0deba Merge pull request #5973 from sloriot/CGAL-restore_rounding_mode-master
master version of #5971 (Make sure the rounding mode is restored when doing exact computations)
2021-09-20 17:07:07 +02:00
Laurent Rineau ac7a72eff8 Merge pull request #5986 from MaelRL/FK-Complete_static_filter_profiler_-GF-5.3
Add missing profiler macros in the static filter of Collinear_3 (5.3)
2021-09-20 17:07:00 +02:00
Sébastien Loriot 5945e48a3e restore sub-directories accidently removed in 98e471849b 2021-09-17 08:14:06 +02:00
Mael Rouxel-Labbé 88e14adf89 Add missing profiler macros in Collinear_3's static filter 2021-09-14 09:20:28 +02:00
Mael Rouxel-Labbé 93c7b6de1f Remove STL header include from CGAL-specific namespace 2021-09-14 09:19:50 +02:00
Mael Rouxel-Labbé e829dc73d3 Merge branch 'Filtered_kernel-Do_intersect_3-GF-old' into Filtered_kernel-Do_intersect_3-GF 2021-09-10 17:46:08 +02:00
Sébastien Loriot 74c029cc68 Merge remote-tracking branch 'sloriot/CGAL-restore_rounding_mode-5.3' 2021-09-09 11:44:36 +02:00
Sébastien Loriot 2ba64da4e5 change protector scope + FPU assertion for operator not in 5.2 2021-09-09 11:34:08 +02:00
Sébastien Loriot 6bae0e3939 Merge remote-tracking branch 'sloriot/CGAL-restore_rounding_mode' 2021-09-09 11:09:16 +02:00
Sébastien Loriot c8624ee0b3 check that the rounding mode when doing exact computation is to-nearest 2021-09-09 11:01:03 +02:00
Sébastien Loriot 106645ec2e make sure the rounding mode is to nearest when doing exact computations
Thoses changes should have been done when the code was modified for
CGAL_CFG_FPU_ROUNDING_MODE_UNWINDING_VC_BUG
2021-09-09 09:55:16 +02:00