public abstract class IPAddressSegment extends IPAddressDivision implements AddressSegment
AddressDivision.BitwiseOrResult, AddressDivision.MaskResult
Modifier and Type | Method and Description |
---|---|
AddressDivision.BitwiseOrResult |
bitwiseOrRange(int maskValue) |
static int |
getBitCount(IPAddress.IPVersion version) |
static int |
getByteCount(IPAddress.IPVersion version) |
static int |
getDefaultTextualRadix(IPAddress.IPVersion version) |
long |
getDivisionValue()
returns the lower value as a long, although for individual segments
getSegmentValue() provides the same value as an int |
long |
getDivisionValueCount() |
abstract IPAddress.IPVersion |
getIPVersion() |
abstract java.lang.Iterable<? extends IPAddressSegment> |
getIterable()
Useful for using an instance in a "for-each loop".
|
abstract IPAddressSegment |
getLower()
If this segment represents a range of values, returns a segment representing just the lowest value in the range, otherwise returns this.
|
static int |
getMaxSegmentValue(IPAddress.IPVersion version) |
long |
getMaxValue() |
int |
getMinPrefixLengthForBlock()
Returns the smallest prefix length possible such that this item includes the block of all values for that prefix length.
|
abstract IPAddressNetwork<?,?,?,?,?> |
getNetwork()
Returns the network object for components of the same version (eg IPv4, IPv6 and MAC each have their own network object)
|
int |
getPrefixValueCount()
Counts the number of prefixes in this address segment.
|
java.lang.Integer |
getSegmentPrefixLength() |
int |
getSegmentValue()
returns the lower value
|
abstract IPAddressSegment |
getUpper()
If this segment represents a range of values, returns a segment representing just the highest value in the range, otherwise returns this.
|
long |
getUpperDivisionValue()
returns the lower upper value as a long, although for individual segments
getUpperSegmentValue() provides the same value as an int |
int |
getUpperSegmentValue()
returns the upper value
|
int |
getValueCount() |
int |
hashCode() |
boolean |
includesMax()
Returns whether this item includes the maximum possible value for the address type or version within its range
|
boolean |
includesZero()
Returns whether this item includes the value of zero within its range
|
boolean |
isBoundedBy(int value)
Returns true if the possible values of this division fall below the given value.
|
boolean |
isIPv4() |
boolean |
isIPv6() |
boolean |
isMultiple()
Whether this represents multiple potential values (eg a prefixed address or a segment representing a range of values)
|
boolean |
isPrefixBlock()
Returns whether the division range includes the block of values for its prefix length
|
abstract java.util.Iterator<? extends IPAddressSegment> |
iterator()
Iterates through the individual elements of this address component.
|
AddressDivision.MaskResult |
maskRange(int maskValue) |
boolean |
matches(int value) |
boolean |
matchesWithMask(int value,
int mask) |
boolean |
matchesWithMask(int lowerValue,
int upperValue,
int mask) |
boolean |
matchesWithPrefixMask(int value,
java.lang.Integer segmentPrefixLength) |
abstract java.util.Iterator<? extends IPAddressSegment> |
prefixBlockIterator()
Iterates through the individual prefix blocks.
|
abstract java.util.Iterator<? extends IPAddressSegment> |
prefixBlockIterator(int prefixLength)
Iterates through the individual prefix blocks according to the given segment prefix length.
|
abstract AddressComponentSpliterator<? extends IPAddressSegment> |
prefixBlockSpliterator()
Partitions and traverses through the individual prefix blocks of this segment for its prefix length.
|
abstract AddressComponentSpliterator<? extends IPAddressSegment> |
prefixBlockSpliterator(int prefixLength)
Partitions and traverses through the individual prefix blocks for the given prefix length.
|
abstract java.util.stream.Stream<? extends IPAddressSegment> |
prefixBlockStream()
Returns a sequential stream of the individual prefix blocks of this segment.
|
abstract java.util.stream.Stream<? extends IPAddressSegment> |
prefixBlockStream(int prefixLength)
Returns a sequential stream of the individual prefix blocks for the given prefix length.
|
boolean |
prefixEquals(AddressSegment other,
int prefixLength) |
boolean |
prefixEquals(IPAddressSegment other) |
abstract java.util.Iterator<? extends IPAddressSegment> |
prefixIterator()
Iterates through the individual prefixes.
|
abstract AddressComponentSpliterator<? extends IPAddressSegment> |
prefixSpliterator()
Partitions and traverses through the individual prefixes of this segment for its prefix length.
|
abstract java.util.stream.Stream<? extends IPAddressSegment> |
prefixStream()
Returns a sequential stream of the individual prefixes of this segment.
|
abstract IPAddressSegment |
removePrefixLength() |
abstract IPAddressSegment |
removePrefixLength(boolean zeroed) |
abstract IPAddressSegment |
reverseBits(boolean perByte)
Returns a new AddressComponent with the bits reversed.
|
abstract IPAddressSegment |
reverseBytes()
Returns an AddressComponent with the bytes reversed.
|
abstract AddressComponentSpliterator<? extends IPAddressSegment> |
spliterator()
Partitions and traverses through the individual address components.
|
abstract java.util.stream.Stream<? extends IPAddressSegment> |
stream()
Returns a sequential stream of the individual address components.
|
java.lang.String |
toHexString(boolean with0xPrefix)
Writes this address component as a single hexadecimal value with always the exact same number of characters, with or without a preceding 0x prefix.
|
abstract IPAddressSegment |
toHostSegment(java.lang.Integer segmentPrefixLength)
used by getHostSection, see
IPAddressSegmentSeries.getHostSection(int) |
IPAddressSegment |
toNetworkSegment(java.lang.Integer segmentPrefixLength)
used by constructors of IPAddressSection, see
IPAddressSegmentSeries.getNetworkSection(int, boolean) |
abstract IPAddressSegment |
toNetworkSegment(java.lang.Integer segmentPrefixLength,
boolean withPrefixLength)
used by getNetworkSection and by constructors of IPAddressSection, see
IPAddressSegmentSeries.getNetworkSection(int, boolean) |
java.lang.String |
toNormalizedString()
Produces a string that is consistent for all address components of the same type and version,
and is also similar to the canonical string
AddressSegmentSeries.toCanonicalString() in AddressComponent instances that are also AddressSegmentSeries instances. |
java.lang.String |
toNormalizedString(IPAddressSection.IPStringOptions options) |
abstract IPAddressSegment |
withoutPrefixLength() |
containsPrefixBlock, containsSinglePrefixBlock, getBlockMaskPrefixLength, getDivisionPrefixLength, getLeadingBitCount, getPrefixAdjustedRangeString, getString, getTrailingBitCount, getWildcardString, isPrefixed, isSinglePrefixBlock, matchesWithPrefixMask
bitwiseOrRange, equals, getCount, getDigitCount, getDivisionPrefixCount, getMaxDigitCount, getPrefixCount, getPrefixLengthForSingleBlock, getUpperValue, getValue, hasUppercaseVariations, isBitwiseOrCompatibleWithRange, isMaskCompatibleWithRange, isMax, isZero, maskRange, matches, matchesWithMask, matchesWithMask
getBytes, getBytes, getBytes, getDigitCount, getLowerStandardString, getStandardString, getUpperBytes, getUpperBytes, getUpperBytes, toString
contains, equals, getMaxSegmentValue, isOneBit, testBit
stream, stream
compareTo, containsPrefixBlock, containsSinglePrefixBlock, getBitCount, getByteCount, getBytes, getBytes, getBytes, getCount, getPrefixCount, getPrefixLengthForSingleBlock, getUpperBytes, getUpperBytes, getUpperBytes, getUpperValue, getValue, isFullRange, isMax, isZero, testRange, testRange
getDigitCount, getLowerStandardString, getMaxDigitCount, getStandardString
isFullRange
getBitCount
public abstract IPAddressNetwork<?,?,?,?,?> getNetwork()
AddressComponent
getNetwork
in interface AddressComponent
public boolean isIPv4()
public boolean isIPv6()
public abstract IPAddress.IPVersion getIPVersion()
public int getMinPrefixLengthForBlock()
AddressItem
If the entire range can be dictated this way, then this method returns the same value as AddressItem.getPrefixLengthForSingleBlock()
.
Otherwise, this method will return the minimal possible prefix that can be paired with this address, while AddressItem.getPrefixLengthForSingleBlock()
will return null.
In cases where the final bit is constant so there is no such block, this returns the bit count.
getMinPrefixLengthForBlock
in interface AddressItem
getMinPrefixLengthForBlock
in class AddressDivision
public static int getMaxSegmentValue(IPAddress.IPVersion version)
public boolean isPrefixBlock()
IPAddressStringDivision
isPrefixBlock
in interface IPAddressStringDivision
isPrefixBlock
in class IPAddressDivision
public IPAddressSegment toNetworkSegment(java.lang.Integer segmentPrefixLength)
IPAddressSegmentSeries.getNetworkSection(int, boolean)
public abstract IPAddressSegment toNetworkSegment(java.lang.Integer segmentPrefixLength, boolean withPrefixLength)
IPAddressSegmentSeries.getNetworkSection(int, boolean)
public abstract IPAddressSegment toHostSegment(java.lang.Integer segmentPrefixLength)
IPAddressSegmentSeries.getHostSection(int)
public AddressDivision.MaskResult maskRange(int maskValue)
public AddressDivision.BitwiseOrResult bitwiseOrRange(int maskValue)
public abstract IPAddressSegment getLower()
getLower
in interface AddressComponent
getLower
in interface AddressSegment
getLower
in interface AddressComponentRange
public abstract IPAddressSegment getUpper()
getUpper
in interface AddressComponent
getUpper
in interface AddressSegment
getUpper
in interface AddressComponentRange
public abstract java.lang.Iterable<? extends IPAddressSegment> getIterable()
AddressComponentRange
AddressComponentRange.iterator()
directly.getIterable
in interface AddressComponent
getIterable
in interface AddressSegment
getIterable
in interface AddressComponentRange
public abstract java.util.Iterator<? extends IPAddressSegment> iterator()
AddressComponent
An address component can represent a single segment, address, or section, or it can represent multiple, typically a subnet of addresses or a range of segment or section values.
Call AddressItem.isMultiple()
to determine if this instance represents multiple.
iterator
in interface AddressComponent
iterator
in interface AddressSegment
iterator
in interface AddressComponentRange
public abstract AddressComponentSpliterator<? extends IPAddressSegment> spliterator()
AddressComponentRange
spliterator
in interface AddressComponent
spliterator
in interface AddressSegment
spliterator
in interface AddressComponentRange
public abstract java.util.stream.Stream<? extends IPAddressSegment> stream()
AddressComponentRange
BaseStream.parallel()
on the returned stream.stream
in interface AddressComponent
stream
in interface AddressSegment
stream
in interface AddressComponentRange
public abstract java.util.Iterator<? extends IPAddressSegment> prefixBlockIterator()
If the series has no prefix length, then this is equivalent to iterator()
public abstract AddressComponentSpliterator<? extends IPAddressSegment> prefixBlockSpliterator()
public abstract java.util.stream.Stream<? extends IPAddressSegment> prefixBlockStream()
BaseStream.parallel()
on the returned stream.public abstract java.util.Iterator<? extends IPAddressSegment> prefixIterator()
If the series has no prefix length, then this is equivalent to iterator()
public abstract AddressComponentSpliterator<? extends IPAddressSegment> prefixSpliterator()
public abstract java.util.stream.Stream<? extends IPAddressSegment> prefixStream()
BaseStream.parallel()
on the returned stream.public abstract java.util.Iterator<? extends IPAddressSegment> prefixBlockIterator(int prefixLength)
public abstract AddressComponentSpliterator<? extends IPAddressSegment> prefixBlockSpliterator(int prefixLength)
public abstract java.util.stream.Stream<? extends IPAddressSegment> prefixBlockStream(int prefixLength)
BaseStream.parallel()
on the returned stream.public static int getBitCount(IPAddress.IPVersion version)
public static int getByteCount(IPAddress.IPVersion version)
public static int getDefaultTextualRadix(IPAddress.IPVersion version)
public boolean matches(int value)
matches
in interface AddressSegment
public boolean matchesWithPrefixMask(int value, java.lang.Integer segmentPrefixLength)
public boolean matchesWithMask(int value, int mask)
matchesWithMask
in interface AddressSegment
public boolean matchesWithMask(int lowerValue, int upperValue, int mask)
matchesWithMask
in interface AddressSegment
public int getValueCount()
getValueCount
in interface AddressSegment
AddressItem.getCount()
as an integerpublic int getPrefixValueCount()
If this segment has no prefix length, this is equivalent to getValueCount()
public long getDivisionValueCount()
getDivisionValueCount
in class AddressDivision
public long getMaxValue()
getMaxValue
in class AddressDivision
public boolean isMultiple()
AddressItem
isMultiple
in interface AddressItem
isMultiple
in class AddressDivision
public int getSegmentValue()
getSegmentValue
in interface AddressSegment
public int getUpperSegmentValue()
getUpperSegmentValue
in interface AddressSegment
public long getDivisionValue()
getSegmentValue()
provides the same value as an intgetDivisionValue
in class AddressDivision
public long getUpperDivisionValue()
getUpperSegmentValue()
provides the same value as an intgetUpperDivisionValue
in class AddressDivision
public abstract IPAddressSegment reverseBits(boolean perByte)
AddressComponent
IncompatibleAddressException
. In a range the most significant bits stay constant
while the least significant bits range over different values, so reversing that scenario results in a series of non-consecutive values, in most cases,
which cannot be represented with a single AddressComponent object.
In such cases where isMultiple() is true, call iterator(), getLower(), getUpper() or some other methods to break the series down into a series representing a single value.
reverseBits
in interface AddressComponent
reverseBits
in interface AddressSegment
perByte
- if true, only the bits in each byte are reversed, if false, then all bits in the component are reversedpublic abstract IPAddressSegment reverseBytes()
AddressComponent
IncompatibleAddressException
. In a range the most significant bits stay constant
while the least significant bits range over different values, so reversing that scenario results in a series of non-consecutive values, in most cases,
which cannot be represented with a single AddressComponent object.
In such cases where isMultiple() is true, call iterator(), getLower(), getUpper() or some other methods to break the series down into a series representing a single value.
reverseBytes
in interface AddressComponent
reverseBytes
in interface AddressSegment
public abstract IPAddressSegment removePrefixLength()
public abstract IPAddressSegment removePrefixLength(boolean zeroed)
public abstract IPAddressSegment withoutPrefixLength()
public boolean isBoundedBy(int value)
AddressDivision
isBoundedBy
in interface AddressStringDivision
isBoundedBy
in class AddressDivision
public java.lang.Integer getSegmentPrefixLength()
public int hashCode()
hashCode
in class AddressDivision
public boolean prefixEquals(IPAddressSegment other)
public boolean prefixEquals(AddressSegment other, int prefixLength)
prefixEquals
in interface AddressSegment
public boolean includesZero()
AddressItem
includesZero
in interface AddressItem
includesZero
in class AddressDivision
public boolean includesMax()
AddressItem
includesMax
in interface AddressItem
includesMax
in class AddressDivision
public java.lang.String toHexString(boolean with0xPrefix)
AddressComponent
If this component represents a range of values outside of the network prefix length, then this is printed as a range of two hex values.
For instance, for IPv4 addresses there are 8 hex characters, for IPv6 addresses there are 32 hex characters.
toHexString
in interface AddressComponent
public java.lang.String toNormalizedString()
AddressComponent
AddressSegmentSeries.toCanonicalString()
in AddressComponent
instances that are also AddressSegmentSeries
instances.toNormalizedString
in interface AddressComponent
public java.lang.String toNormalizedString(IPAddressSection.IPStringOptions options)