# FoundationClasses
TKernel
NCollection

# NCollection_UBTree< TheObjType, TheBndType >::TreeNode Class Reference

`#include <NCollection_UBTree.hxx>`

## Public Member Functions

| TreeNode (const TheObjType &theObj, const TheBndType &theBnd)
Standard_Boolean | IsLeaf () const
Standard_Boolean | IsRoot () const
const TheBndType & | Bnd () const
TheBndType & | ChangeBnd ()
const TheObjType & | Object () const
const TreeNode & | Child (const Standard_Integer i) const
TreeNode & | ChangeChild (const Standard_Integer i)
const TreeNode & | Parent () const
TreeNode & | ChangeParent ()
void | Gemmate (const TheBndType &theNewBnd, const TheObjType &theObj, const TheBndType &theBnd, const Handle(NCollection_BaseAllocator)&theAlloc)
void | Kill (const Standard_Integer i, const Handle(NCollection_BaseAllocator)&theAlloc)
| ~TreeNode ()
void * | operator new (size_t theSize, const Handle(NCollection_BaseAllocator)&theAllocator)
void * | operator new (size_t, void *theMem)

## Static Public Member Functions

static void | delNode (TreeNode *theNode, Handle(NCollection_BaseAllocator)&theAlloc)

## Private Member Functions

| TreeNode ()

## Private Attributes

TheBndType | myBnd
| bounding geometry
TheObjType | myObject
| the object
TreeNode * | myChildren
| 2 children forming a b-tree
TreeNode * | myParent
| the pointer to a parent node

## Detailed Description

### template<class TheObjType, class TheBndType>
class NCollection_UBTree< TheObjType, TheBndType >::TreeNode

Class describing the node of the tree. Initially the tree consists of one leaf. A node can grow to a branch holding two childs:

- one correspondent to initial node
- the new one with a new object and bounding box

## Constructor & Destructor Documentation

template<class TheObjType, class TheBndType>
NCollection_UBTree< TheObjType, TheBndType >::TreeNode::TreeNode | ( | const TheObjType & | theObj,
|  | const TheBndType & | theBnd
| ) | `[inline]`

template<class TheObjType, class TheBndType>
NCollection_UBTree< TheObjType, TheBndType >::TreeNode::~TreeNode | ( |  | ) | `[inline]`

template<class TheObjType, class TheBndType>
NCollection_UBTree< TheObjType, TheBndType >::TreeNode::TreeNode | ( |  | ) | `[inline, private]`

## Member Function Documentation

template<class TheObjType, class TheBndType>
const TheBndType& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Bnd | ( |  | ) | const`[inline]`

template<class TheObjType, class TheBndType>
TheBndType& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::ChangeBnd | ( |  | ) | `[inline]`

template<class TheObjType, class TheBndType>
TreeNode& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::ChangeChild | ( | const Standard_Integer | i | ) | `[inline]`

template<class TheObjType, class TheBndType>
TreeNode& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::ChangeParent | ( |  | ) | `[inline]`

template<class TheObjType, class TheBndType>
const TreeNode& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Child | ( | const Standard_Integer | i | ) | const`[inline]`

template<class TheObjType, class TheBndType>
static void NCollection_UBTree< TheObjType, TheBndType >::TreeNode::delNode | ( | TreeNode * | theNode,
|  | Handle(NCollection_BaseAllocator)& | theAlloc
| ) | `[inline, static]`

| Deleter of tree node. The whole hierarchy of its children also deleted. This method should be used instead of operator delete.

template<class TheObjType, class TheBndType>
void NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Gemmate | ( | const TheBndType & | theNewBnd,
|  | const TheObjType & | theObj,
|  | const TheBndType & | theBnd,
|  | const Handle(NCollection_BaseAllocator)& | theAlloc
| ) | `[inline]`

Forces *this node being gemmated such a way that it becomes a branch holding the previous content of *this node at the first child and theObj at the second child.

Parameters:

  | TheNewBnd | new bounding box comprizing both child nodes.
  | theObj | added object.
  | theBnd | bounding box of theObj. allocator providing memory to the new child nodes, provided by the calling Tree instance.

template<class TheObjType, class TheBndType>
Standard_Boolean NCollection_UBTree< TheObjType, TheBndType >::TreeNode::IsLeaf | ( |  | ) | const`[inline]`

template<class TheObjType, class TheBndType>
Standard_Boolean NCollection_UBTree< TheObjType, TheBndType >::TreeNode::IsRoot | ( |  | ) | const`[inline]`

template<class TheObjType, class TheBndType>
void NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Kill | ( | const Standard_Integer | i,
|  | const Handle(NCollection_BaseAllocator)& | theAlloc
| ) | `[inline]`

| Kills the i-th child, and *this accepts the content of another child

template<class TheObjType, class TheBndType>
const TheObjType& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Object | ( |  | ) | const`[inline]`

template<class TheObjType, class TheBndType>
void* NCollection_UBTree< TheObjType, TheBndType >::TreeNode::operator new | ( | size_t | ,
|  | void * | theMem
| ) | `[inline]`

| Allocator of a tree node.

template<class TheObjType, class TheBndType>
void* NCollection_UBTree< TheObjType, TheBndType >::TreeNode::operator new | ( | size_t | theSize,
|  | const Handle(NCollection_BaseAllocator)& | theAllocator
| ) | `[inline]`

| Allocator of a tree node.

template<class TheObjType, class TheBndType>
const TreeNode& NCollection_UBTree< TheObjType, TheBndType >::TreeNode::Parent | ( |  | ) | const`[inline]`

## Field Documentation

template<class TheObjType, class TheBndType>
TheBndType NCollection_UBTree< TheObjType, TheBndType >::TreeNode::myBnd `[private]`

template<class TheObjType, class TheBndType>
TreeNode* NCollection_UBTree< TheObjType, TheBndType >::TreeNode::myChildren `[private]`

template<class TheObjType, class TheBndType>
TheObjType NCollection_UBTree< TheObjType, TheBndType >::TreeNode::myObject `[private]`

template<class TheObjType, class TheBndType>
TreeNode* NCollection_UBTree< TheObjType, TheBndType >::TreeNode::myParent `[private]`

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

- NCollection_UBTree.hxx