Open CASCADE Technology 7.8.2.dev
NCollection_UBTreeFiller< TheObjType, TheBndType > Class Template Reference

#include <NCollection_UBTreeFiller.hxx>

Data Structures

struct  ObjBnd
 Structure of pair (object, bnd box) More...
 

Public Types

typedef NCollection_UBTree< TheObjType, TheBndType > UBTree
 UBTree algorithm.
 
typedef UBTree::TreeNode UBTreeNode
 

Public Member Functions

 NCollection_UBTreeFiller (UBTree &theTree, const Handle< NCollection_BaseAllocator > &theAlloc=0L, const Standard_Boolean isFullRandom=Standard_True)
 
void Add (const TheObjType &theObj, const TheBndType &theBnd)
 Adds a pair (theObj, theBnd) to my sequence.
 
Standard_Integer Fill ()
 
void Reset ()
 
Standard_Integer CheckTree (Standard_OStream &theStream)
 
 ~NCollection_UBTreeFiller ()
 

Detailed Description

template<class TheObjType, class TheBndType>
class NCollection_UBTreeFiller< TheObjType, TheBndType >

This class is used to fill an UBTree in a random order. The quality of a tree is much better (from the point of view of the search time) if objects are added to it in a random order to avoid adding a chain of neerby objects one following each other.

This class collects objects to be added, and then add them to the tree in a random order.

Member Typedef Documentation

◆ UBTree

template<class TheObjType , class TheBndType >
NCollection_UBTree<TheObjType, TheBndType> NCollection_UBTreeFiller< TheObjType, TheBndType >::UBTree

UBTree algorithm.

◆ UBTreeNode

template<class TheObjType , class TheBndType >
UBTree::TreeNode NCollection_UBTreeFiller< TheObjType, TheBndType >::UBTreeNode

Constructor & Destructor Documentation

◆ NCollection_UBTreeFiller()

template<class TheObjType , class TheBndType >
NCollection_UBTreeFiller< TheObjType, TheBndType >::NCollection_UBTreeFiller ( UBTree & theTree,
const Handle< NCollection_BaseAllocator > & theAlloc = 0L,
const Standard_Boolean isFullRandom = Standard_True )
inline

Constructor.

Parameters
theTreeTree instance that is to be filled.
theAllocAllocator for the Filler data.
isFullRandomTakes effect when the number of items is large (order of 50,000). When it is True, the code uses the maximal randomization allowing a better balanced tree. If False, the randomization/tree balance are worse but the tree filling is faster due to better utilisation of CPU L1/L2 cache.

◆ ~NCollection_UBTreeFiller()

template<class TheObjType , class TheBndType >
NCollection_UBTreeFiller< TheObjType, TheBndType >::~NCollection_UBTreeFiller ( )
inline

Destructor. Fills the tree with accumulated items if they have not been passed by a previous call of method Fill().

Member Function Documentation

◆ Add()

template<class TheObjType , class TheBndType >
void NCollection_UBTreeFiller< TheObjType, TheBndType >::Add ( const TheObjType & theObj,
const TheBndType & theBnd )
inline

Adds a pair (theObj, theBnd) to my sequence.

◆ CheckTree()

template<class TheObjType , class TheBndType >
Standard_Integer NCollection_UBTreeFiller< TheObjType, TheBndType >::CheckTree ( Standard_OStream & theStream)

Check the filled tree for the total number of items and the balance outputting these results to std::ostream.

Returns
the tree size (the same value is returned by method Fill()).

◆ Fill()

template<class TheObjType , class TheBndType >
Standard_Integer NCollection_UBTreeFiller< TheObjType, TheBndType >::Fill ( )

Fills the tree with the objects from my sequence. This method clears the internal buffer of added items making sure that no item would be added twice.

Returns
the number of objects added to the tree.

◆ Reset()

template<class TheObjType , class TheBndType >
void NCollection_UBTreeFiller< TheObjType, TheBndType >::Reset ( )
inline

Remove all data from Filler, partculary if the Tree no more needed so the destructor of this Filler should not populate the useless Tree.


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