| 
    SparseLibrary
    Version 1.6.0
    
   | 
 
Models a Separated Block Diagonal tree structure. More...
#include <SBDTree.hpp>

Public Member Functions | |
| SBDTree (std::vector< unsigned long int > &r_hierarchy, std::vector< unsigned long int > &c_hierarchy, std::vector< unsigned long int > &r_bounds, std::vector< unsigned long int > &c_bounds) | |
| Base constructor.  | |
| SBDTree (std::vector< unsigned long int > &hierarchy, std::vector< unsigned long int > &r_bounds, std::vector< unsigned long int > &c_bounds) | |
| Base constructor.  More... | |
| ~SBDTree () | |
| Base deconstructor.  More... | |
| void | getSeparatorBB (const unsigned long int index, unsigned long int &r_lo, unsigned long int &r_hi, unsigned long int &c_lo, unsigned long int &c_hi) | 
| Gets, from a separator node, the bounding box of the nonzeroes contained in the separator.  More... | |
| unsigned long int | up (const unsigned long int index) | 
| Returns the parent of a given node.  More... | |
| unsigned long int | left (const unsigned long int index) | 
| Returns the left child of a given node.  More... | |
| unsigned long int | right (const unsigned long int index) | 
| Returns the right child of a given node.  More... | |
| void | rowBounds (const unsigned long int index, unsigned long int &r_lo, unsigned long int &r_hi) | 
| Returns the row bounds corresponding to a given node.  More... | |
| void | columnBounds (const unsigned long int index, unsigned long int &c_lo, unsigned long int &c_hi) | 
| Returns the column bounds corresponding to a given node.  More... | |
| char | isLeaf (const unsigned long int index) | 
| Whether the given node is a leaf node.  | |
| unsigned long int | size () | 
| Gets the number of nodes.  | |
| unsigned long int | getRoot () | 
| Gets the root index.  | |
Protected Member Functions | |
| void | build (std::vector< unsigned long int > &hierarchy, std::vector< unsigned long int > &r_bounds, std::vector< unsigned long int > &c_bounds) | 
| Builds the SBD tree using three input vectors.  More... | |
Protected Attributes | |
| unsigned long int * | parent | 
| Array s.t.  More... | |
| unsigned long int * | left_child | 
| Array s.t.  More... | |
| unsigned long int * | right_child | 
| Array s.t.  More... | |
| unsigned long int * | r_lo | 
| Array s.t.  More... | |
| unsigned long int * | r_hi | 
| Array s.t.  More... | |
| unsigned long int * | c_lo | 
| Array s.t.  More... | |
| unsigned long int * | c_hi | 
| Array s.t.  More... | |
| unsigned long int | root | 
| Which node ID corresponds to the root.  More... | |
| unsigned long int | nodes | 
| The total number of tree nodes.  More... | |
| char | root_is_set | 
| Whether the root node is set.  More... | |
Static Protected Attributes | |
| static const unsigned long int | NO_SUCH_NODE = ULONG_MAX | 
| Integer corresponding to non-existing nodes.  More... | |
Models a Separated Block Diagonal tree structure.
| SBDTree::SBDTree | ( | std::vector< unsigned long int > & | hierarchy, | 
| std::vector< unsigned long int > & | r_bounds, | ||
| std::vector< unsigned long int > & | c_bounds | ||
| ) | 
| SBDTree::~SBDTree | ( | ) | 
Base deconstructor.
References c_hi, c_lo, left_child, parent, r_hi, r_lo, and right_child.
      
  | 
  protected | 
