Class AddressDivision
java.lang.Object
inet.ipaddr.format.AddressDivisionBase
inet.ipaddr.format.standard.AddressDivision
- All Implemented Interfaces:
AddressGenericDivision, AddressItem, AddressStringDivision, Serializable, Comparable<AddressItem>
- Direct Known Subclasses:
AddressBitsDivision, IPAddressDivision, MACAddressSegment
A division of an address.
- Author:
- sfoley
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classRepresents the result of a bitwise or of a sequential range of valuesstatic classRepresents the result of masking a sequential range of values -
Field Summary
Fields inherited from class AddressDivisionBase
EXTENDED_DIGITS -
Method Summary
Modifier and TypeMethodDescriptionbitwiseOrRange(long value, long upperValue, long maskValue) Applies bitwise or to a range of values.booleanTwo divisions are equal if they: - they match type/version (ipv4, ipv6, mac, or a specific division class) - match bit counts - match values Prefix lengths, for those divisions that have them, are ignored.intgetDigitCount(int radix) Returns the count of digits of the value, or if a range, the larger value in the rangeabstract longintgetMaxDigitCount(int radix) Returns the count of digits of the largest possible valuelongintReturns the smallest prefix length possible such that this item includes the block of all values for that prefix length.Returns a prefix length for which the range of this item matches the block of all values for that prefix length.abstract longReturns the highest value represented by this address item, the highest value included in the range of valuesgetValue()Returns the lowest value represented by this address item, the lowest value included in the range of valuesinthashCode()booleanhasUppercaseVariations(int radix, boolean lowerOnly) booleanReturns whether this item includes the maximum possible value for the address type or version within its rangebooleanReturns whether this item includes the value of zero within its rangebooleanisBitwiseOrCompatibleWithRange(int maskValue) Similar to masking, checks that the range resulting from the bitwise "or" operation is sequential.booleanisBoundedBy(int value) Returns true if the possible values of this division fall below the given value.booleanisMaskCompatibleWithRange(int maskValue) Check that the range resulting from the mask is contiguous, otherwise it cannot be represented by a division or segment instance.booleanisMax()Returns whether this item matches the maximum possible value for the address type or versionbooleanWhether this represents multiple potential values (eg a prefixed address or a segment representing a range of values)booleanisZero()Returns whether this item matches the value of zerostatic AddressDivision.MaskResultmaskRange(long value, long upperValue, long maskValue) Returns an object that provides the masked values for a range, which for subnets is an aggregation of all masked individual addresses in the subnet.booleanmatches(long value) booleanmatchesWithMask(long value, long mask) booleanmatchesWithMask(long lowerValue, long upperValue, long mask) returns whether masking with the given mask results in a valid contiguous range for this segment, and if it does, if it matches the range obtained when masking the given values with the same mask.Methods inherited from class AddressDivisionBase
getBytes, getBytes, getBytes, getDigitCount, getDigitCount, getLowerStandardString, getStandardString, getUpperBytes, getUpperBytes, getUpperBytes, toStringMethods inherited from interface AddressItem
compareTo, containsPrefixBlock, containsSinglePrefixBlock, getBitCount, getByteCount, getCount, getPrefixCount, isFullRange
-
Method Details
-
isMultiple
public boolean isMultiple()Description copied from interface:AddressItemWhether this represents multiple potential values (eg a prefixed address or a segment representing a range of values)- Returns:
- whether this segment represents multiple values
-
getMinPrefixLengthForBlock
public int getMinPrefixLengthForBlock()Description copied from interface:AddressItemReturns the smallest prefix length possible such that this item includes the block of all values for that prefix length.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, whileAddressItem.getPrefixLengthForSingleBlock()will return null.In cases where the final bit is constant so there is no such block, this returns the bit count.
- Returns:
- the prefix length
-
getPrefixLengthForSingleBlock
Description copied from interface:AddressItemReturns a prefix length for which the range of this item matches the block of all values for that prefix length.If the range can be dictated this way, then this method returns the same value as
AddressItem.getMinPrefixLengthForBlock().If no such prefix length exists, returns null.
If this item represents a single value, this returns the bit count.
- Returns:
- the prefix length or null
-
getMaxValue
public long getMaxValue() -
isZero
public boolean isZero()Description copied from interface:AddressItemReturns whether this item matches the value of zero- Returns:
- whether this item matches the value of zero
-
includesZero
public boolean includesZero()Description copied from interface:AddressItemReturns whether this item includes the value of zero within its range- Returns:
- whether this item includes the value of zero within its range
-
isMax
public boolean isMax()Description copied from interface:AddressItemReturns whether this item matches the maximum possible value for the address type or version- Returns:
- whether this item matches the maximum possible value
-
includesMax
public boolean includesMax()Description copied from interface:AddressItemReturns whether this item includes the maximum possible value for the address type or version within its range- Returns:
- whether this item includes the maximum possible value within its range
-
getDivisionValue
public abstract long getDivisionValue() -
getUpperDivisionValue
public abstract long getUpperDivisionValue() -
hashCode
public int hashCode()- Overrides:
hashCodein classAddressDivisionBase
-
getValue
Description copied from interface:AddressItemReturns the lowest value represented by this address item, the lowest value included in the range of values- Returns:
- the lowest value represented by this address item
-
getUpperValue
Description copied from interface:AddressItemReturns the highest value represented by this address item, the highest value included in the range of values- Returns:
- the highest value represented by this address item
-
isBoundedBy
public boolean isBoundedBy(int value) Returns true if the possible values of this division fall below the given value. -
matches
public boolean matches(long value) -
matchesWithMask
public boolean matchesWithMask(long value, long mask) -
matchesWithMask
public boolean matchesWithMask(long lowerValue, long upperValue, long mask) returns whether masking with the given mask results in a valid contiguous range for this segment, and if it does, if it matches the range obtained when masking the given values with the same mask.- Parameters:
lowerValue-upperValue-mask-- Returns:
-
equals
Description copied from class:AddressDivisionBaseTwo divisions are equal if they: - they match type/version (ipv4, ipv6, mac, or a specific division class) - match bit counts - match values Prefix lengths, for those divisions that have them, are ignored.- Overrides:
equalsin classAddressDivisionBase
-
isMaskCompatibleWithRange
public boolean isMaskCompatibleWithRange(int maskValue) Check that the range resulting from the mask is contiguous, otherwise it cannot be represented by a division or segment instance. For instance, for the range 0 to 3 (bits are 00 to 11), if we mask all 4 numbers from 0 to 3 with 2 (ie bits are 10), then we are left with 1 and 3. 2 is not included. So we cannot represent 1 and 3 as a contiguous range. The underlying rule is that mask bits that are 0 must be above the resulting range in each segment. Any bit in the mask that is 0 must not fall below any bit in the masked segment range that is different between low and high. Any network mask must eliminate the entire division range or keep the entire range. Any host mask is fine.- Parameters:
maskValue-- Returns:
-
maskRange
Returns an object that provides the masked values for a range, which for subnets is an aggregation of all masked individual addresses in the subnet. SeebitwiseOrRange(long, long, long)- Parameters:
value-upperValue-maskValue-- Returns:
- an instance that provides the result of masking the values. With individual addresses, the result is simply value & maskValue. But with subnets, returns an object providing lower and upper results along with whether the resulting set of values is sequential.
-
isBitwiseOrCompatibleWithRange
public boolean isBitwiseOrCompatibleWithRange(int maskValue) Similar to masking, checks that the range resulting from the bitwise "or" operation is sequential.- Parameters:
maskValue-- Returns:
-
bitwiseOrRange
public static AddressDivision.BitwiseOrResult bitwiseOrRange(long value, long upperValue, long maskValue) Applies bitwise or to a range of values. Returns an object that provides the ored values for a range, which for subnets is an aggregation of all ored individual addresses in the subnet. SeemaskRange(long, long, long)- Parameters:
maskValue-- Returns:
-
hasUppercaseVariations
public boolean hasUppercaseVariations(int radix, boolean lowerOnly) -
getDigitCount
public int getDigitCount(int radix) Description copied from interface:AddressStringDivisionReturns the count of digits of the value, or if a range, the larger value in the range- Parameters:
radix-- Returns:
-
getMaxDigitCount
public int getMaxDigitCount(int radix) Description copied from interface:AddressStringDivisionReturns the count of digits of the largest possible value- Parameters:
radix-- Returns:
-