VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Friends
makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType > Class Template Reference

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.

Inheritance diagram for makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >:
Inheritance graph
[legend]

Classes

class  Bounds
 
struct  Power
 
struct  Power< A, 0 >
 
class  Query
 
struct  Range
 
class  Subcell
 

Public Member Functions

int getLevel () const
 
const BoundsgetBounds () const
 
boost::shared_ptr< DtNTreegetParent () const
 
T & getData ()
 
const T & getData () const
 

Static Public Member Functions

static boost::shared_ptr< DtNTreeCreate (const Bounds &bounds)
 

Static Public Attributes

static const unsigned int NumberOfIndices = Power<2, Dimensions>::value
 

Protected Member Functions

 DtNTree (DtNTree &parent, const Bounds &bounds)
 
 DtNTree (const Bounds &bounds, unsigned int level)
 
virtual boost::shared_ptr
< DtNTree
createSubcell (Subcell &cell)
 
virtual void visit (Query &query)
 

Protected Attributes

const ParentPtr myParent
 
const int myLevel
 
const Bounds myBounds
 
Subcell mySubcells [NumberOfIndices]
 
myData
 

Private Types

typedef SubcellTraits< DtNTree >
::Ptr 
Ptr
 
typedef SubcellTraits< DtNTree >
::ParentPtr 
ParentPtr
 

Static Private Member Functions

template<typename Z >
static boost::shared_ptr< Z > Get (const boost::shared_ptr< Z > &p)
 
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)
 

Friends

class Query
 

Member Typedef Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
typedef SubcellTraits<DtNTree>::Ptr makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Ptr
private
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
typedef SubcellTraits<DtNTree>::ParentPtr makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::ParentPtr
private

Constructor & Destructor Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::DtNTree ( DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType > &  parent,
const Bounds bounds 
)
inlineexplicitprotected
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::DtNTree ( const Bounds bounds,
unsigned int  level 
)
inlineexplicitprotected

Member Function Documentation

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

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getParent().

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::weak_ptr< Z > &  p)
inlinestaticprivate

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename Z >
static void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Set ( boost::shared_ptr< Z > &  p,
const boost::shared_ptr< Z > &  to 
)
inlinestaticprivate

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Subcell::getPtr().

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename Z >
static void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Set ( boost::shared_ptr< Z > &  p,
const boost::weak_ptr< Z > &  to 
)
inlinestaticprivate

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename Z >
static void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Set ( boost::weak_ptr< Z > &  p,
const boost::shared_ptr< Z > &  to 
)
inlinestaticprivate

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
template<typename Z >
static void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Set ( boost::weak_ptr< Z > &  p,
const boost::weak_ptr< Z > &  to 
)
inlinestaticprivate

These functions allow shared and weak pointers to be treated the same. Weak pointers cannot be directly converted into shared, lock() must be called.

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
static boost::shared_ptr<DtNTree> makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Create ( const Bounds bounds)
inlinestatic

Factory, create a top level root cell.

References makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::DtNTree().

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>
const Bounds& makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getBounds ( ) const
inline
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
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 >::getData ( void  )
inline
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
const T& makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getData ( void  ) const
inline
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
virtual boost::shared_ptr<DtNTree> makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::createSubcell ( Subcell cell)
inlineprotectedvirtual
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

Friends And Related Function Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
friend class Query
friend

Member Data Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
const unsigned int makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::NumberOfIndices = Power<2, Dimensions>::value
static
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
const ParentPtr makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::myParent
protected

Pointer to parent node if it exists.

Referenced by makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::getParent().

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
const int makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::myLevel
protected
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
const Bounds makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::myBounds
protected
template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
Subcell makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::mySubcells[NumberOfIndices]
protected
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

The documentation for this class was generated from the following file:

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)