|
@@ -1214,6 +1214,14 @@ public:
|
|
}
|
|
}
|
|
//@}
|
|
//@}
|
|
|
|
|
|
|
|
+ /// \brief return the largest node (right-most last node) in the
|
|
|
|
+ /// tree.
|
|
|
|
+ ///
|
|
|
|
+ /// \return A \c DomainTreeNode that is largest in the tree. If the
|
|
|
|
+ /// tree has no nodes, NULL will be returned.
|
|
|
|
+ const DomainTreeNode<T>*
|
|
|
|
+ getLargestNode() const;
|
|
|
|
+
|
|
/// \brief return the next bigger node in DNSSEC order from a given node
|
|
/// \brief return the next bigger node in DNSSEC order from a given node
|
|
/// chain.
|
|
/// chain.
|
|
///
|
|
///
|
|
@@ -1710,6 +1718,21 @@ DomainTree<T>::previousNode(DomainTreeNodeChain<T>& node_path) const {
|
|
}
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
|
+const DomainTreeNode<T>*
|
|
|
|
+DomainTree<T>::getLargestNode() const {
|
|
|
|
+ const DomainTreeNode<T>* node = root_.get();
|
|
|
|
+ if (root_ == NULL) {
|
|
|
|
+ return (NULL);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ while (node->getRight() != NULL) {
|
|
|
|
+ node = node->getRight();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return (node);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template <typename T>
|
|
typename DomainTree<T>::Result
|
|
typename DomainTree<T>::Result
|
|
DomainTree<T>::insert(util::MemorySegment& mem_sgmt,
|
|
DomainTree<T>::insert(util::MemorySegment& mem_sgmt,
|
|
const isc::dns::Name& target_name,
|
|
const isc::dns::Name& target_name,
|