mirror of https://github.com/CGAL/cgal
Merge pull request #3386 from maxGimeno/AABB_tree-Override_build_function_with_shared_data-GF
AABB_tree: Add an overload to build() for shared data
This commit is contained in:
commit
5be2958fae
|
|
@ -156,7 +156,28 @@ namespace CGAL {
|
||||||
/// `build()` explicitly to ensure that the next call to
|
/// `build()` explicitly to ensure that the next call to
|
||||||
/// query functions will not trigger the reconstruction of the
|
/// query functions will not trigger the reconstruction of the
|
||||||
/// data structure.
|
/// data structure.
|
||||||
|
/// A call to `AABBTraits::set_shared_data(t...)`
|
||||||
|
/// is made using the internally stored traits.
|
||||||
|
/// For compilers that do not support variadic templates,
|
||||||
|
/// overloads up to 5 template arguments are provided.
|
||||||
|
|
||||||
|
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
|
||||||
|
template<typename ... T>
|
||||||
|
void build(T&& ...);
|
||||||
void build();
|
void build();
|
||||||
|
#else
|
||||||
|
void build();
|
||||||
|
template<typename T1>
|
||||||
|
void build(T1& t1);
|
||||||
|
template<typename T1, typename T2>
|
||||||
|
void build(T1& t1, T2& t2);
|
||||||
|
template<typename T1, typename T2,typename T3>
|
||||||
|
void build(T1& t1, T2& t2, T3& t3);
|
||||||
|
template<typename T1, typename T2,typename T3,typename T4>
|
||||||
|
void build(T1& t1, T2& t2, T3& t3, T4& t4);
|
||||||
|
template<typename T1, typename T2,typename T3,typename T4,typename T5>
|
||||||
|
void build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5);
|
||||||
|
#endif
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/// \name Operations
|
/// \name Operations
|
||||||
|
|
@ -740,7 +761,7 @@ public:
|
||||||
ConstPrimitiveIterator beyond,
|
ConstPrimitiveIterator beyond,
|
||||||
T&& ... t)
|
T&& ... t)
|
||||||
{
|
{
|
||||||
set_shared_data(std::forward<T>(t)...);
|
set_shared_data(std::forward<T>(t)...);
|
||||||
while(first != beyond)
|
while(first != beyond)
|
||||||
{
|
{
|
||||||
m_primitives.push_back(Primitive(first,std::forward<T>(t)...));
|
m_primitives.push_back(Primitive(first,std::forward<T>(t)...));
|
||||||
|
|
@ -764,6 +785,14 @@ public:
|
||||||
|
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename ... T>
|
||||||
|
void AABB_tree<Tr>::build(T&& ... t)
|
||||||
|
{
|
||||||
|
set_shared_data(std::forward<T>(t)...);
|
||||||
|
build();
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
//=============constructor======================
|
//=============constructor======================
|
||||||
template<typename Tr>
|
template<typename Tr>
|
||||||
|
|
@ -1045,7 +1074,43 @@ public:
|
||||||
|
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
#endif
|
//overloads calling set_shared_data()
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename T1>
|
||||||
|
void AABB_tree<Tr>::build(T1& t1)
|
||||||
|
{
|
||||||
|
set_shared_data(t1);
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename T1, typename T2>
|
||||||
|
void AABB_tree<Tr>::build(T1& t1, T2& t2)
|
||||||
|
{
|
||||||
|
set_shared_data(t1, t2);
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename T1, typename T2, typename T3>
|
||||||
|
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3)
|
||||||
|
{
|
||||||
|
set_shared_data(t1, t2, t3);
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename T1, typename T2, typename T3, typename T4>
|
||||||
|
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4)
|
||||||
|
{
|
||||||
|
set_shared_data(t1, t2, t3, t4);
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
template<typename Tr>
|
||||||
|
template<typename T1, typename T2, typename T3, typename T4, typename T5>
|
||||||
|
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5)
|
||||||
|
{
|
||||||
|
set_shared_data(t1, t2, t3, t4, t5);
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
template<typename Tr>
|
template<typename Tr>
|
||||||
void AABB_tree<Tr>::insert(const Primitive& p)
|
void AABB_tree<Tr>::insert(const Primitive& p)
|
||||||
|
|
@ -1074,7 +1139,7 @@ public:
|
||||||
|
|
||||||
// constructs the tree
|
// constructs the tree
|
||||||
m_p_root_node->expand(m_primitives.begin(), m_primitives.end(),
|
m_p_root_node->expand(m_primitives.begin(), m_primitives.end(),
|
||||||
m_primitives.size(), m_traits);
|
m_primitives.size(), m_traits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue