Moved helper struct outside of TBB macros to fix sequential compilation

This commit is contained in:
Mael Rouxel-Labbé 2018-10-11 10:05:37 +02:00
parent 7e75a8a243
commit bb19c965f9
1 changed files with 19 additions and 19 deletions

View File

@ -763,6 +763,25 @@ namespace CGAL {
return std::copy(vertices.begin(), vertices.end(), res);
}
// In parallel operations, we need to be able to check the health of the 'hint' vertex handle,
// which might be invalided by other threads. One way to do that is the 'is_vertex()' function
// of the TDS, but it runs in O(sqrt(n)) complexity. When we are using our TDS, we can use
// a lower level function from the compact container, which runs in constant time.
template <typename TDS_>
struct Vertex_validity_checker
{
bool operator()(const typename TDS_::Vertex_handle vh_, const TDS_& tds_) { return tds_.is_vertex(vh_); }
};
template <typename T1, typename T2, typename T3>
struct Vertex_validity_checker<CGAL::Triangulation_data_structure_3<T1, T2, T3> >
{
typedef CGAL::Triangulation_data_structure_3<T1, T2, T3> TDS_;
bool operator()(const typename TDS_::Vertex_handle vh_, const TDS_& tds_) {
return tds_.vertices().is_used(vh_); }
};
void remove (Vertex_handle v);
// Concurrency-safe
// See Triangulation_3::remove for more information
@ -1291,25 +1310,6 @@ namespace CGAL {
}
};
// In parallel operations, we need to be able to check the health of the 'hint' vertex handle,
// which might be invalided by other threads. One way to do that is the 'is_vertex()' function
// of the TDS, but it runs in O(sqrt(n)) complexity. When we are using our TDS, we can use
// a lower level function from the compact container, which runs in constant time.
template <typename TDS_>
struct Vertex_validity_checker
{
bool operator()(const typename TDS_::Vertex_handle vh_, const TDS_& tds_) { return tds_.is_vertex(vh_); }
};
template <typename T1, typename T2, typename T3>
struct Vertex_validity_checker<CGAL::Triangulation_data_structure_3<T1, T2, T3> >
{
typedef CGAL::Triangulation_data_structure_3<T1, T2, T3> TDS_;
bool operator()(const typename TDS_::Vertex_handle vh_, const TDS_& tds_) {
return tds_.vertices().is_used(vh_); }
};
// Functor for parallel insert(begin, end) function
template <typename RT>
class Insert_point