liborigin 2.0.0

Functions
kp Namespace Reference

## Functions
template<class T1 >
void | constructor (T1 *p)
template<class T1 , class T2 >
void | constructor (T1 *p, T2 &val)
template<class T1 >
void | destructor (T1 *p)

## Detailed Description

Todo:
  - New-style move members are not completely finished yet.
  - It would be good to have an iterator which can iterate over all nodes below a given node.
  - Fixed depth iterators do not iterate over the entire range if there are 'holes' in the tree.
  - If a range uses const iter_base& as end iterator, things will inevitably go wrong, because upcast from iter_base to a non-sibling_iter is incorrect. This upcast should be removed (and then all illegal uses as previously in 'equal' will be flagged by the compiler). This requires new copy constructors though.
  - There's a bug in replace(sibling_iterator, ...) when the ranges sit next to each other. Turned up in append_child(iter,iter) but has been avoided now.
  - "std::operator<" does not work correctly on our iterators, and for some reason a globally defined template operator< did not get picked up. Using a comparison class now, but this should be investigated.

## Function Documentation

## ◆ constructor() [1/2]

template<class T1 >

void kp::constructor | ( | T1 * | p | ) |

## ◆ constructor() [2/2]

template<class T1 , class T2 >

void kp::constructor | ( | T1 * | p,
|  | T2 & | val
| ) |  |

Referenced by tree< T, tree_node_allocator >::append_child(), tree< T, tree_node_allocator >::insert(), tree< T, tree_node_allocator >::insert_after(), tree< T, tree_node_allocator >::prepend_child(), and tree< T, tree_node_allocator >::replace().

## ◆ destructor()

template<class T1 >

void kp::destructor | ( | T1 * | p | ) |

Referenced by tree< T, tree_node_allocator >::erase(), tree< T, tree_node_allocator >::erase_children(), and tree< T, tree_node_allocator >::replace().