Builds the SBD tree using three input vectors.
| hierarchy | The SBD hierarchy vector. | 
| r_bounds | The row bounds of each SBD block. | 
| c_bounds | The column bounds of each SBD block. | 
References c_hi, c_lo, left_child, NO_SUCH_NODE, nodes, parent, r_hi, r_lo, right_child, root, and root_is_set.
Referenced by SBDTree().
| void SBDTree::columnBounds | ( | const unsigned long int | index, | 
| unsigned long int & | c_lo, | ||
| unsigned long int & | c_hi | ||
| ) | 
Returns the column bounds corresponding to a given node.
Referenced by BlockOrderer< T >::induce(), BlockOrderer< T >::left_horizontal(), BlockOrderer< T >::lower_vertical(), BlockOrderer< T >::middle(), BlockOrderer< T >::right_horizontal(), and BlockOrderer< T >::upper_vertical().
| void SBDTree::getSeparatorBB | ( | const unsigned long int | index, | 
| unsigned long int & | r_lo, | ||
| unsigned long int & | r_hi, | ||
| unsigned long int & | c_lo, | ||
| unsigned long int & | c_hi | ||
| ) | 
Gets, from a separator node, the bounding box of the nonzeroes contained in the separator.
Note that this is not the r_lo/hi,c_lo/hi of the node itself; those are the bounds of the row-wise and column-wise separators.
This is a logarithmic operation.
| index | The separator node ID. | 
| r_lo | Where to store the lower row bound. | 
| r_hi | Where to store the upper row bound. | 
| c_lo | Where to store the lower column bound. | 
| c_hi | Where to store the upper column bound. | 
Note that this is not the r_lo/hi,c_lo/hi of the node itself; those are the bounds of the row-wise and column-wise separators.
This is a logarithmic operation.
References left_child, NO_SUCH_NODE, and right_child.
Referenced by BlockOrderer< T >::left_horizontal(), BlockOrderer< T >::lower_vertical(), BlockOrderer< T >::middle(), BlockOrderer< T >::right_horizontal(), and BlockOrderer< T >::upper_vertical().
| unsigned long int SBDTree::left | ( | const unsigned long int | index | ) | 
Returns the left child of a given node.
References left_child, and NO_SUCH_NODE.
Referenced by BlockOrderer< T >::traverse().
| unsigned long int SBDTree::right | ( | const unsigned long int | index | ) | 
Returns the right child of a given node.
References NO_SUCH_NODE, and right_child.
Referenced by BlockOrderer< T >::traverse().
| void SBDTree::rowBounds | ( | const unsigned long int | index, | 
| unsigned long int & | r_lo, | ||
| unsigned long int & | r_hi | ||
| ) | 
Returns the row bounds corresponding to a given node.
Referenced by BlockOrderer< T >::induce(), BlockOrderer< T >::left_horizontal(), BlockOrderer< T >::lower_vertical(), BlockOrderer< T >::middle(), BlockOrderer< T >::right_horizontal(), and BlockOrderer< T >::upper_vertical().
| unsigned long int SBDTree::up | ( | const unsigned long int | index | ) | 
Returns the parent of a given node.
References NO_SUCH_NODE, and parent.
Referenced by BlockOrderer< T >::traverse().
      
  | 
  protected | 
Array s.t.
c_hi[i] returns the upper column bound of block i.
Referenced by build(), Upscaler< T >::getSubTree(), Upscaler< T >::Upscaler(), and ~SBDTree().
      
  | 
  protected | 
Array s.t.
c_lo[i] returns the lower column bound of block i.
Referenced by build(), Upscaler< T >::getSubTree(), Upscaler< T >::Upscaler(), and ~SBDTree().
      
  | 
  protected | 
Array s.t.
left_child[i] returns the left child ID of block i.
Referenced by build(), getSeparatorBB(), Upscaler< T >::getSubTree(), isLeaf(), left(), Upscaler< T >::readout(), and ~SBDTree().
      
  | 
  staticprotected | 
Integer corresponding to non-existing nodes.
Referenced by build(), Upscaler< T >::determineMinMax(), getSeparatorBB(), Upscaler< T >::getSubTree(), isLeaf(), left(), Upscaler< T >::treeIterator::next(), Upscaler< T >::treeInOrderIterator::next(), Upscaler< T >::treePostOrderIterator::next(), Upscaler< T >::readout(), right(), and up().
      
  | 
  protected | 
      
  | 
  protected | 
Array s.t.
parent[i] returns the parent ID of block i.
Referenced by build(), Upscaler< T >::determineMinMax(), Upscaler< T >::getSubTree(), Upscaler< T >::readout(), up(), Upscaler< T >::Upscaler(), and ~SBDTree().
      
  | 
  protected | 
Array s.t.
r_hi[i] returns the upper row bound of block i.
Referenced by build(), Upscaler< T >::getSubTree(), Upscaler< T >::Upscaler(), and ~SBDTree().
      
  | 
  protected | 
Array s.t.
r_lo[i] returns the lower row bound of block i.
Referenced by build(), Upscaler< T >::getSubTree(), Upscaler< T >::Upscaler(), and ~SBDTree().
      
  | 
  protected | 
Array s.t.
right_child[i] returns the right child ID of block i.
Referenced by build(), getSeparatorBB(), Upscaler< T >::getSubTree(), isLeaf(), Upscaler< T >::readout(), right(), and ~SBDTree().
      
  | 
  protected | 
Which node ID corresponds to the root.
Referenced by build(), getRoot(), Upscaler< T >::getSubTree(), and Upscaler< T >::Upscaler().
      
  | 
  protected | 
Whether the root node is set.
Referenced by build().
 1.8.7