mirror of https://github.com/CGAL/cgal
Create CGAL::make_filled_array
That function template will replace my adhoc `create_array_of_triangulation`.
This commit is contained in:
parent
cbc73a8fc4
commit
8dbf50a94b
|
|
@ -18,6 +18,7 @@
|
||||||
#else
|
#else
|
||||||
# include <boost/array.hpp>
|
# include <boost/array.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
@ -68,6 +69,19 @@ struct Construct_array
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <std::size_t...Is, typename T>
|
||||||
|
constexpr std::array<T, sizeof...(Is)>
|
||||||
|
make_filled_array_aux(const T& value, std::index_sequence<Is...>)
|
||||||
|
{
|
||||||
|
return {(static_cast<void>(Is), value)...};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <std::size_t N, typename T>
|
||||||
|
constexpr std::array<T, N> make_filled_array(const T& value)
|
||||||
|
{
|
||||||
|
return make_filled_array_aux(value, std::make_index_sequence<N>());
|
||||||
|
}
|
||||||
|
|
||||||
} //namespace CGAL
|
} //namespace CGAL
|
||||||
|
|
||||||
#endif // CGAL_ARRAY_H
|
#endif // CGAL_ARRAY_H
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@
|
||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <CGAL/array.h>
|
||||||
|
|
||||||
#endif //CGAL_TRIANGULATION_3_DONT_INSERT_RANGE_OF_POINTS_WITH_INFO
|
#endif //CGAL_TRIANGULATION_3_DONT_INSERT_RANGE_OF_POINTS_WITH_INFO
|
||||||
|
|
||||||
|
|
@ -92,18 +93,6 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
template <std::size_t...Is>
|
|
||||||
constexpr std::array<Tr_Base, sizeof...(Is)>
|
|
||||||
make_array_of_triangulations(const Geom_traits& traits, std::index_sequence<Is...>)
|
|
||||||
{
|
|
||||||
return {{(static_cast<void>(Is), traits)...}};
|
|
||||||
}
|
|
||||||
template <std::size_t N>
|
|
||||||
constexpr std::array<Tr_Base, N> create_array_of_triangulation(const Geom_traits& traits)
|
|
||||||
{
|
|
||||||
return make_array_of_triangulations(traits, std::make_index_sequence<N>());
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_hierarchy() {
|
void init_hierarchy() {
|
||||||
hierarchy[0] = this;
|
hierarchy[0] = this;
|
||||||
for(int i=1; i<maxlevel; ++i)
|
for(int i=1; i<maxlevel; ++i)
|
||||||
|
|
@ -140,7 +129,7 @@ public:
|
||||||
Triangulation_hierarchy_3(InputIterator first, InputIterator last,
|
Triangulation_hierarchy_3(InputIterator first, InputIterator last,
|
||||||
const Geom_traits& traits = Geom_traits())
|
const Geom_traits& traits = Geom_traits())
|
||||||
: Tr_Base(traits)
|
: Tr_Base(traits)
|
||||||
, hierarchy_triangulations(create_array_of_triangulation<maxlevel-1>(traits))
|
, hierarchy_triangulations(make_filled_array<maxlevel-1, Tr_Base>(traits))
|
||||||
{
|
{
|
||||||
init_hierarchy();
|
init_hierarchy();
|
||||||
insert(first, last);
|
insert(first, last);
|
||||||
|
|
@ -465,7 +454,7 @@ template <class Tr >
|
||||||
Triangulation_hierarchy_3<Tr>::
|
Triangulation_hierarchy_3<Tr>::
|
||||||
Triangulation_hierarchy_3(const Geom_traits& traits)
|
Triangulation_hierarchy_3(const Geom_traits& traits)
|
||||||
: Tr_Base(traits)
|
: Tr_Base(traits)
|
||||||
, hierarchy_triangulations(create_array_of_triangulation<maxlevel-1>(traits))
|
, hierarchy_triangulations(make_filled_array<maxlevel-1, Tr_Base>(traits))
|
||||||
{
|
{
|
||||||
init_hierarchy();
|
init_hierarchy();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue