Skip to content

Commit

Permalink
removed caching functionality from ContainingFirstIterator
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean Foley committed Aug 23, 2024
1 parent da8d581 commit 6e87f76
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -963,8 +963,8 @@ public <C> CachingIterator<? extends TrieNode<E>, E, C> blockSizeCachingAllNodeI

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<? extends TrieNode<E>, E, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<? extends TrieNode<E>, E, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<? extends TrieNode<E>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<? extends TrieNode<E>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -2697,21 +2697,21 @@ public <C> CachingIterator<? extends TrieNode<E>, E, C> blockSizeCachingAllNodeI

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<? extends TrieNode<E>, E, C> containingFirstIterator(boolean forwardSubNodeOrder) {
CachingIterator<? extends BinaryTreeNode<E>, E, C> iterator;
public Iterator<? extends TrieNode<E>> containingFirstIterator(boolean forwardSubNodeOrder) {
Iterator<? extends BinaryTreeNode<E>> iterator;
if(bounds == null) {
iterator = absoluteRoot().containingFirstIterator(forwardSubNodeOrder);
} else {
if(forwardSubNodeOrder) {
iterator = new PreOrderNodeIterator<E, C>(
iterator = new PreOrderNodeIterator<E, Object>(
bounds,
true,
true, // added only
absoluteRoot(),
null,
absoluteRoot().changeTracker);
} else {
iterator = new PostOrderNodeIterator<E, C>(
iterator = new PostOrderNodeIterator<E, Object>(
bounds,
false,
true, // added only
Expand All @@ -2720,7 +2720,7 @@ public <C> CachingIterator<? extends TrieNode<E>, E, C> containingFirstIterator(
absoluteRoot().changeTracker);
}
}
return (CachingIterator<? extends TrieNode<E>, E, C>) iterator;
return (Iterator<? extends TrieNode<E>>) iterator;
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ default TrieNode<E> getAddedNode(E addr) {
Iterator<? extends TrieNode<E>> allNodeIterator(boolean forward);

@Override
<C> CachingIterator<? extends TrieNode<E>, E, C> containingFirstIterator(boolean forwardSubNodeOrder);
Iterator<? extends TrieNode<E>> containingFirstIterator(boolean forwardSubNodeOrder);

@Override
<C> CachingIterator<? extends TrieNode<E>, E, C> containingFirstAllNodeIterator(boolean forwardSubNodeOrder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,8 @@ public <C> CachingIterator<? extends AssociativeTrieNode<K,V>, K, C> blockSizeCa

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<? extends AssociativeTrieNode<K,V>, K, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<? extends AssociativeTrieNode<K,V>, K, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<? extends AssociativeTrieNode<K,V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<? extends AssociativeTrieNode<K,V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -780,8 +780,8 @@ public Iterator<? extends AssociativeTrieNode<K,V>> blockSizeAllNodeIterator(boo

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<? extends AssociativeTrieNode<K,V>, K, C> containingFirstIterator(boolean lowerSubNodeFirst) {
return (CachingIterator<? extends AssociativeTrieNode<K, V>, K, C>) super.containingFirstIterator(lowerSubNodeFirst);
public Iterator<? extends AssociativeTrieNode<K,V>> containingFirstIterator(boolean lowerSubNodeFirst) {
return (Iterator<? extends AssociativeTrieNode<K, V>>) super.containingFirstIterator(lowerSubNodeFirst);
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1182,7 +1182,7 @@ Iterator<? extends BinaryTreeNode<E>> blockSizeNodeIterator(boolean lowerSubNode
}

@Override
public <C> CachingIterator<? extends BinaryTreeNode<E>, E, C> containingFirstIterator(boolean forwardSubNodeOrder) {
public Iterator<? extends BinaryTreeNode<E>> containingFirstIterator(boolean forwardSubNodeOrder) {
return containingFirstIterator(forwardSubNodeOrder, true);
}

Expand Down
15 changes: 2 additions & 13 deletions IPAddress/src/inet.ipaddr/inet/ipaddr/format/util/TreeOps.java
Original file line number Diff line number Diff line change
Expand Up @@ -221,23 +221,12 @@ default Spliterator<E> descendingSpliterator() {
* <p>
* This iterator supports the {@link java.util.Iterator#remove()} operation.
* <p>
* Once a given node is visited, the iterator allows you to cache an object corresponding to the
* lower or upper sub-node that can be retrieved when you later visit that sub-node.
* <p>
* Objects are cached only with nodes to be visited.
* So for this iterator that means an object will be cached with the first added lower or upper sub-node,
* the next lower or upper sub-node to be visited,
* which is not necessarily the direct lower or upper sub-node of a given node.
* <p>
* The caching allows you to provide iteration context from a parent to its sub-nodes when iterating.
* The caching and retrieval is done in constant-time and linear space (proportional to tree size).
* <p>
* See {@link TreeOps} for more details on the ordering.
* See the docs for {@link TreeOps} for more details on the ordering.
*
* @param forwardSubNodeOrder if true, a left sub-node will be visited before the right sub-node of the same parent node.
* @return
*/
<C> CachingIterator<? extends BinaryTreeNode<E>, E, C> containingFirstIterator(boolean forwardSubNodeOrder);
Iterator<? extends BinaryTreeNode<E>> containingFirstIterator(boolean forwardSubNodeOrder);

/**
* Returns an iterator that does a pre-order binary tree traversal.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,8 @@ public <C> CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C> blockSize

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv4AssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv4AssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -375,8 +375,8 @@ public <C> CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C> blockSize

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv4AssociativeTrieNode<V>, IPv4Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv4AssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv4AssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ public <C> CachingIterator<IPv4TrieNode, IPv4Address, C> blockSizeCachingAllNode

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv4TrieNode, IPv4Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv4TrieNode, IPv4Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv4TrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv4TrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -385,8 +385,8 @@ public <C> CachingIterator<IPv4TrieNode, IPv4Address, C> blockSizeCachingAllNode

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv4TrieNode, IPv4Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv4TrieNode, IPv4Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv4TrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv4TrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,8 @@ public <C> CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C> blockSize

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv6AssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv6AssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -375,8 +375,8 @@ public <C> CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C> blockSize

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv6AssociativeTrieNode<V>, IPv6Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv6AssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv6AssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ public <C> CachingIterator<IPv6TrieNode, IPv6Address, C> blockSizeCachingAllNode

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv6TrieNode, IPv6Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv6TrieNode, IPv6Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv6TrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv6TrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -406,8 +406,8 @@ public <C> CachingIterator<IPv6TrieNode, IPv6Address, C> blockSizeCachingAllNode

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<IPv6TrieNode, IPv6Address, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<IPv6TrieNode, IPv6Address, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<IPv6TrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<IPv6TrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,8 @@ public <C> CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C> blockSizeCa

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<MACAssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<MACAssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -383,8 +383,8 @@ public <C> CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C> blockSizeCa

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<MACAssociativeTrieNode<V>, MACAddress, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<MACAssociativeTrieNode<V>> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<MACAssociativeTrieNode<V>>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
8 changes: 4 additions & 4 deletions IPAddress/src/inet.ipaddr/inet/ipaddr/mac/MACAddressTrie.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ public <C> CachingIterator<MACTrieNode, MACAddress, C> blockSizeCachingAllNodeIt

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<MACTrieNode, MACAddress, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<MACTrieNode, MACAddress, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<MACTrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<MACTrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -379,8 +379,8 @@ public <C> CachingIterator<MACTrieNode, MACAddress, C> blockSizeCachingAllNodeIt

@SuppressWarnings("unchecked")
@Override
public <C> CachingIterator<MACTrieNode, MACAddress, C> containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator<MACTrieNode, MACAddress, C>) super.containingFirstIterator(forwardSubNodeOrder);
public Iterator<MACTrieNode> containingFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator<MACTrieNode>) super.containingFirstIterator(forwardSubNodeOrder);
}

@SuppressWarnings("unchecked")
Expand Down
4 changes: 2 additions & 2 deletions IPAddress/src/inet.ipaddr/inet/ipaddr/test/TrieTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -910,8 +910,8 @@ <R extends AddressTrie<T>, T extends Address> void testIterationContainment(R tr
testIterationContainment(tree, AddressTrie::blockSizeCachingAllNodeIterator, false);
testIterationContainment(tree, trie -> trie.containingFirstAllNodeIterator(true), false /* added only */);
testIterationContainment(tree, trie -> trie.containingFirstAllNodeIterator(false), false /* added only */);
testIterationContainment(tree, trie -> trie.containingFirstIterator(true), true /* added only */);
testIterationContainment(tree, trie -> trie.containingFirstIterator(false), true /* added only */);
//testIterationContainment(tree, trie -> trie.containingFirstIterator(true), true /* added only */);
//testIterationContainment(tree, trie -> trie.containingFirstIterator(false), true /* added only */);
}

<R extends AddressTrie<T>, T extends Address> void testIterationContainment(
Expand Down

0 comments on commit 6e87f76

Please sign in to comment.