Commit Graph

197 Commits

Author SHA1 Message Date
Andreas Fabri 1ba311a602 Prefix macro with CORE_ 2022-10-27 10:41:13 +01:00
Sébastien Loriot e82ae363b3 take CORE into account in Boost mp's arithmetic kernel 2022-10-27 11:40:34 +02:00
Andreas Fabri 27ca0dfb03 BigInt and BigRep are no longer real CORE storage 2022-10-27 09:35:47 +01:00
Andreas Fabri e98692d8b8 WIP: Replace CORE::BigInt and BigRat with the boost::mp classes. Just typedef 2022-10-25 15:32:26 +01:00
Andreas Fabri b32d1f0023 Merge branch 'master' into CORE-boost_mp_number-GF 2022-10-21 13:27:48 +01:00
albert-github 81d78f7969 Some obvious missing quotes and typos
Some obvious missing quotes and typos
2022-09-24 18:47:33 +02:00
Sébastien Loriot 32e89c1b91 add assertions 2022-06-02 15:56:08 +02:00
Sébastien Loriot ee0ec71857 add a template version of the constructor 2022-06-02 15:55:57 +02:00
Sebastien Loriot 65b10f226a
fix function
Co-authored-by: Marc Glisse <marc.glisse@inria.fr>
2022-06-01 20:16:45 +02:00
Laurent Rineau 370217ad28 Merge pull request #6131 from lrineau/CGAL_Core-fix_header_only-GF
CGAL Core: Remove explicit instanciations: CGAL is header-only!
2021-11-23 15:39:26 +01:00
Laurent Rineau a8dbdc3b06 Remove explicit instanciations: CGAL is header-only! 2021-11-16 16:46:52 +01:00
Sébastien Loriot 6680a6e6f9 constructing a string from nullptr is undefined behavior 2021-11-09 16:20:48 +01:00
Sébastien Loriot 4ede33059b add a switch for the gmp backend 2021-10-14 15:14:38 +02:00
Andreas Fabri 64a64e1a8a Add a makeCopy() 2021-10-13 23:11:56 +01:00
Andreas Fabri f13e14994c I think we must call abs(); Someone has to check 2021-10-12 15:50:41 +01:00
Andreas Fabri 74040d9d10 msb(BigInt) is only defined for i > 0 2021-10-12 15:49:26 +01:00
Andreas Fabri ef4b0ca154 Add implementations; Fix getBinExpo() for zero 2021-10-12 10:06:23 +01:00
Andreas Fabri a7b0b30028 Add an assert() 2021-10-12 09:17:52 +01:00
Sébastien Loriot ed41c475f4 remove TWS 2021-10-12 09:07:47 +02:00
Sebastien Loriot 112b633ad6
add tmp assertions 2021-10-11 17:16:04 +02:00
Sébastien Loriot e2f38514ce revert changes 2021-10-11 17:14:05 +02:00
Sébastien Loriot b93c2ce96a fixes while doing a review 2021-10-11 17:12:16 +02:00
Sébastien Loriot dc93a3eccd fix include 2021-10-11 15:40:14 +02:00
Andreas Fabri 945ba57bc1 lsb works ony on positive numbers 2021-10-11 14:39:17 +01:00
Andreas Fabri b801aaa8fe Fix getKaryExpo() 2021-10-07 18:26:17 +01:00
Andreas Fabri f5367709ad Use boost::multiprecision::number API (WIP) 2021-10-07 17:29:09 +01:00
Mael Rouxel-Labbé 625848e629 Fix missing ':' in various namespaces 2021-10-04 13:21:47 +02:00
Andreas Fabri a5a3ffb654 Remove unused variable 2021-09-23 17:00:09 +02:00
Andreas Fabri 0f5ef1065a Use std::to_string() instead of sprinf() 2021-09-23 17:00:09 +02:00
Andreas Fabri b6e2656389 Use std::string in CORE_Expr and CORE_Bigfloat 2021-09-23 17:00:03 +02:00
Andreas Fabri 6a2958bdd7
Update BigFloat_impl.h 2021-09-15 11:36:35 +02:00
Laurent Rineau 59a0da4f13 Merge pull request #5692 from maxGimeno/CGAL_cpp11_atomic_and_threads-maxGimeno
CGAL:: Use std atomic and threads

