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

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.

Public Member Functions

virtual ~Query ()
 
virtual bool matches (const Subcell &cell)=0
 
virtual bool shouldCreateSubcell (const Subcell &cell)=0
 
virtual boost::shared_ptr
< DtNTree
createSubcell (DtNTree &tree, Subcell &cell)
 
virtual void visit (DtNTree &tree)
 

Protected Member Functions

SubcellgetSubcell (DtNTree &tree, unsigned int i)
 

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 Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)