VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions
makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query Class Reference

Query interface. More...

Public Member Functions

virtual ~Query ()
 Virtual destructor.
virtual bool matches (const Subcell &cell)=0
 Search will ignore cells which return false.
virtual bool shouldCreateSubcell (const Subcell &cell)=0
 Determine if an empty subcell should be created.
virtual boost::shared_ptr
< DtNTree
createSubcell (DtNTree &tree, Subcell &cell)
 Factory function for creating subcells.
virtual void visit (DtNTree &tree)
 Entry point for search.

Protected Member Functions

SubcellgetSubcell (DtNTree &tree, unsigned int i)
 Interface for subclasses to get at subcell objects.

Detailed Description

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 >::Query

Query interface.

Queries are templates of a general search on the tree. Users implement various parts of it in order to view/mutate/add/delete subcells. The main algorithm of the search goes like this:

  1. Call match on all the subcells and collect the ones that match.
  2. If any matched subcells don't have children and return shouldCreateSubcell true, create them.
  3. Call visit on all the existing and matching subcells.

Constructor & Destructor Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
virtual makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::~Query ( )
inlinevirtual

Virtual destructor.

Member Function Documentation

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
virtual bool makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::matches ( const Subcell cell)
pure virtual

Search will ignore cells which return false.

For a given tree, matches will be called on ALL the subcells before any other functions are called. This allows the query to see the entire set of subcells before making any decisions about creating new cells, recursing, etc.

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

template<typename T , unsigned int Dimensions = 3, typename Mutex = DtNTreeNullMutexPolicy, template< typename > class SubcellTraits = DtNTreeSharedPointerTraits, typename BoundsType = double>
virtual bool makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::shouldCreateSubcell ( const Subcell cell)
pure virtual

Determine if an empty subcell should be created.

This function will be called when the query is has decided it will recurse into a subcell which does not exist.

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>
virtual boost::shared_ptr<DtNTree> makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::createSubcell ( DtNTree tree,
Subcell cell 
)
inlinevirtual

Factory function for creating subcells.

Reimplement this function to have this query create your own subclass.

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

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>
virtual void makVrv::DtNTree< T, Dimensions, Mutex, SubcellTraits, BoundsType >::Query::visit ( DtNTree tree)
inlinevirtual
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 >::Query::getSubcell ( DtNTree tree,
unsigned int  i 
)
inlineprotected

Interface for subclasses to get at subcell objects.

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


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

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)