Compact_mesh_cell_base_3 has a different API than Mesh_cell_base_3. Unless
one uses the default template parameters, the new API is less
convenient. We cannot deprecate Mesh_cell_base_3 so easily.
- In Mesh_3, fix the sliver perturber
- the invalidatation of caches,
- the topological check (in check_surface_mesh) was not enough.
Tested in CGAL-4.3-Ic-194
The error was triggered by the following code in CGAL/Mesh_3/C3T3_helpers.h:
template <typename CellForwardIterator>
void reset_circumcenter_cache(CellForwardIterator cells_begin,
CellForwardIterator cells_end) const
{
namespace bl = boost::lambda;
std::for_each(cells_begin, cells_end,
bl::bind(&Cell::invalidate_circumcenter, *bl::_1) );
}
See for example test results here:
CGAL-4.3-Ic-193/Polyhedron_Demo/TestReport_lrineau_i686_Linux-2.6_g++-4.1.2_CentOS-5.1.gz
The testsuite showed that our previous patch was not correct: the sliver
cache is modified by a call to C3T3_helper::min_sliver_in_c3t3_value() when
its parameter use_cache=false. For that reason, the resetting of sliver
caches was not done at the right place in update_mesh_no_topo_change().
On the paper, dleft_frac must be greater that 1.0. But with rounding
errors, it can be slightly lower. Let's try to compare it with
1.0-2*ulp(1.0).
I do not like that sort of hack but I do not know what to do best.
| commit 01ee3e94b6
| Author: Laurent Rineau <laurent.rineau@cgal.org>
| Date: Tue Jun 25 12:53:24 2013 +0200
|
| Use 'std::istream::operator!()' twice to replace 'operator bool()' (C++11 only)
|
| Fixes a compilation error from clang:
|
| include/CGAL/IO/File_binary_mesh_3.h:39:10: error: no viable conversion from 'std::ostream' (aka 'basic_ostream<char>') to 'bool'
| return os << c3t3;
| ^~~~~~~~~~
The return type of operator<< os std::ostream&, and not bool!
fix c++11 issue reported by clang with libc++ stdlib:
ostream no longer has a implicit conversion operator to void*
This behavior is detected using the boost macros
BOOST_NO_EXPLICIT_CONVERSION_OPERATORS (up to 1.50) and
BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS (from 1.51)
Successfully tested in CGAL-4.3-Ic-108 and CGAL-4.3-Ic-106
Approved by the interim release manager
this happens if you have an empty line or the text directly after /!*
to find them in the generated documentation, grep for "pre class=\"fragment\""
(a few of them are legitimate however)
The test test_c3t3_io.cpp writes and reads back a c3t3. Then it tries to
compare the two triangulations. The issue is that the facets iterator of
Triangulation_3 is not deterministic, at least on Windows.
Fixes a compilation error from clang:
include/CGAL/IO/File_binary_mesh_3.h:39:10: error: no viable conversion from 'std::ostream' (aka 'basic_ostream<char>') to 'bool'
return os << c3t3;
^~~~~~~~~~