Replace LINKED_WITH_TBB by CGAL_LINKED_WITH_TBB.

This commit is contained in:
Clément Jamin 2012-06-13 09:33:08 +00:00
parent 298e56aa92
commit b268598665
24 changed files with 123 additions and 110 deletions

View File

@ -38,7 +38,7 @@
#include <algorithm> #include <algorithm>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# ifdef CGAL_MESH_3_WORKSHARING_USES_TASK_SCHEDULER # ifdef CGAL_MESH_3_WORKSHARING_USES_TASK_SCHEDULER
# include <tbb/task.h> # include <tbb/task.h>
# endif # endif
@ -137,7 +137,7 @@ protected:
}; };
// Parallel // Parallel
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
template <> template <>
class Mesher_level_base <Parallel_tag> class Mesher_level_base <Parallel_tag>
{ {
@ -170,7 +170,7 @@ protected:
tbb::task *m_empty_root_task; tbb::task *m_empty_root_task;
#endif #endif
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
@ -537,13 +537,13 @@ public:
previous_level.refine(visitor.previous_level()); previous_level.refine(visitor.previous_level());
if(! no_longer_element_to_refine() ) if(! no_longer_element_to_refine() )
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
process_a_batch_of_elements(visitor); process_a_batch_of_elements(visitor);
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
process_one_element(visitor); process_one_element(visitor);
} }
} }
@ -564,7 +564,7 @@ public:
refine_sequentially_up_to_N_vertices(Mesh_visitor visitor, refine_sequentially_up_to_N_vertices(Mesh_visitor visitor,
int approx_max_num_mesh_vertices) int approx_max_num_mesh_vertices)
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -573,7 +573,7 @@ public:
CGAL_assertion_msg(triangulation().get_lock_data_structure() == 0, CGAL_assertion_msg(triangulation().get_lock_data_structure() == 0,
"In refine_sequentially_up_to_N_vertices, the triangulation's locking data structure should be NULL"); "In refine_sequentially_up_to_N_vertices, the triangulation's locking data structure should be NULL");
} }
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
int count = 0; int count = 0;
@ -588,7 +588,7 @@ public:
} }
#ifdef CGAL_MESH_3_TASK_SCHEDULER_WITH_LOCALIZATION_IDS #ifdef CGAL_MESH_3_TASK_SCHEDULER_WITH_LOCALIZATION_IDS
# ifdef LINKED_WITH_TBB # ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -626,7 +626,7 @@ public:
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
return 0; return 0;
} }
@ -728,7 +728,7 @@ public:
} }
#endif #endif
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
/** /**
* This function takes N elements from the queue, and try to refine * This function takes N elements from the queue, and try to refine
* it in parallel. * it in parallel.
@ -1007,7 +1007,7 @@ public:
//======================================================= //=======================================================
} }
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
template <class Mesh_visitor> template <class Mesh_visitor>
Mesher_level_conflict_status Mesher_level_conflict_status
@ -1023,7 +1023,7 @@ public:
Zone zone; Zone zone;
#ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING #ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
//========================================= //=========================================
//==== Simple Grid locking //==== Simple Grid locking
//========================================= //=========================================
@ -1043,7 +1043,7 @@ public:
result = test_point_conflict(p, zone, visitor); result = test_point_conflict(p, zone, visitor);
} }
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
#endif // CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING #endif // CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
{ {
//========================================= //=========================================
@ -1052,7 +1052,7 @@ public:
before_conflicts(e, p, visitor); before_conflicts(e, p, visitor);
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
//=========== Concurrent? ============= //=========== Concurrent? =============
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -1068,7 +1068,7 @@ public:
} }
//=========== or not? ================= //=========== or not? =================
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
bool facet_not_in_its_cz = false; bool facet_not_in_its_cz = false;
zone = conflicts_zone(p, e, facet_not_in_its_cz); zone = conflicts_zone(p, e, facet_not_in_its_cz);
@ -1111,7 +1111,7 @@ public:
Vertex_handle vh = insert(p, zone); Vertex_handle vh = insert(p, zone);
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -1127,7 +1127,7 @@ public:
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
after_insertion(vh, visitor); after_insertion(vh, visitor);
} }
@ -1283,13 +1283,13 @@ public:
else else
if( ! no_longer_element_to_refine() ) if( ! no_longer_element_to_refine() )
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
process_a_batch_of_elements(visitor); process_a_batch_of_elements(visitor);
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
process_one_element(visitor); process_one_element(visitor);
} }
return ! is_algorithm_done(); return ! is_algorithm_done();

View File

@ -76,7 +76,7 @@ if ( CGAL_FOUND )
endif() endif()
if( TBB_FOUND ) if( TBB_FOUND )
add_definitions( -DNOMINMAX -DLINKED_WITH_TBB ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB )
include_directories ( ${TBB_INCLUDE_DIRS} ) include_directories ( ${TBB_INCLUDE_DIRS} )
link_directories( ${TBB_LIBRARY_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} )
endif( TBB_FOUND ) endif( TBB_FOUND )

View File

@ -1,5 +1,5 @@
//#undef LINKED_WITH_TBB //#undef CGAL_LINKED_WITH_TBB
#include <iostream> #include <iostream>
#include <string> #include <string>
@ -17,6 +17,12 @@ const char * const BENCHMARK_SCRIPT_FILENAME =
"D:/INRIA/CGAL/workingcopy/Mesh_3/benchmark/Mesh_3/concurrency_script.txt"; "D:/INRIA/CGAL/workingcopy/Mesh_3/benchmark/Mesh_3/concurrency_script.txt";
// ==========================================================================
// BENCHMARK GENERAL PARAMETERS
// ==========================================================================
//#define MESH_3_WITH_FEATURES
// ========================================================================== // ==========================================================================
// MESH_3 GENERAL PARAMETERS // MESH_3 GENERAL PARAMETERS
// ========================================================================== // ==========================================================================
@ -24,7 +30,6 @@ const char * const BENCHMARK_SCRIPT_FILENAME =
//#define CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE //#define CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE
//#define CGAL_MESH_3_VERBOSE //#define CGAL_MESH_3_VERBOSE
//#define CGAL_MESH_3_VERY_VERBOSE //#define CGAL_MESH_3_VERY_VERBOSE
//#define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE
#define CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING #define CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING
const int FACET_ANGLE = 25; const int FACET_ANGLE = 25;
@ -37,8 +42,8 @@ const int TET_SHAPE = 3;
#ifdef CONCURRENT_MESH_3 #ifdef CONCURRENT_MESH_3
# ifndef LINKED_WITH_TBB # ifndef CGAL_LINKED_WITH_TBB
//# error("LINKED_WITH_TBB not defined.") // CJTODO TEMP //# error("CGAL_LINKED_WITH_TBB not defined.") // CJTODO TEMP
# endif # endif
// ========================================================================== // ==========================================================================
@ -51,22 +56,23 @@ const int TET_SHAPE = 3;
//#define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE //#define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE
// ========================================================================== // ==========================================================================
// Concurrent refinement // Concurrency config
// ========================================================================== // ==========================================================================
const char * const CONFIG_FILENAME = const char * const CONFIG_FILENAME =
"D:/INRIA/CGAL/workingcopy/Mesh_3/demo/Mesh_3/concurrent_mesher_config.cfg"; "D:/INRIA/CGAL/workingcopy/Mesh_3/demo/Mesh_3/concurrent_mesher_config.cfg";
//# define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE
# define CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE
//# define CGAL_MESH_3_ACTIVATE_GRID_INDEX_CACHE_IN_VERTEX // DOES NOT WORK YET
// ================= // =================
// Locking strategy // Locking strategy
// ================= // =================
# define CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE
# define CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING # define CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
//# define CGAL_MESH_3_CONCURRENT_REFINEMENT_LOCK_ADJ_CELLS // USELESS, FOR TESTS ONLY //# define CGAL_MESH_3_CONCURRENT_REFINEMENT_LOCK_ADJ_CELLS // USELESS, FOR TESTS ONLY
//# define CGAL_MESH_3_ACTIVATE_GRID_INDEX_CACHE_IN_VERTEX // DOES NOT WORK YET
// ===================== // =====================
// Worksharing strategy // Worksharing strategy
@ -82,7 +88,7 @@ const int TET_SHAPE = 3;
//# endif //# endif
//# define CGAL_MESH_3_LOAD_BASED_WORKSHARING // Not recommended //# define CGAL_MESH_3_LOAD_BASED_WORKSHARING // Not recommended
//# define CGAL_MESH_3_TASK_SCHEDULER_SORTED_BATCHES_WITH_MULTISET //# define CGAL_MESH_3_TASK_SCHEDULER_SORTED_BATCHES_WITH_MULTISET
//# define CGAL_MESH_3_TASK_SCHEDULER_SORTED_BATCHES_WITH_SORT # define CGAL_MESH_3_TASK_SCHEDULER_SORTED_BATCHES_WITH_SORT
# endif # endif
// ========================================================================== // ==========================================================================
@ -113,14 +119,13 @@ const int TET_SHAPE = 3;
# define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN # define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN
// For better performance on meshes like fandisk // For better performance on meshes like fandisk
//# define CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE # define CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE
#endif // CONCURRENT_MESH_3 #endif // CONCURRENT_MESH_3
#define MESH_3_PROFILING #define MESH_3_PROFILING
//#define CHECK_AND_DISPLAY_THE_NUMBER_OF_BAD_ELEMENTS_IN_THE_END //#define CHECK_AND_DISPLAY_THE_NUMBER_OF_BAD_ELEMENTS_IN_THE_END
//#define MESH_3_WITH_FEATURES
// ========================================================================== // ==========================================================================
// ========================================================================== // ==========================================================================

View File

@ -75,7 +75,7 @@ else( ACTIVATE_CONCURRENT_MESH_3 )
endif() endif()
if( TBB_FOUND ) if( TBB_FOUND )
add_definitions( -DNOMINMAX -DLINKED_WITH_TBB ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB )
include_directories ( ${TBB_INCLUDE_DIRS} ) include_directories ( ${TBB_INCLUDE_DIRS} )
link_directories( ${TBB_LIBRARY_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} )
endif( TBB_FOUND ) endif( TBB_FOUND )

View File

@ -38,8 +38,8 @@
#ifdef CONCURRENT_MESH_3 #ifdef CONCURRENT_MESH_3
# ifndef LINKED_WITH_TBB # ifndef CGAL_LINKED_WITH_TBB
# pragma error("LINKED_WITH_TBB not defined.") # pragma error("CGAL_LINKED_WITH_TBB not defined.")
# endif # endif
# define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE # define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE

View File

@ -56,7 +56,7 @@ if ( CGAL_FOUND )
endif() endif()
if( TBB_FOUND ) if( TBB_FOUND )
add_definitions( -DNOMINMAX -DLINKED_WITH_TBB ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB )
include_directories ( ${TBB_INCLUDE_DIRS} ) include_directories ( ${TBB_INCLUDE_DIRS} )
link_directories( ${TBB_LIBRARY_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} )
endif( TBB_FOUND ) endif( TBB_FOUND )

View File

@ -20,7 +20,7 @@
#ifndef CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H #ifndef CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H
#define CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H #define CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <CGAL/Mesh_3/Concurrent_mesher_config.h> #include <CGAL/Mesh_3/Concurrent_mesher_config.h>
@ -502,12 +502,12 @@ typedef Simple_grid_locking_ds_with_thread_ids LockDataStructureType;
} } //namespace CGAL::Mesh_3 } } //namespace CGAL::Mesh_3
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
namespace CGAL { namespace Mesh_3 { namespace CGAL { namespace Mesh_3 {
typedef void LockDataStructureType; typedef void LockDataStructureType;
} } //namespace CGAL::Mesh_3 } } //namespace CGAL::Mesh_3
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
#endif // CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H #endif // CGAL_MESH_3_LOCKING_DATA_STRUCTURES_H

View File

@ -31,7 +31,7 @@
#include <CGAL/Bbox_3.h> #include <CGAL/Bbox_3.h>
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/atomic.h> #include <tbb/atomic.h>
#endif #endif
@ -492,14 +492,14 @@ private:
{ {
typedef size_type type; typedef size_type type;
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel: atomic // Parallel: atomic
template<> template<>
struct Number_of_elements<Parallel_tag> struct Number_of_elements<Parallel_tag>
{ {
typedef tbb::atomic<size_type> type; typedef tbb::atomic<size_type> type;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
// Private date members // Private date members
Triangulation tr_; Triangulation tr_;

View File

@ -80,7 +80,7 @@ protected:
char bits_; char bits_;
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template<> template<>
class Mesh_surface_cell_base_3_base<Parallel_tag> class Mesh_surface_cell_base_3_base<Parallel_tag>
@ -119,7 +119,7 @@ protected:
/// Stores visited facets (4 first bits) /// Stores visited facets (4 first bits)
bool visited_facets[4]; bool visited_facets[4];
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/** /**

View File

@ -44,7 +44,7 @@
#include <CGAL/Mesh_3/Profiling_tools.h> #include <CGAL/Mesh_3/Profiling_tools.h>
#endif #endif
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# include <tbb/compat/thread> # include <tbb/compat/thread>
#endif #endif
@ -73,7 +73,7 @@ protected:
void set_bbox(const Bbox_3 &) {} void set_bbox(const Bbox_3 &) {}
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <> template <>
class Mesher_3_base<Parallel_tag> class Mesher_3_base<Parallel_tag>
@ -104,7 +104,7 @@ protected:
/// Worksharing data structure /// Worksharing data structure
WorksharingDataStructureType m_worksharing_ds; WorksharingDataStructureType m_worksharing_ds;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
@ -399,7 +399,7 @@ void
Mesher_3<C3T3,MC,MD>:: Mesher_3<C3T3,MC,MD>::
initialize() initialize()
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -480,7 +480,7 @@ initialize()
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
facets_mesher_.scan_triangulation(); facets_mesher_.scan_triangulation();

View File

@ -26,7 +26,7 @@
#define CGAL_MESH_3_PROFILING_TOOLS_H #define CGAL_MESH_3_PROFILING_TOOLS_H
// TBB timers // TBB timers
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/tick_count.h> #include <tbb/tick_count.h>
struct WallClockTimer struct WallClockTimer
{ {

View File

@ -25,7 +25,7 @@
#include <CGAL/Mesher_level.h> #include <CGAL/Mesher_level.h>
#include <CGAL/Mesher_level_default_implementations.h> #include <CGAL/Mesher_level_default_implementations.h>
#include <CGAL/Meshes/Triangulation_mesher_level_traits_3.h> #include <CGAL/Meshes/Triangulation_mesher_level_traits_3.h>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/tbb.h> #include <tbb/tbb.h>
#endif #endif
@ -115,7 +115,7 @@ protected:
mutable Index m_last_vertex_index; mutable Index m_last_vertex_index;
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <typename Index> template <typename Index>
class Refine_cells_3_base<Index, Parallel_tag> class Refine_cells_3_base<Index, Parallel_tag>
@ -136,7 +136,7 @@ protected:
/// Stores index of vertex that may be inserted into triangulation /// Stores index of vertex that may be inserted into triangulation
mutable tbb::enumerable_thread_specific<Index> m_last_vertex_index; mutable tbb::enumerable_thread_specific<Index> m_last_vertex_index;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
// Class Refine_cells_3 // Class Refine_cells_3
@ -155,7 +155,7 @@ template<class Tr,
class Complex3InTriangulation3, class Complex3InTriangulation3,
class Previous_, class Previous_,
class Concurrency_tag, // CJTODO => change to Sequential_tag class Concurrency_tag, // CJTODO => change to Sequential_tag
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
class Container_ = typename boost::mpl::if_c // (parallel/sequential?) class Container_ = typename boost::mpl::if_c // (parallel/sequential?)
< <
boost::is_base_of<Parallel_tag, Concurrency_tag>::value, boost::is_base_of<Parallel_tag, Concurrency_tag>::value,
@ -195,7 +195,7 @@ template<class Tr,
# endif # endif
>::type // boost::if (parallel/sequential) >::type // boost::if (parallel/sequential)
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
// Sequential // Sequential
class Container_ = class Container_ =
@ -220,7 +220,7 @@ template<class Tr,
typename Criteria::Cell_quality> typename Criteria::Cell_quality>
# endif # endif
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
> >
class Refine_cells_3 class Refine_cells_3
: public Refine_facets_3_base<typename MeshDomain::Index, Concurrency_tag> : public Refine_facets_3_base<typename MeshDomain::Index, Concurrency_tag>
@ -407,7 +407,9 @@ private:
/// Computes badness and add to queue if needed /// Computes badness and add to queue if needed
void compute_badness_internal(const Cell_handle& cell, Sequential_tag); void compute_badness_internal(const Cell_handle& cell, Sequential_tag);
#ifdef CGAL_LINKED_WITH_TBB
void compute_badness_internal(const Cell_handle& cell, Parallel_tag); void compute_badness_internal(const Cell_handle& cell, Parallel_tag);
#endif
void compute_badness(const Cell_handle& cell); void compute_badness(const Cell_handle& cell);
// Updates cells incident to vertex, and add them to queue if needed // Updates cells incident to vertex, and add them to queue if needed
@ -520,7 +522,7 @@ scan_triangulation_impl()
#endif #endif
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Ct>::value) if (boost::is_base_of<Parallel_tag, Ct>::value)
{ {
@ -571,7 +573,7 @@ scan_triangulation_impl()
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
std::cerr << "Scanning triangulation for bad cells (sequential)... "; std::cerr << "Scanning triangulation for bad cells (sequential)... ";
@ -808,6 +810,7 @@ compute_badness_internal(const Cell_handle& cell, Sequential_tag)
} }
} }
#ifdef CGAL_LINKED_WITH_TBB
template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_> template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_>
void void
Refine_cells_3<Tr,Cr,MD,C3T3_,P_,Ct,C_>:: Refine_cells_3<Tr,Cr,MD,C3T3_,P_,Ct,C_>::
@ -819,13 +822,18 @@ compute_badness_internal(const Cell_handle& cell, Parallel_tag)
this->add_bad_element(std::make_pair(cell, cell->get_erase_counter()), *is_cell_bad); this->add_bad_element(std::make_pair(cell, cell->get_erase_counter()), *is_cell_bad);
} }
} }
#endif
template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_> template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_>
void void
Refine_cells_3<Tr,Cr,MD,C3T3_,P_,Ct,C_>:: Refine_cells_3<Tr,Cr,MD,C3T3_,P_,Ct,C_>::
compute_badness(const Cell_handle& cell) compute_badness(const Cell_handle& cell)
{ {
#ifdef CGAL_LINKED_WITH_TBB
compute_badness_internal(cell, Ct()); compute_badness_internal(cell, Ct());
#else
compute_badness_internal(cell, Sequential_tag());
#endif
} }
template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_> template<class Tr, class Cr, class MD, class C3T3_, class P_, class Ct, class C_>

View File

@ -28,7 +28,7 @@
#include <CGAL/Mesher_level.h> #include <CGAL/Mesher_level.h>
#include <CGAL/Mesher_level_default_implementations.h> #include <CGAL/Mesher_level_default_implementations.h>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/tbb.h> #include <tbb/tbb.h>
#endif #endif
@ -138,7 +138,7 @@ protected:
mutable Index m_last_vertex_index; mutable Index m_last_vertex_index;
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <typename Index> template <typename Index>
class Refine_facets_3_base<Index, Parallel_tag> class Refine_facets_3_base<Index, Parallel_tag>
@ -159,7 +159,7 @@ protected:
/// Stores index of vertex that may be inserted into triangulation /// Stores index of vertex that may be inserted into triangulation
mutable tbb::enumerable_thread_specific<Index> m_last_vertex_index; mutable tbb::enumerable_thread_specific<Index> m_last_vertex_index;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
// Class Refine_facets_3 // Class Refine_facets_3
@ -179,7 +179,7 @@ template<class Tr,
class Complex3InTriangulation3, class Complex3InTriangulation3,
class Previous_level_, class Previous_level_,
class Concurrency_tag, class Concurrency_tag,
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
class Container_ = typename boost::mpl::if_c // (parallel/sequential?) class Container_ = typename boost::mpl::if_c // (parallel/sequential?)
< <
boost::is_base_of<Parallel_tag, Concurrency_tag>::value, boost::is_base_of<Parallel_tag, Concurrency_tag>::value,
@ -221,7 +221,7 @@ template<class Tr,
# endif # endif
>::type // boost::if (parallel/sequential) >::type // boost::if (parallel/sequential)
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
// Sequential // Sequential
class Container_ = class Container_ =
@ -247,7 +247,7 @@ template<class Tr,
Meshes::Double_map_container<typename Tr::Facet, Meshes::Double_map_container<typename Tr::Facet,
typename Criteria::Facet_quality> typename Criteria::Facet_quality>
# endif # endif
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
> >
class Refine_facets_3 class Refine_facets_3
: public Refine_facets_3_base<typename MeshDomain::Index, Concurrency_tag> : public Refine_facets_3_base<typename MeshDomain::Index, Concurrency_tag>
@ -558,7 +558,7 @@ private:
/// Insert facet into refinement queue /// Insert facet into refinement queue
void insert_bad_facet(Facet& facet, const Quality& quality) void insert_bad_facet(Facet& facet, const Quality& quality)
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value) if (boost::is_base_of<Parallel_tag, Concurrency_tag>::value)
{ {
@ -572,7 +572,7 @@ private:
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
#if defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \ #if defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \
|| defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE) || defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE)
@ -608,11 +608,11 @@ private:
this->remove_element(canonical_facet); this->remove_element(canonical_facet);
#endif #endif
} }
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
/// Removes facet from refinement queue /// Removes facet from refinement queue
// Parallel: it's always lazy, so do nothing // Parallel: it's always lazy, so do nothing
void remove_bad_facet(Facet& facet, Parallel_tag) {} void remove_bad_facet(Facet& facet, Parallel_tag) {}
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/** /**
* Action to perform on a facet inside the conflict zone before insertion * Action to perform on a facet inside the conflict zone before insertion
@ -727,7 +727,7 @@ scan_triangulation_impl()
<< "Tets : " << r_c3t3_.triangulation().number_of_cells() << std::endl; << "Tets : " << r_c3t3_.triangulation().number_of_cells() << std::endl;
#endif #endif
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
if (boost::is_base_of<Parallel_tag, Ct>::value) if (boost::is_base_of<Parallel_tag, Ct>::value)
{ {
@ -745,7 +745,7 @@ scan_triangulation_impl()
} }
// Sequential // Sequential
else else
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
{ {
std::cerr << "Scanning triangulation for bad facets (sequential)..."; std::cerr << "Scanning triangulation for bad facets (sequential)...";
for(Finite_facet_iterator facet_it = r_tr_.finite_facets_begin(); for(Finite_facet_iterator facet_it = r_tr_.finite_facets_begin();

View File

@ -20,7 +20,7 @@
#ifndef CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H #ifndef CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H
#define CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H #define CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <CGAL/Mesh_3/Concurrent_mesher_config.h> #include <CGAL/Mesh_3/Concurrent_mesher_config.h>
@ -1001,12 +1001,12 @@ inline tbb::task* WorkBatchTask::execute()
} } //namespace CGAL::Mesh_3 } } //namespace CGAL::Mesh_3
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
namespace CGAL { namespace Mesh_3 { namespace CGAL { namespace Mesh_3 {
typedef void WorksharingDataStructureType; typedef void WorksharingDataStructureType;
} } //namespace CGAL::Mesh_3 } } //namespace CGAL::Mesh_3
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
#endif // CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H #endif // CGAL_MESH_3_WORKSHARING_DATA_STRUCTURES_H

View File

@ -48,7 +48,7 @@ class Mesh_complex_3_in_triangulation_3 :
public Mesh_3::Mesh_complex_3_in_triangulation_3_base public Mesh_3::Mesh_complex_3_in_triangulation_3_base
< <
Tr, Tr,
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
typename boost::mpl::if_c typename boost::mpl::if_c
< <
Tr::Is_for_parallel_mesh_3, Tr::Is_for_parallel_mesh_3,
@ -57,11 +57,11 @@ class Mesh_complex_3_in_triangulation_3 :
>::type >::type
#else #else
Sequential_tag Sequential_tag
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
> >
{ {
public: public:
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
typedef typename boost::mpl::if_c typedef typename boost::mpl::if_c
< <
Tr::Is_for_parallel_mesh_3, Tr::Is_for_parallel_mesh_3,
@ -70,7 +70,7 @@ public:
>::type Concurrency_tag; >::type Concurrency_tag;
#else #else
typedef Sequential_tag Concurrency_tag; typedef Sequential_tag Concurrency_tag;
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
private: private:
typedef Mesh_complex_3_in_triangulation_3< typedef Mesh_complex_3_in_triangulation_3<

View File

@ -86,9 +86,9 @@ template< class MD,
CGAL::Triangulation_cell_base_with_circumcenter_3 CGAL::Triangulation_cell_base_with_circumcenter_3
< <
GT GT
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
, Triangulation_lazy_ds_cell_base_3<Parallel_tag> , Triangulation_lazy_ds_cell_base_3<Parallel_tag>
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
> >
> >
> >
@ -98,18 +98,18 @@ private:
typedef GT Geom_traits; typedef GT Geom_traits;
typedef Mesh_vertex_base_3<Geom_traits, MD> Vertex_base; typedef Mesh_vertex_base_3<Geom_traits, MD> Vertex_base;
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
typedef Mesh_cell_base_3<Geom_traits, MD, Cb, Parallel_tag> Cell_base; typedef Mesh_cell_base_3<Geom_traits, MD, Cb, Parallel_tag> Cell_base;
typedef Triangulation_data_structure_3< typedef Triangulation_data_structure_3<
Vertex_base,Cell_base, true> Tds; Vertex_base,Cell_base, true> Tds;
typedef Regular_triangulation_3<Geom_traits, Tds, true> Triangulation; typedef Regular_triangulation_3<Geom_traits, Tds, true> Triangulation;
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
typedef Mesh_cell_base_3<Geom_traits, MD, Cb, Sequential_tag> Cell_base; typedef Mesh_cell_base_3<Geom_traits, MD, Cb, Sequential_tag> Cell_base;
typedef Triangulation_data_structure_3< typedef Triangulation_data_structure_3<
Vertex_base,Cell_base> Tds; Vertex_base,Cell_base> Tds;
typedef Regular_triangulation_3<Geom_traits, Tds> Triangulation; typedef Regular_triangulation_3<Geom_traits, Tds> Triangulation;
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
public: public:
typedef Triangulation type; typedef Triangulation type;

View File

@ -24,7 +24,7 @@
#include <algorithm> #include <algorithm>
#include <utility> #include <utility>
#include <deque> #include <deque>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/enumerable_thread_specific.h> #include <tbb/enumerable_thread_specific.h>
#endif #endif
@ -75,7 +75,7 @@ namespace Meshes {
} }
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <typename Element, typename Quality> template <typename Element, typename Quality>
class Filtered_deque_container_base<Element, Quality, Parallel_tag> class Filtered_deque_container_base<Element, Quality, Parallel_tag>
@ -170,7 +170,7 @@ namespace Meshes {
LocalList m_local_lists; LocalList m_local_lists;
bool m_add_to_TLS_lists; bool m_add_to_TLS_lists;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
// Class Filtered_deque_container // Class Filtered_deque_container

View File

@ -23,7 +23,7 @@
#include <map> #include <map>
#include <deque> #include <deque>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#include <tbb/enumerable_thread_specific.h> #include <tbb/enumerable_thread_specific.h>
#endif #endif
@ -74,7 +74,7 @@ namespace CGAL {
} }
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <typename Element, typename Quality> template <typename Element, typename Quality>
class Filtered_multimap_container_base<Element, Quality, Parallel_tag> class Filtered_multimap_container_base<Element, Quality, Parallel_tag>
@ -167,7 +167,7 @@ namespace CGAL {
LocalList m_local_lists; LocalList m_local_lists;
bool m_add_to_TLS_lists; bool m_add_to_TLS_lists;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
// Class Filtered_multimap_container // Class Filtered_multimap_container

View File

@ -24,7 +24,7 @@
#include <CGAL/Triangulation_ds_cell_base_3.h> #include <CGAL/Triangulation_ds_cell_base_3.h>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# include <tbb/atomic.h> # include <tbb/atomic.h>
#endif #endif
@ -42,7 +42,7 @@ protected:
Erase_counter_type m_erase_counter; Erase_counter_type m_erase_counter;
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Specialized version (Parallel) // Specialized version (Parallel)
template <> template <>
class Triangulation_lazy_ds_cell_base_3_base<Parallel_tag> class Triangulation_lazy_ds_cell_base_3_base<Parallel_tag>
@ -72,7 +72,7 @@ protected:
int m_localization_id; int m_localization_id;
#endif #endif
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
template < typename Concurrency_tag = Sequential_tag, typename TDS = void > template < typename Concurrency_tag = Sequential_tag, typename TDS = void >
class Triangulation_lazy_ds_cell_base_3 class Triangulation_lazy_ds_cell_base_3

View File

@ -42,7 +42,7 @@ if ( CGAL_FOUND )
endif() endif()
if( TBB_FOUND ) if( TBB_FOUND )
add_definitions( -DNOMINMAX -DLINKED_WITH_TBB ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB )
include_directories ( ${TBB_INCLUDE_DIRS} ) include_directories ( ${TBB_INCLUDE_DIRS} )
link_directories( ${TBB_LIBRARY_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} )
endif( TBB_FOUND ) endif( TBB_FOUND )

View File

@ -17,7 +17,7 @@
// //
// Author(s) : Clement Jamin // Author(s) : Clement Jamin
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
#ifndef CGAL_CONCURRENT_COMPACT_CONTAINER_H #ifndef CGAL_CONCURRENT_COMPACT_CONTAINER_H
#define CGAL_CONCURRENT_COMPACT_CONTAINER_H #define CGAL_CONCURRENT_COMPACT_CONTAINER_H
@ -960,4 +960,4 @@ namespace internal {
#endif // CGAL_CONCURRENT_COMPACT_CONTAINER_H #endif // CGAL_CONCURRENT_COMPACT_CONTAINER_H
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB

View File

@ -26,7 +26,7 @@
#include <CGAL/basic.h> #include <CGAL/basic.h>
#include <set> #include <set>
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# include <tbb/enumerable_thread_specific.h> # include <tbb/enumerable_thread_specific.h>
#endif #endif
@ -901,7 +901,7 @@ namespace CGAL {
} }
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel version specialization // Parallel version specialization
template<> template<>
class Hidden_point_visitor<true> class Hidden_point_visitor<true>
@ -963,7 +963,7 @@ namespace CGAL {
c->hide_point(p); c->hide_point(p);
} }
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
Hidden_point_visitor<used_by_parallel_mesh_3> &get_hidden_point_visitor() Hidden_point_visitor<used_by_parallel_mesh_3> &get_hidden_point_visitor()
{ {

View File

@ -111,7 +111,7 @@ public:
} }
}; };
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel // Parallel
template <> template <>
class Triangulation_3_base<true> class Triangulation_3_base<true>
@ -141,7 +141,7 @@ public:
protected: protected:
Mesh_3::LockDataStructureType *m_lock_ds; Mesh_3::LockDataStructureType *m_lock_ds;
}; };
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
/************************************************ /************************************************
* *
@ -169,7 +169,7 @@ class Triangulation_3
< <
GT GT
// Force lazy cells if used by parallel Mesh_3 // Force lazy cells if used by parallel Mesh_3
#if defined(LINKED_WITH_TBB) \ #if defined(CGAL_LINKED_WITH_TBB) \
&& !defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \ && !defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \
&& !defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE) && !defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE)
,typename boost::mpl::if_c ,typename boost::mpl::if_c
@ -606,7 +606,7 @@ public:
bool try_lock_vertex(Vertex_handle vh, int lock_radius = 0) const bool try_lock_vertex(Vertex_handle vh, int lock_radius = 0) const
{ {
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Parallel Mesh_3 // Parallel Mesh_3
if (used_by_parallel_mesh_3) if (used_by_parallel_mesh_3)
{ {
@ -636,7 +636,7 @@ public:
#endif #endif
} }
} }
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
return true; return true;
} }
@ -644,7 +644,7 @@ public:
{ {
bool success = true; bool success = true;
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING # ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
if (used_by_parallel_mesh_3) if (used_by_parallel_mesh_3)
{ {
@ -657,7 +657,7 @@ public:
} }
} }
# endif # endif
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
return success; return success;
} }
@ -665,7 +665,7 @@ public:
{ {
bool success = true; bool success = true;
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
# ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING # ifdef CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
if (used_by_parallel_mesh_3) if (used_by_parallel_mesh_3)
{ {
@ -679,7 +679,7 @@ public:
} }
} }
#endif // CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING #endif // CGAL_MESH_3_LOCKING_STRATEGY_SIMPLE_GRID_LOCKING
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
return success; return success;
} }

View File

@ -52,7 +52,7 @@
#include <CGAL/internal/Triangulation_ds_circulators_3.h> #include <CGAL/internal/Triangulation_ds_circulators_3.h>
#ifdef CGAL_HAS_THREADS #ifdef CGAL_HAS_THREADS
# ifdef LINKED_WITH_TBB # ifdef CGAL_LINKED_WITH_TBB
# include <tbb/enumerable_thread_specific.h> # include <tbb/enumerable_thread_specific.h>
# else # else
# include <boost/thread/tss.hpp> # include <boost/thread/tss.hpp>
@ -121,7 +121,7 @@ private:
public: public:
#ifdef LINKED_WITH_TBB #ifdef CGAL_LINKED_WITH_TBB
// Cells // Cells
typedef typename boost::mpl::if_c typedef typename boost::mpl::if_c
< <
@ -147,7 +147,7 @@ public:
Compact_container<Vertex> Compact_container<Vertex>
>::type Vertex_range; >::type Vertex_range;
#else // !LINKED_WITH_TBB #else // !CGAL_LINKED_WITH_TBB
// Cells // Cells
# if defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \ # if defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) \
@ -161,7 +161,7 @@ public:
// Vertices // Vertices
typedef Compact_container<Vertex> Vertex_range; typedef Compact_container<Vertex> Vertex_range;
#endif // LINKED_WITH_TBB #endif // CGAL_LINKED_WITH_TBB
typedef typename Cell_range::size_type size_type; typedef typename Cell_range::size_type size_type;
typedef typename Cell_range::difference_type difference_type; typedef typename Cell_range::difference_type difference_type;
@ -1243,7 +1243,7 @@ create_star_3(Vertex_handle v, Cell_handle c, int li,
set_adjacency(cnew, li, c_li, c_li->index(c)); set_adjacency(cnew, li, c_li, c_li->index(c));
#ifdef CGAL_HAS_THREADS #ifdef CGAL_HAS_THREADS
# ifdef LINKED_WITH_TBB # ifdef CGAL_LINKED_WITH_TBB
static tbb::enumerable_thread_specific< std::vector<iAdjacency_info> > stack_safe_ptr; static tbb::enumerable_thread_specific< std::vector<iAdjacency_info> > stack_safe_ptr;
std::vector<iAdjacency_info>& adjacency_info_stack = stack_safe_ptr.local(); std::vector<iAdjacency_info>& adjacency_info_stack = stack_safe_ptr.local();