Static Private Member Functions |
|
| template<typename Z > |
| static boost::shared_ptr< Z > | Get (const boost::shared_ptr< Z > &p) |
| | These functions allow shared and weak pointers to be treated the same.
|
| template<typename Z > |
| static boost::shared_ptr< Z > | Get (const boost::weak_ptr< Z > &p) |
| template<typename Z > |
| static void | Set (boost::shared_ptr< Z > &p, const boost::shared_ptr< Z > &to) |
| template<typename Z > |
| static void | Set (boost::shared_ptr< Z > &p, const boost::weak_ptr< Z > &to) |
| template<typename Z > |
| static void | Set (boost::weak_ptr< Z > &p, const boost::shared_ptr< Z > &to) |
| template<typename Z > |
| static void | Set (boost::weak_ptr< Z > &p, const boost::weak_ptr< Z > &to) |
template<typename T, unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
class makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >
Generate NTree (binary tree, quadtree, octree, etc.) class.
This consists of the tree itself and a query class which is a general search algorithm. The tree itself is a container and has very little functionality. In the nomenclature of this class, a tree has a number of subcells, each of which has a pointer to itself own (sub)tree, although that poitner can be empty if the subtree hasn't been created yet. Trees are independent of each other, while subcells are part of a tree. Trees are always managed by shared pointers. The shared/weak pointer policies control the ownership semantics of the trees. The shared policy (default) has the subcells owning their subtrees, so they are never automatically removed. The weak pointer policy has subcells holding their subtrees with weak pointers. This means that the users must save shared pointers to the subtrees that they want to keep in existence. If this is done then when the last reference to the subcell is removed, the subcell will automatically be removed from the tree without any further work.
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
Constructor for creating children trees.
- Parameters
-
| parent | Parent of this tree. |
| bounds | for this cell |
References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Subcell::init(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Bounds::makeSubBounds(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::mySubcells, and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::NumberOfIndices.
Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Create(), and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::createSubcell().
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
Constructor for creating root tree.
References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Subcell::init(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Bounds::makeSubBounds(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::mySubcells, and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::NumberOfIndices.
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename Z >
| static boost::shared_ptr<Z> makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Get |
( |
const boost::shared_ptr< Z > & |
p | ) |
|
|
inlinestaticprivate |
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
| int makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getLevel |
( |
| ) |
const |
|
inline |
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
| boost::shared_ptr<DtNTree> makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getParent |
( |
| ) |
const |
|
inline |
Return the parent of this tree, if it exists.
References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Get(), and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::myParent.
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
Default implementation of query createSubcell.
- Parameters
-
| cell | Subcell to create child tree for, must be a subcell of this tree. |
References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Subcell::bounds(), and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::DtNTree().
Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::createSubcell().
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
| virtual void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::visit |
( |
Query & |
query | ) |
|
|
inlineprotectedvirtual |
Default implementation of query visit.
References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Subcell::getPtr(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::matches(), makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::mySubcells, makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::NumberOfIndices, and makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::visit().
Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::visit().
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
| T makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::myData |
|
protected |