CC with index cont

This commit is contained in:
Guillaume Damiand 2022-05-23 13:28:00 +02:00
parent 8bf242ad34
commit c25da7a9ba
11 changed files with 120 additions and 145 deletions

View File

@ -32,25 +32,25 @@ template<unsigned int, class, class>
class Combinatorial_map_storage_1; class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
class Combinatorial_map_storage_2; class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
class Generalized_map_storage_1; class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
class Generalized_map_storage_2; class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class CMap_linear_cell_complex_storage_1; class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class CMap_linear_cell_complex_storage_2; class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class GMap_linear_cell_complex_storage_1; class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class GMap_linear_cell_complex_storage_2; class GMap_linear_cell_complex_storage_with_index;
namespace internal { namespace internal {
@ -111,25 +111,25 @@ struct Init_id;
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
template<class, class> template<class, class>
friend struct internal::Init_id; friend struct internal::Init_id;
@ -236,25 +236,25 @@ struct Init_id;
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
template<class, class> template<class, class>
friend struct internal::Init_id; friend struct internal::Init_id;
@ -368,25 +368,25 @@ struct Init_id;
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
public: public:
typedef Tag_ Supports_cell_dart; typedef Tag_ Supports_cell_dart;
@ -423,25 +423,25 @@ struct Init_id;
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
public: public:
typedef Cell_attribute<Refs, Info_, Tag_, OnMerge, OnSplit, WithID> Self; typedef Cell_attribute<Refs, Info_, Tag_, OnMerge, OnSplit, WithID> Self;

View File

@ -24,7 +24,7 @@ template<unsigned int d_, class Items_, class Alloc_>
class Combinatorial_map_storage_1; class Combinatorial_map_storage_1;
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
class Combinatorial_map_storage_2; class Combinatorial_map_storage_with_index;
namespace internal namespace internal
{ {
@ -38,7 +38,7 @@ template<>
struct Default_storage_for_cmap_when_tag<CGAL::Tag_true> struct Default_storage_for_cmap_when_tag<CGAL::Tag_true>
{ {
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
using type=Combinatorial_map_storage_2<d_, Items_, Alloc_>; using type=Combinatorial_map_storage_with_index<d_, Items_, Alloc_>;
}; };
BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(Has_use_index_tag_cmap,Use_index,false) BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(Has_use_index_tag_cmap,Use_index,false)

View File

@ -34,10 +34,10 @@ namespace CGAL {
// Storage with combinatorial maps using index // Storage with combinatorial maps using index
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
class Combinatorial_map_storage_2 class Combinatorial_map_storage_with_index
{ {
public: public:
using Self=Combinatorial_map_storage_2<d_, Items_, Alloc_>; using Self=Combinatorial_map_storage_with_index<d_, Items_, Alloc_>;
using Use_index=CGAL::Tag_true; using Use_index=CGAL::Tag_true;
using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type; using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type;
@ -65,7 +65,7 @@ namespace CGAL {
typedef typename Dart_container::size_type size_type; typedef typename Dart_container::size_type size_type;
typedef Dart_index Null_descriptor_type; typedef Dart_index Null_descriptor_type;
static Null_descriptor_type null_descriptor; static const Index_type null_descriptor=Dart_container::null_descriptor;
using Type_for_compact_container=Index_type; using Type_for_compact_container=Index_type;
@ -108,7 +108,7 @@ namespace CGAL {
template<int i> template<int i>
using Attribute_const_handle=Attribute_const_descriptor<i>; using Attribute_const_handle=Attribute_const_descriptor<i>;
static Null_descriptor_type null_handle; static const Index_type null_handle=null_descriptor;
/// Number of marks /// Number of marks
static const size_type NB_MARKS = 32; static const size_type NB_MARKS = 32;
@ -154,7 +154,7 @@ namespace CGAL {
Dart_const_range& darts() const { return mdarts_range; } Dart_const_range& darts() const { return mdarts_range; }
//************************************************************************** //**************************************************************************
Combinatorial_map_storage_2() : mdarts_range(*this) Combinatorial_map_storage_with_index() : mdarts_range(*this)
{} {}
void init_storage() void init_storage()
@ -164,7 +164,7 @@ namespace CGAL {
Dart_index local_null_dart_descriptor = mdarts.emplace(); Dart_index local_null_dart_descriptor = mdarts.emplace();
if(local_null_dart_descriptor!=0) if(local_null_dart_descriptor!=0)
{ {
std::cerr<<"[ERROR] fatal in Combinatorial_map_storage_2::init_storage" std::cerr<<"[ERROR] fatal in Combinatorial_map_storage_with_index::init_storage"
<<std::endl; <<std::endl;
CGAL_assertion(false); CGAL_assertion(false);
} }
@ -470,8 +470,10 @@ namespace CGAL {
public: public:
/// Void dart. A dart d is i-free if beta_i(d)=null_dart_descriptor. /// Void dart. A dart d is i-free if beta_i(d)=null_dart_descriptor.
static Dart_index null_dart_descriptor; //=0; static const Index_type null_dart_descriptor=0;
static Dart_descriptor null_dart_handle; // Deprecated: kept for backward compatibility
// Deprecated: kept for backward compatibility
static const Index_type null_dart_handle=null_dart_descriptor;
protected: protected:
/// Dart container. /// Dart container.
@ -485,26 +487,6 @@ namespace CGAL {
typename Helper::Attribute_containers mattribute_containers; typename Helper::Attribute_containers mattribute_containers;
}; };
/// null_dart_descriptor
template<unsigned int d_, class Items_, class Alloc_>
typename Combinatorial_map_storage_2<d_, Items_, Alloc_>::Dart_index
Combinatorial_map_storage_2<d_, Items_, Alloc_>::null_dart_descriptor(0);
/// null_descriptor
template<unsigned int d_, class Items_, class Alloc_>
typename Combinatorial_map_storage_2<d_, Items_, Alloc_>::Null_descriptor_type
Combinatorial_map_storage_2<d_, Items_, Alloc_>::
null_descriptor((std::numeric_limits<Index_type>::max)());
template<unsigned int d_, class Items_, class Alloc_>
typename Combinatorial_map_storage_2<d_, Items_, Alloc_>::Dart_index
Combinatorial_map_storage_2<d_, Items_, Alloc_>::null_dart_handle(0);
template<unsigned int d_, class Items_, class Alloc_>
typename Combinatorial_map_storage_2<d_, Items_, Alloc_>::Null_descriptor_type
Combinatorial_map_storage_2<d_, Items_, Alloc_>::
null_handle((std::numeric_limits<Index_type>::max)());
} // namespace CGAL } // namespace CGAL
#if defined(BOOST_GCC) #if defined(BOOST_GCC)

View File

@ -97,6 +97,8 @@ class Free_list_management<CC_with_index, CGAL::Tag_true, CGAL::Tag_true>
using size_type=typename CC_with_index::size_type; using size_type=typename CC_with_index::size_type;
public: public:
static const size_type null_descriptor=std::numeric_limits<size_type>::max();
Free_list_management(CC_with_index& cc_with_index): Free_list_management(CC_with_index& cc_with_index):
m_cc_with_index(cc_with_index) m_cc_with_index(cc_with_index)
{} {}
@ -191,6 +193,8 @@ class Free_list_management<CC_with_index, CGAL::Tag_false, CGAL::Tag_true>
using Traits=Compact_container_with_index_traits <T, size_type>; using Traits=Compact_container_with_index_traits <T, size_type>;
public: public:
static const size_type null_descriptor=std::numeric_limits<size_type>::max();
Free_list_management(CC_with_index& cc_with_index): Free_list_management(CC_with_index& cc_with_index):
m_cc_with_index(cc_with_index) m_cc_with_index(cc_with_index)
{} {}
@ -200,7 +204,7 @@ public:
m_used.assign(m_cc_with_index.capacity(), false); m_used.assign(m_cc_with_index.capacity(), false);
m_free_list=0; m_free_list=0;
for(size_type i=0; i<static_cast<size_type>(m_cc_with_index.capacity()); ++i) for(size_type i=0; i<static_cast<size_type>(m_cc_with_index.capacity()); ++i)
{ Traits::size_t(m_cc_with_index[i])=i+1; } { Traits::set_size_t(m_cc_with_index[i], i+1); }
// Next of the last element is capacity() which is the "nullptr". // Next of the last element is capacity() which is the "nullptr".
} }
@ -210,7 +214,7 @@ public:
CGAL_assertion(m_free_list==old_size); // Previous container was full CGAL_assertion(m_free_list==old_size); // Previous container was full
m_used.resize(m_cc_with_index.capacity(), false); m_used.resize(m_cc_with_index.capacity(), false);
for(size_type i=0; i<static_cast<size_type>(m_cc_with_index.capacity()); ++i) for(size_type i=0; i<static_cast<size_type>(m_cc_with_index.capacity()); ++i)
{ Traits::size_t(m_cc_with_index[i])=i+1; } { Traits::set_size_t(m_cc_with_index[i], i+1); }
// Nothing to do with m_free_list, because it was equal to old_size. // Nothing to do with m_free_list, because it was equal to old_size.
} }
@ -234,7 +238,7 @@ public:
{ {
CGAL_assertion(i<m_cc_with_index.capacity()); CGAL_assertion(i<m_cc_with_index.capacity());
m_used[i]=false; m_used[i]=false;
Traits::size_t(m_cc_with_index[i])=m_free_list; Traits::set_size_t(m_cc_with_index[i], m_free_list);
m_free_list=i; m_free_list=i;
} }
@ -249,11 +253,12 @@ public:
CGAL_assertion(!is_empty()); CGAL_assertion(!is_empty());
size_type res=m_free_list; size_type res=m_free_list;
m_free_list=Traits::size_t(m_cc_with_index[res]); m_free_list=Traits::size_t(m_cc_with_index[res]);
m_used[res]=true;
return res; return res;
} }
void copy_special_data(const T& src, T& dest) void copy_special_data(const T& src, T& dest)
{ Traits::size_t(dest)=Traits::size_t(src); } { Traits::set_size_t(dest, Traits::size_t(src)); }
protected: protected:
CC_with_index& m_cc_with_index; CC_with_index& m_cc_with_index;
@ -271,6 +276,8 @@ class Free_list_management<CC_with_index, CGAL::Tag_false, CGAL::Tag_false>
using Traits=Compact_container_with_index_traits <T, size_type>; using Traits=Compact_container_with_index_traits <T, size_type>;
public: public:
static const size_type null_descriptor=std::numeric_limits<size_type>::max()/2;
Free_list_management(CC_with_index& cc_with_index): Free_list_management(CC_with_index& cc_with_index):
m_cc_with_index(cc_with_index) m_cc_with_index(cc_with_index)
{} {}
@ -327,7 +334,7 @@ public:
} }
void copy_special_data(const T& src, T& dest) void copy_special_data(const T& src, T& dest)
{ Traits::size_t(dest)=Traits::size_t(src); } { Traits::set_size_t(dest, Traits::size_t(src)); }
protected: protected:
// Definition of the bit squatting : // Definition of the bit squatting :
@ -351,6 +358,11 @@ protected:
static size_type static_get_val(const T& e) static size_type static_get_val(const T& e)
{ return (Traits::size_t(e) & ~mask_type); } { return (Traits::size_t(e) & ~mask_type); }
// set the value of the element and its type
static void static_set_type(T& e, Type t)
{ Traits::set_size_t(e, static_get_val(e) |
( ((size_type)t) <<(nbbits_size_type_m1))); }
// set the value of the element and its type // set the value of the element and its type
static void static_set_val(T& e, size_type v, Type t) static void static_set_val(T& e, size_type v, Type t)
{ Traits::set_size_t(e, v | ( ((size_type)t) <<(nbbits_size_type_m1))); } { Traits::set_size_t(e, v | ( ((size_type)t) <<(nbbits_size_type_m1))); }
@ -368,7 +380,7 @@ public:
using Self=Index_for_cc_with_index<Index_type>; using Self=Index_for_cc_with_index<Index_type>;
using size_type=Index_type; using size_type=Index_type;
/// Constructor. Default construction creates a kind of "NULL" index. /// Constructor.
Index_for_cc_with_index(size_type idx=(std::numeric_limits<size_type>::max)()) Index_for_cc_with_index(size_type idx=(std::numeric_limits<size_type>::max)())
: m_idx(idx) : m_idx(idx)
{} {}
@ -382,9 +394,11 @@ public:
Index_for_cc_with_index(const Index2& idx): m_idx(static_cast<size_t>(idx)) Index_for_cc_with_index(const Index2& idx): m_idx(static_cast<size_t>(idx))
{} {}
/// return whether the handle is valid bool operator==(const Self& n) const
bool is_valid() const { return m_idx==n.m_idx; }
{ return m_idx != (std::numeric_limits<size_type>::max)(); }
bool operator==(size_type n) const
{ return m_idx==n; }
/// Increment the internal index. This operations does not /// Increment the internal index. This operations does not
/// guarantee that the index is valid or undeleted after the /// guarantee that the index is valid or undeleted after the
@ -447,6 +461,11 @@ public:
typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
using Index=Index_for_cc_with_index<IndexType>; using Index=Index_for_cc_with_index<IndexType>;
using TFree_list_management=Free_list_management
<Self, CGAL::Tag_false, CGAL::Tag_true>;
static const size_type null_descriptor=TFree_list_management::null_descriptor;
friend class internal::CC_iterator_with_index<Self, false>; friend class internal::CC_iterator_with_index<Self, false>;
friend class internal::CC_iterator_with_index<Self, true>; friend class internal::CC_iterator_with_index<Self, true>;
@ -733,7 +752,7 @@ private:
size_type size_; size_type size_;
size_type block_size; size_type block_size;
pointer all_items; pointer all_items;
Free_list_management<Self, CGAL::Tag_true, CGAL::Tag_true> free_list; TFree_list_management free_list;
}; };
/*template < class T, class Allocator, class Increment_policy, class IndexType > /*template < class T, class Allocator, class Increment_policy, class IndexType >

View File

@ -33,25 +33,25 @@ namespace CGAL {
class Combinatorial_map_storage_1; class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
class Combinatorial_map_storage_2; class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
class Generalized_map_storage_1; class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
class Generalized_map_storage_2; class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class CMap_linear_cell_complex_storage_1; class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class CMap_linear_cell_complex_storage_2; class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class GMap_linear_cell_complex_storage_1; class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
class GMap_linear_cell_complex_storage_2; class GMap_linear_cell_complex_storage_with_index;
namespace internal { namespace internal {
@ -88,25 +88,25 @@ namespace CGAL {
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
template<class, class> template<class, class>
friend struct internal::Init_id; friend struct internal::Init_id;
@ -251,25 +251,25 @@ namespace CGAL {
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
typedef Dart<d, Refs, Info_, WithID> Self; typedef Dart<d, Refs, Info_, WithID> Self;
typedef Info_ Info; typedef Info_ Info;

View File

@ -22,7 +22,7 @@ template<unsigned int d_, class Items_, class Alloc_>
class Generalized_map_storage_1; class Generalized_map_storage_1;
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
class Generalized_map_storage_2; class Generalized_map_storage_with_index;
struct Generic_map_min_items; struct Generic_map_min_items;
@ -38,7 +38,7 @@ template<>
struct Default_storage_for_gmap_when_tag<CGAL::Tag_true> struct Default_storage_for_gmap_when_tag<CGAL::Tag_true>
{ {
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
using type=Generalized_map_storage_2<d_, Items_, Alloc_>; using type=Generalized_map_storage_with_index<d_, Items_, Alloc_>;
}; };
BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(Has_use_index_tag_gmap,Use_index,false) BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(Has_use_index_tag_gmap,Use_index,false)

View File

@ -34,10 +34,10 @@ namespace CGAL {
// Storage of darts with compact container, alpha with indices // Storage of darts with compact container, alpha with indices
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
class Generalized_map_storage_2 class Generalized_map_storage_with_index
{ {
public: public:
using Self=Generalized_map_storage_2<d_, Items_, Alloc_>; using Self=Generalized_map_storage_with_index<d_, Items_, Alloc_>;
using Use_index=CGAL::Tag_true; using Use_index=CGAL::Tag_true;
using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type; using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type;
@ -439,13 +439,13 @@ namespace CGAL {
/// null_descriptor /// null_descriptor
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
typename Generalized_map_storage_2<d_, Items_, Alloc_>::Null_descriptor_type typename Generalized_map_storage_with_index<d_, Items_, Alloc_>::Null_descriptor_type
Generalized_map_storage_2<d_, Items_, Alloc_>:: Generalized_map_storage_with_index<d_, Items_, Alloc_>::
null_descriptor((std::numeric_limits<Index_type>::max)()); null_descriptor((std::numeric_limits<Index_type>::max)());
template<unsigned int d_, class Items_, class Alloc_> template<unsigned int d_, class Items_, class Alloc_>
typename Generalized_map_storage_2<d_, Items_, Alloc_>::Null_descriptor_type typename Generalized_map_storage_with_index<d_, Items_, Alloc_>::Null_descriptor_type
Generalized_map_storage_2<d_, Items_, Alloc_>:: Generalized_map_storage_with_index<d_, Items_, Alloc_>::
null_handle((std::numeric_limits<Index_type>::max)()); null_handle((std::numeric_limits<Index_type>::max)());
} // namespace CGAL } // namespace CGAL

View File

@ -33,16 +33,16 @@ namespace CGAL {
} }
// Storage of darts with compact container, alpha using index // Storage of darts with compact container, alpha using index
// Copy of Combinatorial_map_storage_2 and add new types related // Copy of Combinatorial_map_storage_with_index and add new types related
// to geometry (not possible to inherith because we use Self type // to geometry (not possible to inherith because we use Self type
// as template parameter of Dart_wrapper. If we inherit, Self is not // as template parameter of Dart_wrapper. If we inherit, Self is not
// the correct type). // the correct type).
template<unsigned int d_, unsigned int ambient_dim, class Traits_, template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_> class Items_, class Alloc_>
class CMap_linear_cell_complex_storage_2 class CMap_linear_cell_complex_storage_with_index
{ {
public: public:
using Self=CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, using Self=CMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_,
Items_, Alloc_>; Items_, Alloc_>;
using Use_index=CGAL::Tag_true; using Use_index=CGAL::Tag_true;
using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type; using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type;
@ -75,7 +75,7 @@ namespace CGAL {
typedef typename Dart_container::size_type size_type; typedef typename Dart_container::size_type size_type;
typedef Dart_index Null_descriptor_type; typedef Dart_index Null_descriptor_type;
static Null_descriptor_type null_descriptor; static const Index_type null_descriptor=Dart_container::null_descriptor;
using Type_for_compact_container=Index_type; using Type_for_compact_container=Index_type;
@ -129,7 +129,7 @@ namespace CGAL {
using Vertex_attribute_handle=Vertex_attribute_descriptor; using Vertex_attribute_handle=Vertex_attribute_descriptor;
using Vertex_attribute_const_handle=Vertex_attribute_const_descriptor; using Vertex_attribute_const_handle=Vertex_attribute_const_descriptor;
static Null_descriptor_type null_handle; static const Index_type null_handle=null_descriptor;
/// Number of marks /// Number of marks
static const size_type NB_MARKS = 32; static const size_type NB_MARKS = 32;
@ -175,7 +175,7 @@ namespace CGAL {
Dart_const_range& darts() const { return mdarts_range; } Dart_const_range& darts() const { return mdarts_range; }
//************************************************************************** //**************************************************************************
CMap_linear_cell_complex_storage_2() : mdarts_range(*this) CMap_linear_cell_complex_storage_with_index() : mdarts_range(*this)
{} {}
void init_storage() void init_storage()
@ -185,7 +185,7 @@ namespace CGAL {
Dart_index local_null_dart_descriptor = mdarts.emplace(); Dart_index local_null_dart_descriptor = mdarts.emplace();
if(local_null_dart_descriptor!=0) if(local_null_dart_descriptor!=0)
{ {
std::cerr<<"[ERROR] fatal in CMap_linear_cell_complex_storage_2::init_storage" std::cerr<<"[ERROR] fatal in CMap_linear_cell_complex_storage_with_index::init_storage"
<<std::endl; <<std::endl;
CGAL_assertion(false); CGAL_assertion(false);
} }
@ -505,8 +505,10 @@ namespace CGAL {
public: public:
/// Void dart. A dart d is i-free if beta_i(d)=null_dart_descriptor. /// Void dart. A dart d is i-free if beta_i(d)=null_dart_descriptor.
static Dart_index null_dart_descriptor; //=0; static const Index_type null_dart_descriptor=0;
static Dart_descriptor null_dart_handle; // Deprecated: kept for backward compatibility
// Deprecated: kept for backward compatibility
static const Index_type null_dart_handle=null_dart_descriptor;
protected: protected:
/// Dart container. /// Dart container.
@ -520,34 +522,6 @@ namespace CGAL {
typename Helper::Attribute_containers mattribute_containers; typename Helper::Attribute_containers mattribute_containers;
}; };
/// null_dart_descriptor
template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_>
typename CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
Dart_index CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
null_dart_descriptor(0);
/// null_descriptor
template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_>
typename CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
Null_descriptor_type CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_,
Items_, Alloc_>::
null_descriptor((std::numeric_limits<Index_type>::max)());
template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_>
typename CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
Dart_index CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
null_dart_handle(0);
template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_>
typename CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>::
Null_descriptor_type CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_,
Items_, Alloc_>::
null_handle((std::numeric_limits<Index_type>::max)());
} // namespace CGAL } // namespace CGAL
#if defined(BOOST_GCC) #if defined(BOOST_GCC)

View File

@ -69,25 +69,25 @@ namespace CGAL {
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
public: public:
typedef Cell_attribute_with_point<LCC, Info_, Tag, Functor_on_merge_, typedef Cell_attribute_with_point<LCC, Info_, Tag, Functor_on_merge_,
@ -157,25 +157,25 @@ namespace CGAL {
friend class Combinatorial_map_storage_1; friend class Combinatorial_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Combinatorial_map_storage_2; friend class Combinatorial_map_storage_with_index;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_1; friend class Generalized_map_storage_1;
template<unsigned int, class, class> template<unsigned int, class, class>
friend class Generalized_map_storage_2; friend class Generalized_map_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_1; friend class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class CMap_linear_cell_complex_storage_2; friend class CMap_linear_cell_complex_storage_with_index;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_1; friend class GMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class> template<unsigned int, unsigned int, class, class, class>
friend class GMap_linear_cell_complex_storage_2; friend class GMap_linear_cell_complex_storage_with_index;
public: public:
typedef Cell_attribute<LCC, void, Tag, typedef Cell_attribute<LCC, void, Tag,

View File

@ -33,16 +33,16 @@ namespace CGAL {
} }
// Storage of darts with compact container, alpha using index // Storage of darts with compact container, alpha using index
// Copy of Generalized_map_storage_2 and add new types related // Copy of Generalized_map_storage_with_index and add new types related
// to geometry (not possible to inherith because we use Self type // to geometry (not possible to inherith because we use Self type
// as template parameter of Dart_wrapper. If we inherit, Self is not // as template parameter of Dart_wrapper. If we inherit, Self is not
// the correct type). // the correct type).
template<unsigned int d_, unsigned int ambient_dim, class Traits_, template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_> class Items_, class Alloc_>
class GMap_linear_cell_complex_storage_2 class GMap_linear_cell_complex_storage_with_index
{ {
public: public:
using Self=GMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, using Self=GMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_,
Items_, Alloc_>; Items_, Alloc_>;
using Use_index=CGAL::Tag_true; using Use_index=CGAL::Tag_true;
using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type; using Concurrent_tag=typename internal::Get_concurrent_tag<Items_>::type;
@ -462,8 +462,8 @@ namespace CGAL {
/// null_descriptor /// null_descriptor
template<unsigned int d_, unsigned int ambient_dim, class Traits_, template<unsigned int d_, unsigned int ambient_dim, class Traits_,
class Items_, class Alloc_> class Items_, class Alloc_>
typename GMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Items_, Alloc_>:: typename GMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_, Items_, Alloc_>::
Null_descriptor_type GMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, Null_descriptor_type GMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_,
Items_, Alloc_>:: Items_, Alloc_>::
null_descriptor((std::numeric_limits<Index_type>::max)()); null_descriptor((std::numeric_limits<Index_type>::max)());

View File

@ -27,11 +27,11 @@ class GMap_linear_cell_complex_storage_1;
template<unsigned int d_, unsigned int ambient_dim, template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_> class Traits_, class Items_, class Alloc_>
class CMap_linear_cell_complex_storage_2; class CMap_linear_cell_complex_storage_with_index;
template<unsigned int d_, unsigned int ambient_dim, template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_> class Traits_, class Items_, class Alloc_>
class GMap_linear_cell_complex_storage_2; class GMap_linear_cell_complex_storage_with_index;
template <unsigned int d> template <unsigned int d>
struct LCC_default_kernel; struct LCC_default_kernel;
@ -57,7 +57,7 @@ struct Default_storage_for_lcc_cmap_when_tag<CGAL::Tag_true>
{ {
template<unsigned int d_, unsigned int ambient_dim, template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_> class Traits_, class Items_, class Alloc_>
using type=CMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, using type=CMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_,
Items_, Alloc_>; Items_, Alloc_>;
}; };
@ -92,7 +92,7 @@ struct Default_storage_for_lcc_gmap_when_tag<CGAL::Tag_true>
{ {
template<unsigned int d_, unsigned int ambient_dim, template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_> class Traits_, class Items_, class Alloc_>
using type=GMap_linear_cell_complex_storage_2<d_, ambient_dim, Traits_, using type=GMap_linear_cell_complex_storage_with_index<d_, ambient_dim, Traits_,
Items_, Alloc_>; Items_, Alloc_>;
}; };