![JAR search and dependency download from the Maven repository](/logo.png)
inet.ipaddr.ipv4.IPv4AddressTrie Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ipaddress Show documentation
Show all versions of ipaddress Show documentation
Library for handling IP addresses, both IPv4 and IPv6
/*
* Copyright 2020 Sean C Foley
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* or at
* https://github.com/seancfoley/IPAddress/blob/master/LICENSE
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package inet.ipaddr.ipv4;
import java.util.Iterator;
import java.util.Spliterator;
import inet.ipaddr.IPAddressString;
import inet.ipaddr.format.util.AddedTree;
import inet.ipaddr.format.util.AddressTrie;
import inet.ipaddr.format.util.BinaryTreeNode;
import inet.ipaddr.format.util.BinaryTreeNode.CachingIterator;
/**
* An IPv4 address trie.
*
* See {@link AddressTrie} for more details.
*
* @author scfoley
*
*/
public class IPv4AddressTrie extends AddressTrie {
private static final long serialVersionUID = 1L;
static final IPv4Address INIT_ROOT = new IPAddressString("0.0.0.0/0").getAddress().toIPv4();
public IPv4AddressTrie() {
super(new IPv4TrieNode());
}
protected IPv4AddressTrie(AddressBounds bounds) {
super(new IPv4TrieNode(), bounds);
}
protected IPv4AddressTrie(IPv4TrieNode root, AddressBounds bounds) {
super(root, bounds);
}
@Override
protected IPv4TrieNode absoluteRoot() {
return (IPv4TrieNode) super.absoluteRoot();
}
@Override
protected IPv4AddressTrie createNew(AddressBounds bounds) {
return new IPv4AddressTrie(bounds);
}
@Override
protected IPv4AddressTrie createSubTrie(AddressBounds bounds) {
return new IPv4AddressTrie(absoluteRoot(), bounds);
}
@Override
public IPv4TrieNode getRoot() {
return (IPv4TrieNode) super.getRoot();
}
public static class IPv4TrieNode extends TrieNode {
private static final long serialVersionUID = 1L;
protected IPv4TrieNode(IPv4Address addr) {
super(addr);
}
public IPv4TrieNode() {
super(INIT_ROOT);
} // root node
@Override
protected void replaceThisRoot(BinaryTreeNode replacement) {
super.replaceThisRoot(replacement);
if(!FREEZE_ROOT && replacement == null) {
setKey(INIT_ROOT);
}
}
@Override
public IPv4TrieNode getUpperSubNode() {
return (IPv4TrieNode) super.getUpperSubNode();
}
@Override
public IPv4TrieNode getLowerSubNode() {
return (IPv4TrieNode) super.getLowerSubNode();
}
@Override
public IPv4TrieNode getParent() {
return (IPv4TrieNode) super.getParent();
}
@Override
protected IPv4TrieNode createNewImpl(IPv4Address addr) {
return new IPv4TrieNode(addr);
}
@Override
public IPv4TrieNode removeElementsContainedBy(IPv4Address addr) {
return (IPv4TrieNode) super.removeElementsContainedBy(addr);
}
@Override
public IPv4TrieNode elementsContainedBy(IPv4Address addr) {
return (IPv4TrieNode) super.elementsContainedBy(addr);
}
@Override
public IPv4TrieNode elementsContaining(IPv4Address addr) {
return (IPv4TrieNode) super.elementsContaining(addr);
}
@Override
public IPv4TrieNode longestPrefixMatchNode(IPv4Address addr) {
return (IPv4TrieNode) super.longestPrefixMatchNode(addr);
}
@Override
public IPv4TrieNode getAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.getAddedNode(addr);
}
@Override
public IPv4TrieNode getNode(IPv4Address addr) {
return (IPv4TrieNode) super.getNode(addr);
}
@SuppressWarnings("unchecked")
@Override
public Iterator nodeIterator(boolean forward) {
return (Iterator) super.nodeIterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Iterator allNodeIterator(boolean forward) {
return (Iterator) super.allNodeIterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Iterator blockSizeNodeIterator(boolean lowerSubNodeFirst) {
return (Iterator) super.blockSizeNodeIterator(lowerSubNodeFirst);
}
@SuppressWarnings("unchecked")
@Override
public Iterator blockSizeAllNodeIterator(boolean lowerSubNodeFirst) {
return (Iterator) super.blockSizeAllNodeIterator(lowerSubNodeFirst);
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator blockSizeCachingAllNodeIterator() {
return (CachingIterator) super.blockSizeCachingAllNodeIterator();
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator) super.containingFirstIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator containingFirstAllNodeIterator(boolean forwardSubNodeOrder) {
return (CachingIterator) super.containingFirstAllNodeIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Iterator containedFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator) super.containedFirstIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Iterator containedFirstAllNodeIterator(boolean forwardSubNodeOrder) {
return (Iterator) super.containedFirstAllNodeIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Spliterator nodeSpliterator(boolean forward) {
return (Spliterator) super.nodeSpliterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Spliterator allNodeSpliterator(boolean forward) {
return (Spliterator) super.allNodeSpliterator(forward);
}
@Override
public IPv4TrieNode previousAddedNode() {
return (IPv4TrieNode) super.previousAddedNode();
}
@Override
public IPv4TrieNode nextAddedNode() {
return (IPv4TrieNode) super.nextAddedNode();
}
@Override
public IPv4TrieNode nextNode() {
return (IPv4TrieNode) super.nextNode();
}
@Override
public IPv4TrieNode previousNode() {
return (IPv4TrieNode) super.previousNode();
}
@Override
public IPv4TrieNode lowerAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.lowerAddedNode(addr);
}
@Override
public IPv4TrieNode floorAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.floorAddedNode(addr);
}
@Override
public IPv4TrieNode higherAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.higherAddedNode(addr);
}
@Override
public IPv4TrieNode ceilingAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.ceilingAddedNode(addr);
}
@Override
public IPv4TrieNode firstNode() {
return (IPv4TrieNode) super.firstNode();
}
@Override
public IPv4TrieNode lastNode() {
return (IPv4TrieNode) super.lastNode();
}
@Override
protected IPv4AddressTrie createNewTree() {
return new IPv4AddressTrie();
}
@Override
public IPv4AddressTrie asNewTrie() {
return (IPv4AddressTrie) super.asNewTrie();
}
@Override
public IPv4TrieNode cloneTree() {
return (IPv4TrieNode) super.cloneTree();
}
@Override
public IPv4TrieNode clone() {
return (IPv4TrieNode) super.clone();
}
@Override
public boolean equals(Object o) {
return o instanceof IPv4TrieNode && super.equals(o);
}
static class IPv4TrieKeyData extends TrieKeyData {
int uint32Val, mask32Val, nextBitMask32Val;
@Override
public boolean is32Bits() {
return true;
}
@Override
public int getUint32Val() {
return uint32Val;
}
@Override
public int getMask32Val() {
return mask32Val;
}
@Override
public int getNextBitMask32Val() {
return nextBitMask32Val;
}
}
@Override
protected TrieKeyData getTrieKeyCache(IPv4Address addr) {
return addr.getTrieKeyCache();
}
}
@Override
public IPv4TrieNode removeElementsContainedBy(IPv4Address addr) {
return (IPv4TrieNode) super.removeElementsContainedBy(addr);
}
@Override
public IPv4TrieNode elementsContainedBy(IPv4Address addr) {
return (IPv4TrieNode) super.elementsContainedBy(addr);
}
@Override
public IPv4TrieNode elementsContaining(IPv4Address addr) {
return (IPv4TrieNode) super.elementsContaining(addr);
}
@Override
public IPv4TrieNode longestPrefixMatchNode(IPv4Address addr) {
return (IPv4TrieNode) super.longestPrefixMatchNode(addr);
}
@Override
public IPv4TrieNode getAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.getAddedNode(addr);
}
@Override
public IPv4TrieNode getNode(IPv4Address addr) {
return (IPv4TrieNode) super.getNode(addr);
}
@Override
public IPv4TrieNode addNode(IPv4Address addr) {
return (IPv4TrieNode) super.addNode(addr);
}
@Override
public IPv4TrieNode addTrie(TrieNode trie) {
return (IPv4TrieNode) super.addTrie(trie);
}
@SuppressWarnings("unchecked")
@Override
public Iterator nodeIterator(boolean forward) {
return (Iterator) super.nodeIterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Iterator allNodeIterator(boolean forward) {
return (Iterator) super.allNodeIterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Iterator blockSizeNodeIterator(boolean lowerSubNodeFirst) {
return (Iterator) super.blockSizeNodeIterator(lowerSubNodeFirst);
}
@SuppressWarnings("unchecked")
@Override
public Iterator blockSizeAllNodeIterator(boolean lowerSubNodeFirst) {
return (Iterator) super.blockSizeAllNodeIterator(lowerSubNodeFirst);
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator blockSizeCachingAllNodeIterator() {
return (CachingIterator) super.blockSizeCachingAllNodeIterator();
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator containingFirstIterator(boolean forwardSubNodeOrder) {
return (CachingIterator) super.containingFirstIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public CachingIterator containingFirstAllNodeIterator(boolean forwardSubNodeOrder) {
return (CachingIterator) super.containingFirstAllNodeIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Iterator containedFirstIterator(boolean forwardSubNodeOrder) {
return (Iterator) super.containedFirstIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Iterator containedFirstAllNodeIterator(boolean forwardSubNodeOrder) {
return (Iterator) super.containedFirstAllNodeIterator(forwardSubNodeOrder);
}
@SuppressWarnings("unchecked")
@Override
public Spliterator nodeSpliterator(boolean forward) {
return (Spliterator) super.nodeSpliterator(forward);
}
@SuppressWarnings("unchecked")
@Override
public Spliterator allNodeSpliterator(boolean forward) {
return (Spliterator) super.allNodeSpliterator(forward);
}
@Override
public IPv4TrieNode lowerAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.lowerAddedNode(addr);
}
@Override
public IPv4TrieNode floorAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.floorAddedNode(addr);
}
@Override
public IPv4TrieNode higherAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.higherAddedNode(addr);
}
@Override
public IPv4TrieNode ceilingAddedNode(IPv4Address addr) {
return (IPv4TrieNode) super.ceilingAddedNode(addr);
}
@Override
public IPv4TrieNode firstNode() {
return (IPv4TrieNode) super.firstNode();
}
@Override
public IPv4TrieNode lastNode() {
return (IPv4TrieNode) super.lastNode();
}
@Override
public IPv4AddressTrie clone() {
return (IPv4AddressTrie) super.clone();
}
@Override
public boolean equals(Object o) {
return o instanceof IPv4AddressTrie && super.equals(o);
}
@Override
public AddedTree constructAddedNodesTree() {
IPv4AddressAssociativeTrie> trie = new IPv4AddressAssociativeTrie>();
contructAddedTree(trie);
return new AddedTree(trie);
}
@Override
public String toAddedNodesTreeString() {
IPv4AddressAssociativeTrie> trie = new IPv4AddressAssociativeTrie>();
contructAddedTree(trie);
return toAddedNodesTreeString(trie);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy