Commit Graph

81 Commits

Author SHA1 Message Date
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 9271ddf1c9 Same for CGAL_Core/src/CGAL_Core/CMakeLists.txt 2017-02-10 19:01:13 +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
Laurent Rineau 01c804ca67 Merge pull request #1454 from lrineau/CGAL_Core-fix_imports_exports-lrineau
CGAL_Core: fix -fvisibility issues on Linux
2017-01-09 15:34:03 +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
Andreas Fabri 8972c92a14 make Memory pool thread safe 2017-01-09 15:08:42 +01:00
Andreas Fabri 1b2fcdb82a make static variable for pretty printing const 2017-01-09 15:08:42 +01:00
Andreas Fabri fab26b5a05 make variables atomic 2017-01-09 15:08:42 +01:00
Andreas Fabri 1d0ec5bd38 WIP: make variables atomic; it no longer compiles :( 2017-01-09 15:08:42 +01:00
Andreas Fabri 8faf83433b declare constants const 2017-01-09 15:08:42 +01:00
Andreas Fabri 4b79bd484f NT_TYPE is not used anywhere 2017-01-09 15:08:42 +01:00
Andreas Fabri 36b34b3e63 declare constants const 2017-01-09 15:08:42 +01:00
Andreas Fabri e0d026d552 polyWilkinson is not used anywhere 2017-01-09 15:08:42 +01:00
Andreas Fabri 4f71d02c6f Remove random functions as they are not in the CGAL Core API 2017-01-09 15:08:42 +01:00
Andreas Fabri 5321a90c27 Remove the geometry files 2017-01-09 15:08:42 +01:00
Andreas Fabri fa7217c682 declare constants const 2017-01-09 15:08:41 +01:00
Laurent Rineau 71965fa7e7 Fix a warning 2016-11-14 15:18:11 +01:00
Andreas Fabri bb033e2037 Remove export declaration for member functions as the class is exported. Suppress VC++ warnings 2016-09-22 12:11:35 +02:00
Laurent Rineau 54fe1b8b56 CGAL_Core: fix -fvisibility issues on Linux 2016-09-14 16:12:02 +02:00
Sébastien Loriot 6b338eeb1f improve the name of projects in cmake scripts of examples 2016-09-08 00:02:55 +02:00
Sébastien Loriot ff1b240a37 replace assert by CGAL_assertion in CGAL code 2016-08-25 11:12:17 +02:00
Guillaume Damiand 0fc00c87e3 cgal core link for header only 2016-06-24 14:37:53 +02:00
Laurent Rineau 68df272c01 Fix CORE header-only 2016-03-09 18:53:58 +01:00
Clement Jamin dd3ed5b07c Remove the "S" from HEADERS_ONLY 2016-03-09 10:58:55 +01:00
Clement Jamin 35a11c0e13 Use CGAL_HEADERS_ONLY everywhere 2016-03-09 10:56:11 +01:00
Guillaume Damiand 6d55c3b140 Do the target_link_libraries in all CGAL_XXX libraries only in non header only mode. 2016-03-09 10:22:43 +01:00
Philipp Möller 4211a4f01e Globally remove CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS
This is a Cmake 2.4.3 variable that isn't even documented anymore.
2016-02-16 17:02:55 +01:00
Andreas Fabri 42aa03596f We delete blocks if all T's are on the internal free list 2016-01-28 10:35:49 +01:00
Andreas Fabri 8f63e80716 Do not warn as it potentially covers other warnings in the testsuite 2016-01-27 15:58:24 +01:00
Andreas Fabri d7bfb7f754 Only delete if it is possible 2016-01-27 15:47:57 +01:00
Andreas Fabri 145ac2a3d7 Replace CGAL_assertion with CGAL_warning 2016-01-26 16:57:09 +01:00
Andreas Fabri 24f6180732 Add full instantiation of ConstPolyRep<BigRat> 2016-01-22 08:40:26 +01:00
Andreas Fabri 28e9563943 Add full instantiation of ConstPolyRep<BigInt> 2016-01-22 08:28:43 +01:00
Andreas Fabri b93783010b fix 2016-01-21 08:40:58 +01:00
Andreas Fabri d45ce47cc3 more exports more instantiations 2016-01-19 08:56:08 +01:00
Andreas Fabri fa2384de63 Assure that new/delete happen BOTH inside the CORE dll 2016-01-18 17:39:15 +01:00
Andreas Fabri a27b6f453f fix: use ::operator delete(void*) 2016-01-16 11:52:49 +01:00