This commit is contained in:
Guillaume Damiand 2022-04-07 10:24:15 +02:00
parent 138be31cba
commit eb39602066
5 changed files with 58 additions and 97 deletions

View File

@ -428,9 +428,6 @@ namespace CGAL {
template < unsigned int, class, class, class, class >
friend class Combinatorial_map_base;
template <unsigned int, typename>
friend struct Index::Dart;
template < unsigned int, class, class, class, class >
friend class Generalized_map_base;
@ -439,23 +436,10 @@ namespace CGAL {
template<unsigned int, unsigned int, class, class, class, class>
friend class GMap_linear_cell_complex_storage_1;
>>>>>>> master
template < unsigned int, typename>
friend struct GMap_dart;
template <class, class, class, class>
friend class Compact_container_with_index;
template<typename, unsigned int, typename>
friend struct internal::Decrease_attribute_functor_run;
template <typename, typename>
friend struct internal::Reverse_orientation_of_map_functor;
template <typename, typename>
friend struct internal::Reverse_orientation_of_connected_component_functor;
public:
typedef Tag_false Supports_cell_dart;
@ -544,27 +528,12 @@ namespace CGAL {
template < unsigned int, class, class, class, class >
friend class Combinatorial_map_base;
template <unsigned int, typename>
friend struct Index::Dart;
template < unsigned int, class, class, class, class >
friend class Generalized_map_base;
template <unsigned int, typename>
friend struct GMap_dart;
template <class, class, class, class>
friend class Compact_container_with_index;
template<typename, unsigned int, typename>
friend struct internal::Decrease_attribute_functor_run;
template <typename, typename>
friend struct internal::Reverse_orientation_of_map_functor;
template <typename, typename>
friend struct internal::Reverse_orientation_of_connected_component_functor;
public:
typedef Tag_true Supports_cell_dart;

View File

@ -435,9 +435,10 @@ namespace CGAL
iterator_type;
// TODO case when there is no Use_index typedef in CMap
typedef typename boost::mpl::if_
/* TODO ask sebastien ?
typedef typename boost::mpl::if_
< typename boost::is_same<typename CMap::Use_index,Tag_true>::type,
typename CMap::Dart_handle, iterator_type >::type type;
typename CMap::Dart_handle, iterator_type >::type type;*/
typedef typename GetIndexOrHandle
<typename CMap::template Container_for_attributes<T> >::type type;
@ -451,10 +452,11 @@ namespace CGAL
typedef typename CMap::template Container_for_attributes<T>::
const_iterator iterator_type;
/* TODO ask sebastien ?
typedef typename boost::mpl::if_
< typename boost::is_same<typename CMap::Use_index,Tag_true>::type,
typename CMap::Dart_handle, iterator_type >::type type;
*/
typedef typename GetConstIndexOrConstHandle
<typename CMap::template Container_for_attributes<T> >::type type;
};

View File

@ -29,12 +29,18 @@ namespace CGAL {
template<unsigned int, class, class, class>
class Combinatorial_map_storage_1;
template<unsigned int, class, class, class>
class Combinatorial_map_storage_2;
template<unsigned int, class, class, class>
class Generalized_map_storage_1;
template<unsigned int, unsigned int, class, class, class, class>
class CMap_linear_cell_complex_storage_1;
template<unsigned int, unsigned int, class, class, class, class>
class CMap_linear_cell_complex_storage_2;
template<unsigned int, unsigned int, class, class, class, class>
class GMap_linear_cell_complex_storage_1;
@ -264,14 +270,12 @@ namespace CGAL {
public:
typedef CGAL::Void Info;
};
namespace Index
{
template <unsigned int d, typename Refs>
struct Dart
{
template < unsigned int, class, class, class, class >
friend class Combinatorial_map_base;
template<unsigned int, class, class>
friend class Combinatorial_map_storage_1;
@ -287,27 +291,15 @@ namespace CGAL {
template <class, class, class, class>
friend class Compact_container;
template <class, class>
friend class Concurrent_compact_container;
template <class, class, class, class>
friend class Compact_container_with_index;
template <class, class, class, class>
friend class Compact_container_with_index_2;
template<class, unsigned int, unsigned int>
friend struct Remove_cell_functor;
template<class, unsigned int>
friend struct Contract_cell_functor;
template <typename,unsigned int>
friend struct internal::link_beta_functor;
template <typename, typename>
friend struct internal::Reverse_orientation_of_map_functor;
template <typename, typename>
friend struct internal::Reverse_orientation_of_connected_component_functor;
public:
typedef Dart<d,Refs> Self;
typedef typename Refs::Dart_handle Dart_handle;
@ -329,47 +321,11 @@ namespace CGAL {
/// The dimension of the combinatorial map.
static const unsigned int dimension = d;
/** Return the beta of this dart for a given dimension.
* @param i the dimension.
* @return beta(\em i).
*/
template<unsigned int i>
Dart_handle beta()
Dart_handle get_f(unsigned int i) const
{
CGAL_assertion(i <= dimension);
return mbeta[i];
assert(i<=dimension);
return mf[i];
}
Dart_handle beta(unsigned int i)
{
CGAL_assertion(i <= dimension);
return mbeta[i];
}
template<unsigned int i>
Dart_const_handle beta() const
{
CGAL_assertion(i <= dimension);
return mbeta[i];
}
Dart_const_handle beta(unsigned int i) const
{
CGAL_assertion(i <= dimension);
return mbeta[i];
}
/** Return the beta inverse of this dart for a given dimension.
* @param i the dimension.
* @return beta^{-1}(\em i).
*/
template<unsigned int i>
Dart_handle beta_inv()
{ return beta<CGAL_BETAINV(i)>(); }
Dart_handle beta_inv(unsigned int i)
{ return beta(CGAL_BETAINV(i)); }
template<unsigned int i>
Dart_const_handle beta_inv() const
{ return beta<CGAL_BETAINV(i)>(); }
Dart_const_handle beta_inv(unsigned int i) const
{ return beta(CGAL_BETAINV(i)); }
/// @return a handle on the i-attribute
template<int i>
@ -455,18 +411,18 @@ namespace CGAL {
mattribute_handles(adart.mattribute_handles)
{
for (unsigned int i = 0; i <= dimension; ++i)
mbeta[i] = adart.mbeta[i];
mf[i] = adart.mf[i];
}
public:
size_type for_compact_container_with_index() const
{ return mbeta[0].for_compact_container_with_index(); }
{ return mf[0].for_compact_container_with_index(); }
size_type& for_compact_container_with_index()
{ return mbeta[0].for_compact_container_with_index(); }
{ return mf[0].for_compact_container_with_index(); }
protected:
/// Beta for each dimension +1 (from 0 to dimension).
Dart_handle mbeta[dimension+1];
/// Neighboors for each dimension +1 (from 0 to dimension).
Dart_handle mf[dimension+1];
/// Values of Boolean marks.
mutable std::bitset<NB_MARKS> mmarks;

View File

@ -26,6 +26,14 @@ template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_, class Concurrent_tag=CGAL::Tag_false >
class GMap_linear_cell_complex_storage_1;
template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_, class Size_type> // TODO add Concurrent_tag
class CMap_linear_cell_complex_storage_2;
template<unsigned int d_, unsigned int ambient_dim,
class Traits_, class Items_, class Alloc_, class Size_type> // TODO add Concurrent_tag class Concurrent_tag=CGAL::Tag_false >
class GMap_linear_cell_complex_storage_2;
template <unsigned int d>
struct LCC_default_kernel;
@ -67,6 +75,33 @@ template < unsigned int d_, unsigned int ambient_dim = d_,
Alloc_, CGAL::Tag_false> >
class Linear_cell_complex_for_generalized_map;
namespace Index
{
template < unsigned int d_, unsigned int ambient_dim = d_,
class Traits_ = Linear_cell_complex_traits<ambient_dim>,
class Items_ = Linear_cell_complex_min_items,
class Alloc_ = CGAL_ALLOCATOR(int),
template<unsigned int,class,class,class,class>
class CMap = Combinatorial_map_base,
class Storage_ = CMap_linear_cell_complex_storage_2<d_, ambient_dim,
Traits_, Items_,
Alloc_, unsigned int>>
// TODO READD CGAL::Tag_false> >
class Linear_cell_complex_for_combinatorial_map;
/* TODO GMap_linear_cell_complex_storage_2
template < unsigned int d_, unsigned int ambient_dim = d_,
class Traits_ = Linear_cell_complex_traits<ambient_dim>,
class Items_ = Linear_cell_complex_min_items,
class Alloc_ = CGAL_ALLOCATOR(int),
template<unsigned int,class,class,class,class>
class CMap = Generalized_map_base,
class Storage_ = GMap_linear_cell_complex_storage_2<d_, ambient_dim,
Traits_, Items_, unsigned int>>
// TODO READD CGAL::Tag_false> >
class Linear_cell_complex_for_generalized_map; */
} // namespace Index
} // CGAL
#endif // LINEAR_CELL_COMPLEX_FWD_H

View File

@ -40,7 +40,6 @@ namespace CGAL {
namespace Index
{
template <unsigned int d>
struct Linear_cell_complex_min_items
{
/// Dart_wrapper defines the type of darts used.