te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag > Class Template Reference

A class that represents an Kd-tree node. More...

#include <Node.h>

Public Types

typedef NodeData kdData
 Export data type. More...
 
typedef NodeDataItem kdDataItem
 Export data item type. More...
 
typedef NodeDataTag kdDataTag
 Export data type. More...
 
typedef NodeKey kdKey
 Export key type. More...
 

Public Member Functions

std::size_t descendants () const
 It counts the number of nodes below this. More...
 
NodeData & getData ()
 It returns a reference to data node. More...
 
const NodeKey & getKey () const
 It returns a reference to node key. More...
 
NodegetLeft () const
 It gets the left child. More...
 
NodegetRight () const
 It gets the right child. More...
 
bool hasLeft () const
 It checks if this node has a left child. More...
 
bool hasRight () const
 It checks if this node has a right child. More...
 
bool isLeaf () const
 It returns true if this node is a leaf node. More...
 
 Node (const NodeKey &k)
 Constructor. More...
 
void setData (const NodeData &data)
 It sets the data in the node. More...
 
void setKey (const NodeKey &k)
 It sets the key to the node. More...
 
void setLeft (Node *node)
 It sets the left child pointer. More...
 
void setRight (Node *node)
 It sets the right child pointer. More...
 

Protected Attributes

NodeData m_data
 The data stored in this record. More...
 
NodeKey m_key
 The key used to access this record. More...
 
Nodem_left
 Pointer to the left sub-tree. More...
 
Nodem_right
 Pointer to the right sub-tree. More...
 

Private Member Functions

 Node (const Node &rhs)
 No copy constructor allowed. More...
 
Nodeoperator= (const Node &rhs)
 No assignment operator allowed. More...
 

Detailed Description

template<class NodeKey, class NodeData, class NodeDataItem, class NodeDataTag = kd_node_m_datasingle_tag>
class te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >

A class that represents an Kd-tree node.

Each node contains a pointer to its left and right subtree (NULL if it is not set), one key used for insertion of the data into the tree.

Note
The key must have methods called getX() and getY().
These kind of node stores the data in each node.
The nodes may contains one single element (kd_node_m_datasingle_tag) or a set of values (kd_node_m_dataset_tag).
If the node type is kd_node_m_datasingle_tag than NodeData and NodeDataItem are the same types. And if one entry with the same key already exist, so they will be overwrite.
If the node type is kd_node_m_dataset_tag than NodeData mus have a method called push_back(NodeDataItem) that permits to store elements with the same key in the node.

Definition at line 61 of file Node.h.

Member Typedef Documentation

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
typedef NodeData te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::kdData

Export data type.

Definition at line 69 of file Node.h.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
typedef NodeDataItem te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::kdDataItem

Export data item type.

Definition at line 72 of file Node.h.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
typedef NodeDataTag te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::kdDataTag

Export data type.

Definition at line 75 of file Node.h.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
typedef NodeKey te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::kdKey

Export key type.

Definition at line 66 of file Node.h.

Constructor & Destructor Documentation

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::Node ( const NodeKey &  k)
inline

Constructor.

Definition at line 78 of file Node.h.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::Node ( const Node< NodeKey, NodeData, NodeDataItem, NodeDataTag > &  rhs)
private

No copy constructor allowed.

Parameters
rhsThe other node.

Member Function Documentation

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
NodeData& te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::getData ( )
inline

It returns a reference to data node.

Definition at line 104 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_data.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
const NodeKey& te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::getKey ( ) const
inline

It returns a reference to node key.

Definition at line 92 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_key.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
Node* te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::getLeft ( ) const
inline
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
Node* te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::getRight ( ) const
inline
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
bool te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::hasLeft ( ) const
inline
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
bool te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::hasRight ( ) const
inline
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
bool te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::isLeaf ( ) const
inline
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
Node& te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::operator= ( const Node< NodeKey, NodeData, NodeDataItem, NodeDataTag > &  rhs)
private

No assignment operator allowed.

Parameters
rhsThe other node.
Returns
A reference for this.
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
void te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::setData ( const NodeData &  data)
inline

It sets the data in the node.

Definition at line 98 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_data.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
void te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::setKey ( const NodeKey &  k)
inline

It sets the key to the node.

Definition at line 86 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_key.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
void te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::setLeft ( Node< NodeKey, NodeData, NodeDataItem, NodeDataTag > *  node)
inline

It sets the left child pointer.

Definition at line 110 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_left.

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
void te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::setRight ( Node< NodeKey, NodeData, NodeDataItem, NodeDataTag > *  node)
inline

It sets the right child pointer.

Definition at line 116 of file Node.h.

References te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_right.

Member Data Documentation

template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
NodeData te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_data
protected
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
NodeKey te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_key
protected
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
Node* te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_left
protected
template<class NodeKey , class NodeData , class NodeDataItem , class NodeDataTag = kd_node_m_datasingle_tag>
Node* te::sam::kdtree::Node< NodeKey, NodeData, NodeDataItem, NodeDataTag >::m_right
protected

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