# Conflicts:
#	Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h
2021-05-19 17:23:53 +02:00
Maxime Gimeno 3e03d50b8a replace usages of CGAL::cpp11::atomic and thread by std:: calls 2021-05-07 11:10:30 +02:00
Maxime Gimeno e9b7595fff Deprecate CGAL headers for threads, atomic and result_of, and move their content to config.h as fallback 2021-05-07 11:09:24 +02:00
Ahmed Essam 12fd01defd Fix eating extra whitespace in CORE::BigRat 2020-09-21 08:54:29 +02:00
Ahmed Essam 6d949cd14f Fix bug with self intersecting bezier curves 2020-08-08 17:29:55 +02:00
Laurent Rineau 10e99cb400 Untabify: I wrote init_CORE() in MS devenv 2020-07-22 09:51:07 +02:00
Laurent Rineau 642078f65d Missing #include <CGAL/use.h> 2020-07-22 09:47:43 +02:00
Laurent Rineau 8a7d3fa21e CGAL_Core no longer needs Boost.Thread 2020-07-21 17:32:30 +02:00
Laurent Rineau bd172e5aa4 Call init_CORE() before any thread_local CORE static variables
The reason is actually simple:
  - `ExprRep::approx` may have to create a `Real` variable of a `double`,
  - that variable needs `MemoryPool<RealDouble>`.

If, for example, `Expr::getZero()` is called first, then the static
variable representing that zero is created first, and will be
destroyed last.

But if, during the computation, CORE needs to call `approx` on that
zero, then the `MemoryPool<RealDouble>` is created. At the end of the
program execution, at the destruction of static variables, the static
variable for `MemoryPool<RealDouble>` is destroyed. The static
variable of `Expr::getZero()` is destroyed last. ... But, as its
`approx` function was called, the destructor of that variable may need
`MemoryPool<RealDouble>` to call `free`, but that pool has already
been destroyed!

The function `init_CORE()`, if called *before* any thread-local local
static variable is created, ensured that `MemoryPool<RealDouble>` is
created first, and then destroyed last during the execution of the
program (or thread).
2020-07-21 17:15:45 +02:00
Sébastien Loriot 6c94c1501e Merge remote-tracking branch 'cgal/releases/CGAL-4.14-branch' 2020-05-05 14:40:55 +02:00
Sébastien Loriot 0ebe5350db fix interval
Fix suggested by Stefan Schirra following recommendation in Stefan Funke's Diplomarbeit
2020-04-30 11:12:12 +02:00
Maxime Gimeno 627a7b29be Fix warnings 2020-04-27 17:20:50 +02:00
Sébastien Loriot 0779373835 extra run of the script to remove tabs and trailing whitespaces
right after the  merge of 4.14 release branch

+ manual fix on one line in:
    * Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h
    * .travis/generate_travis.sh
2020-03-26 14:16:06 +01:00
Sébastien Loriot 590612a563 run the script to remove tabs and trailing whitespaces 2020-03-26 13:25:16 +01:00
Sébastien Loriot 26fb266410 Remove license notice in CORE headers
also fix some SPDX tags
2019-10-19 16:28:33 +02:00
Sébastien Loriot 9bd9c68b83 update LGPL[23]+ and GPL[23]+ SPDX tags
ack -l --no-svg "SPDX-License-Identifier: GPL-3.0\+" | xargs sed -i "s/SPDX-License-Identifier: GPL-3.0+/SPDX-License-Identifier: GPL-3.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: LGPL-3.0\+" | xargs sed -i "s/SPDX-License-Identifier: LGPL-3.0+/SPDX-License-Identifier: LGPL-3.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: GPL-2.0\+" | xargs sed -i "s/SPDX-License-Identifier: GPL-2.0+/SPDX-License-Identifier: GPL-2.0-or-later/"
ack -l --no-svg "SPDX-License-Identifier: LGPL-2.0\+" | xargs sed -i "s/SPDX-License-Identifier: LGPL-2.0+/SPDX-License-Identifier: LGPL-2.0-or-later/"
2019-10-18 21:57:54 +02:00
Laurent Rineau d3b9d89596 Merge pull request #4013 from lrineau/CGAL_Core-no_need_for_Boost.Thread-GF
Remove the need for Boost.Thread (but for CGAL_Core and gcc<9.1)
2019-07-10 14:22:53 +02:00
Laurent Rineau c0ba28f80a Merge branch 'releases/CGAL-4.14-branch' 2019-07-03 11:18:20 +02:00
Laurent Rineau e79bfd5d03 Merge branch 'releases/CGAL-4.13-branch' into releases/CGAL-4.14-branch 2019-07-03 11:10:03 +02:00
Laurent Rineau dca6b5c19e Strange patch that fixes the remaining bugs
https://github.com/CGAL/cgal/pull/4013#issuecomment-507291311

Because of two constructions in Algebraic_curve_kernel_2 and
Hyperbolic_octagon_translation, the assertion "!blocks.empty()" from
`<CGAL/CORE/MemoryPool.h>` was triggered during the destruction of
thread-local objects.

This strange patch ensures that the order of creation of thread-local
object is right, so the order of destruction is right as well.
2019-07-02 10:53:09 +02:00
Laurent Rineau 9eed06477d Use the function-local thread_local memPool, but for gcc<9.1 2019-06-26 15:52:39 +02:00
Laurent Rineau aa0a9c848d Remove 'using namespace std' from namespaces 2019-06-26 15:16:36 +02:00
Laurent Rineau 2ce7800239 Unfortunately gcc < 9.1 has bug with thread_local that impact CGAL 2019-06-24 14:27:20 +02:00
Laurent Rineau e260ea1dd4 C++11: remove the need for Boost.Thread, even with CGAL_Core 2019-06-18 15:06:23 +02:00
Andreas Fabri 4581f1b7a8 Morte replacements 2019-06-05 08:39:55 +02:00
Mael Rouxel-Labbé 2848158354 Fix typos 2019-05-20 08:54:04 +02:00
Laurent Rineau 90782d4b7f Revert the merge of two pull-requests that target CGAL-4.14-branch
- Revert "Merge pull request #3857 from MaelRL/CGAL-Fix_duplicate_non_manifold_vertices-GF"
- Revert "Merge pull request #3898 from lrineau/Mesh_3-stop_during_protection-lrineau"
2019-05-14 17:50:45 +02:00
Laurent Rineau 8e872081fc Merge pull request #3898 from lrineau/Mesh_3-stop_during_protection-lrineau
Mesh_3 `Protect_edges_sizing_field`: handle the `stop` Boolean

