Merge pull request #2965 from sloriot/AABB_tree-Add_primitive_constructor

Add a constructor from iterator on id for AABB_primitive
This commit is contained in:
Laurent Rineau 2018-03-30 10:56:38 +02:00
commit 599f7c3b73
1 changed files with 25 additions and 0 deletions

View File

@ -126,6 +126,15 @@ struct AABB_primitive
AABB_primitive(Id id,
ObjectPropertyMap o_pmap=ObjectPropertyMap(),
PointPropertyMap p_pmap=PointPropertyMap());
/*!
Constructs a primitive from an iterator with `Id` as value type
and initializes the property maps.
*/
template <class Iterator>
AABB_primitive(Iterator it,
ObjectPropertyMap o_pmap=ObjectPropertyMap(),
PointPropertyMap p_pmap=PointPropertyMap());
};
#else
template < class Id,
@ -150,6 +159,10 @@ public:
AABB_primitive(Id id, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap pt_pmap=PointPropertyMap())
: Base(id), m_obj_pmap(obj_pmap), m_pt_pmap(pt_pmap) {}
template <class Iterator>
AABB_primitive(Iterator it, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap pt_pmap=PointPropertyMap())
: Base(*it), m_obj_pmap(obj_pmap), m_pt_pmap(pt_pmap) {}
typename Base::Datum_reference
datum() const { return get(m_obj_pmap,this->m_id); }
@ -173,6 +186,10 @@ public:
AABB_primitive(Id id, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap pt_pmap=PointPropertyMap())
: Base(id), m_datum( get(obj_pmap,id) ), m_pt_pmap(pt_pmap){}
template <class Iterator>
AABB_primitive(Iterator it, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap pt_pmap=PointPropertyMap())
: Base(*it), m_datum( get(obj_pmap,*it) ), m_pt_pmap(pt_pmap){}
Datum_reference datum() const { return m_datum; }
@ -194,6 +211,10 @@ public:
AABB_primitive(Id id, ObjectPropertyMap=ObjectPropertyMap(), PointPropertyMap=PointPropertyMap())
: Base(id) {}
template <class Iterator>
AABB_primitive(Iterator it, ObjectPropertyMap=ObjectPropertyMap(), PointPropertyMap=PointPropertyMap())
: Base(*it) {}
typename Base::Datum_reference
datum(const Shared_data& data) const { return get(data.first,this->m_id); }
@ -220,6 +241,10 @@ public:
AABB_primitive(Id id, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap=PointPropertyMap())
: Base(id), m_datum( get(obj_pmap,id) ) {}
template <class Iterator>
AABB_primitive(Iterator it, ObjectPropertyMap obj_pmap=ObjectPropertyMap(), PointPropertyMap=PointPropertyMap())
: Base(*it), m_datum( get(obj_pmap,*it) ) {}
Datum_reference datum(Shared_data) const { return m_datum; }
typename Base::Point_reference