# Conflicts:
#	.travis/build_package.sh
#	Installation/cmake/modules/CGALConfig_binary.cmake.in
#	Installation/cmake/modules/CGALConfig_install.cmake.in
#	Installation/cmake/modules/CGAL_SetupCGAL_CoreDependencies.cmake
#	Installation/lib/cmake/CGAL/CGALConfig.cmake
#	Polygon_mesh_processing/include/CGAL/Polygon_mesh_slicer.h
#	Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt
#	Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt
2019-05-14 16:18:24 +02:00
Laurent Rineau 870ff45168 Merge pull request #3886 from lrineau/CGAL-Adapt_to_Boost_1.70-GF
Adapt to Boost 1.70
2019-05-07 15:48:03 +02:00
Laurent Rineau aebb058b58 Merge pull request #3886 from lrineau/CGAL-Adapt_to_Boost_1.70-GF
Adapt to Boost 1.70
2019-05-07 15:45:00 +02:00
Laurent Rineau 5e65027d46 I did not know clang defines __GNUC__
The patch now uses `BOOST_GCC`, to avoid including clang in the
conditional.
2019-04-29 09:52:14 +02:00
Sébastien Loriot 5bac189dc3 remove cpp11 workaround for CORE 2019-03-29 10:41:50 +01:00
Andreas Fabri f1e1b57fa4 Remove call of setprecision() as it has no effect 2019-01-31 19:00:14 +01:00
Sébastien Loriot cbe02d40e7 rename ilogb macro 2018-11-06 10:59:54 +01:00
Laurent Rineau 2d7dcb0c39 Merge pull request #3166 from sloriot/Core-bigfloat_from_ui
Add missing constructor for unsigned int
2018-06-14 17:36:49 +02:00
Sébastien Loriot 7511b3e1b2 add missing constructor for unsigned int 2018-06-12 12:59:51 +02:00
Sébastien Loriot ef09d971e2 undo unwanted change in 777d305 2018-06-11 22:09:37 +02:00
Andreas Fabri 777d3057d9 Undef the macros at the end, as they are not identical (one has an EXPORT) 2018-05-23 11:48:58 +02:00
Andreas Fabri b33ab791e1 Disable a warning. Fix an allocator call 2018-05-15 15:37:51 +02:00
Laurent Rineau 78e7060525 Merge pull request #2712 from afabri/CGAL-VC+warnlevel_4-GF
Deal with VC++ warnings of level /W4
2018-02-19 14:27:06 +01:00
Andreas Fabri d38fea5ffe Add missing #include 2018-02-12 09:44:10 +00:00
Andreas Fabri abe933a684 Address the warning concerning SCL_SECURE for VC++ 2018-02-09 15:00:14 +00:00
Andreas Fabri c9728abdee build CORE lib without warnings 2018-02-01 10:52:44 +00:00
Andreas Fabri 6cc385c6ec Number_types 2018-01-17 15:47:18 +00:00
Andreas Fabri cbf3a16471 libs compile without warning 2018-01-17 15:02:32 +00:00
Laurent Rineau 3c6640bf59 Merge pull request #1436 from lrineau/CGAL-new_cmake-GF
Renewal of CMake scripts: header-only, ctest, CMake>=3.1

# Conflicts:
#	Installation/config/testfiles/CGAL_CFG_NESTED_CLASS_FRIEND_DECLARATION_BUG.cpp
2017-12-05 18:20:05 +01:00
Laurent Rineau 26fe3df693 Try to fix link errors on Windows 2017-11-29 11:22:30 +01:00
Laurent Rineau bfc654c929 Change the exports of CGAL_Core, to fix a link error 2017-11-28 17:59:18 +01:00
Sébastien Loriot 8cdfad0d08 add missing URL and Id tags 2017-11-15 22:58:57 +01:00
Sébastien Loriot 6b568a8f62 add SPDX identifiers for Core 2017-11-12 10:21:35 +01:00
Sébastien Loriot 0698f79aff add SPDX identifier for files under the LGPL-3+ license 2017-11-12 10:17:50 +01:00
Laurent Rineau 8dfa4f4dc8 Fix link error of demo/Polyhedron, in Debug and CGAL_HEADER_ONLY 2017-07-27 17:28:21 +02:00
Andreas Fabri cc3c4c93ba CGAL_Core: make it less verbose to fix #1915 2017-04-03 12:36:43 +02:00
Laurent Rineau 6d79ebdaf8 Merge pull request #1916 from sloriot/Core-bug_fix_large_MSB
Fix Expr computation when a Node in the tree has a large MSB bound
2017-02-21 17:50:21 +01:00
Laurent Rineau 784ce69bea Merge pull request #1923 from sloriot/CORE-Expr_approx_bound
Make sure the approximation exceeds the separation bound
2017-02-21 17:50:08 +01:00
Sébastien Loriot aab162e81c use a thighter approximation 2017-02-21 17:30:24 +01:00
Sébastien Loriot 3dc5f7d800 make sure the approximation exceeds the separation bound 2017-02-21 17:12:56 +01:00
Sébastien Loriot e9cfce4f45 Do the approximation computation even if MSB bounds are too large
extLong manages overflow and underflow, this patch forces the
approximation to be done even if the bounds are too large
2017-02-20 18:15:49 +01:00
Laurent Rineau b73a88babc CGAL_Core MemoryPool<T> will always use Boost.Thread with g++
Because of bug in gcc, even if the C++11 `thread_local` keyword can be
used, it cannot be used for the TLS static member of the class template
`MemoryPool<T>`. That triggers a bug in gcc (tested with g++ 6.3.1):
```
.../include/CGAL/CORE/MemoryPool.h:113:25: error: redefinition of 'bool __tls_guard'
 MemoryPool<T, nObjects> MemoryPool<T, nObjects>::memPool;
                         ^~~~~~~~~~~~~~~~~~~~~~~
.../include/CGAL/CORE/MemoryPool.h:113:25: note: 'bool __tls_guard' previously declared here
.../include/CGAL/CORE/MemoryPool.h:113: confused by earlier errors, bailing out
Preprocessed source stored into /tmp/cc4xCWuR.out file, please attach this to your bugreport.
```

The bug seems to be from g++ >= 5:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54948
2017-02-08 17:05:13 +01:00
Laurent Rineau 4e1b250b9c Followup for PR #1744
The commit 6c77740485 was not complete:
> CORE MemoryPool<T> has to be destroyed last
>
> If Boost implementation of thread local storage is used, the order of
> destructors is reversed, compared to C++11 `static thread_local`. The
> solution for CORE `MemoryPool<T>` is to make the static variable a
> static member of the class, and initialize the pointer only inside the
> function. That ensures that the destructor will be called after the
> destructor of local static variables.

Actually the explanation about the reverse order is not right, and even
with C++ `thread_local`, we have to ensure that the static data member
of `MemoryPool<T>` is created before any other CORE static variable.

This commit is a followup of the commit
6c7774048521d2779d1657871f476624a46d220b: even in C++11, the `memPool`
variable becomes a thread-local data member, instead of a thread-local
variable at function scope.

Fix #1844.
2017-02-07 14:18:32 +01:00
Laurent Rineau ee21a5a077 Merge pull request #1744 from afabri/CORE-static-GF
CGAL_CORE:  Make it thread safe
2017-01-12 11:10:38 +01:00
Laurent Rineau 6c77740485 CORE MemoryPool<T> has to be destroyed last
If Boost implementation of thread local storage is used, the order of
destructors is reversed, compared to C++11 `static thread_local`. The
solution for CORE `MemoryPool<T>` is to make the static variable a
static member of the class, and initialize the pointer only inside the
function. That ensures that the destructor will be called after the
destructor of local static variables.
2017-01-10 16:27:44 +01:00
Andreas Fabri e869afa8af bugfix 2017-01-10 14:09:27 +01:00
Andreas Fabri 7b6e4a27ca Even read only static const variables must be thread local
as otherwise their destructor is called after the destructor
of the CORE memory pool.
2017-01-10 13:53:50 +01:00
Andreas Fabri 46c6ea1f3f Deal with CGAL_NO_ATOMIC 2017-01-09 15:08:42 +01:00
Sébastien Loriot e696a857f9 use direct initialization also in header-only mode 2017-01-09 15:08:42 +01:00
Sébastien Loriot 109f021a3a use direct initialization 2017-01-09 15:08:42 +01:00
Andreas Fabri 185208646a fixed and tested 2017-01-09 15:08:42 +01:00
Andreas Fabri f1a39ef43f No need for static 2017-01-09 15:08:42 +01:00