Top Description Inners Fields Constructors Methods
io.smallrye.common.version

public abstract Class AbstractVersionIterator

extends Object
implements VersionIterator
Class Inheritance
All Implemented Interfaces
io.smallrye.common.version.VersionIterator
Known Direct Subclasses
io.smallrye.common.version.BasicVersionIterator, io.smallrye.common.version.JpmsVersionIterator, io.smallrye.common.version.MavenVersionIterator
Static Imports
io.smallrye.common.version.Messages.msg

A version scheme iterator base class that provides useful utilities and mechanisms. The iterator does not support version strings which are greater than 4095 characters in length.

Nested and Inner Type Summary

Modifier and TypeClass and Description
protected static enum
AbstractVersionIterator.TokenType

The current state of iteration.

Field Summary

Modifier and TypeField and Description
pack-priv long
protected final String
string

The version string being iterated.

Constructor Summary

AccessConstructor and Description
protected
AbstractVersionIterator(final String
the version string (must not be null)
string
)

Construct a new instance.

Method Summary

Modifier and TypeMethod and Description
public StringBuilder
appendAlphaPartTo(final StringBuilder
the StringBuilder to append
target
)

Implements io.smallrye.common.version.VersionIterator.appendAlphaPartTo.

Append the current alphabetical part to the given string builder.

public StringBuilder
appendNumberPartTo(final StringBuilder
the StringBuilder to append
target
)

Implements io.smallrye.common.version.VersionIterator.appendNumberPartTo.

Get the current numeric part, appending it to the given builder.

public StringBuilder
appendPartTo(final StringBuilder
the string builder (must not be null)
target
)

Implements io.smallrye.common.version.VersionIterator.appendPartTo.

Append this version part to the given string builder.

protected void
changeType(AbstractVersionIterator.TokenType
the new type (must not be null)
newType
)

Change the current token type.

public int
compareAlphaPart(final String
the string to compare against (must not be null)
str
,
final int
the offset into the string to compare
offs
,
final int
the length to compare
len
,
final boolean
true to perform a case-insensitive comparison, or false to perform a case-sensitive comparison
ignoreCase
)

Implements io.smallrye.common.version.VersionIterator.compareAlphaPart.

Compare two alphabetical parts lexicographically.

public int
compareAlphaPart(final VersionIterator
the other iterator (must not be null)
other
,
final boolean
a boolean to ignore case in the compare
ignoreCase
)

Implements io.smallrye.common.version.VersionIterator.compareAlphaPart.

Compare two alphabetical parts lexicographically.

public int
compareNumberPart(final int
the number to compare against
value
)

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison).

public int
compareNumberPart(final long
the number to compare against
value
)

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison).

public int
compareNumberPart(final String
the number to compare against
value
,
int
the offset into the string to compare
offs
,
int
the length to compare
len
)

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison).

public int
compareNumberPart(final VersionIterator
the other iterator (must not be null)
other
)

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison).

pack-priv static int
cookieToEndIndex(long cookie)

pack-priv static int
cookieToExtraBits(long cookie)

pack-priv static int
cookieToStartIndex(long cookie)

pack-priv static AbstractVersionIterator.TokenType
cookieType(long cookie)

protected AbstractVersionIterator.TokenType

Returns:

the iteration state
currentType
()

Get the current iteration token type.

public String
getAlphaPart()

Implements io.smallrye.common.version.VersionIterator.getAlphaPart.

Get the current alphabetical part.

protected int

Returns:

the index into the version string
getEndIndex
()

Get the end index (exclusive) of the current token.

protected int

Returns:

the extra bits
getExtraBits
()

Get the extra implementation-specific state bits.

public int
getNumberPartAsInt()

Implements io.smallrye.common.version.VersionIterator.getNumberPartAsInt.

Get the current numeric part, as an int.

public long
getNumberPartAsLong()

Implements io.smallrye.common.version.VersionIterator.getNumberPartAsLong.

Get the current numeric part, as a long.

public String
getNumberPartAsString()

Overrides default io.smallrye.common.version.VersionIterator.getNumberPartAsString.

Get the current numeric part, as a String.

public int
getSeparatorCodePoint()

Implements io.smallrye.common.version.VersionIterator.getSeparatorCodePoint.

Get the code point of the current separator.

protected int

Returns:

the index into the version string
getStartIndex
()

Get the start index of the current token.

public boolean

Returns:

true if there are more characters after the current token, false otherwise
hasNext
()

Implements io.smallrye.common.version.VersionIterator.hasNext.

A basic implementation of VersionIterator#hasNext() which returns true if there are more characters after the current token.

protected void
insertEmptyAlpha()

Insert an empty part into the current position.

protected void
insertEmptyNumber()

Insert an empty (zero) number into the current position.

protected void
insertEmptySeparator()

Insert an empty separator into the current position.

protected boolean

Returns:

true if the code point is a valid letter, or false otherwise
isAlphaCodePoint
(int
the code point to test
cp
)

Determine whether the given code point is a valid alpha code point according to the current scheme.

public boolean
isAlphaPart()

Implements io.smallrye.common.version.VersionIterator.isAlphaPart.

Determine if the current token is an alphabetical part.

public boolean
isEmptySeparator()

Implements io.smallrye.common.version.VersionIterator.isEmptySeparator.

Determine if the current token is an empty (or zero-length alphabetical-to-numeric or numeric-to-alphabetical) separator.

public boolean
isNonEmptySeparator()

Implements io.smallrye.common.version.VersionIterator.isNonEmptySeparator.

Determine if the current token is a non-empty separator.

public boolean
isNumberPart()

Implements io.smallrye.common.version.VersionIterator.isNumberPart.

Determine if the current token is a numeric part.

public boolean
isPart()

Overrides default io.smallrye.common.version.VersionIterator.isPart.

Determine if the current token is some kind of part (alphabetical or numeric).

public boolean
isSeparator()

Overrides default io.smallrye.common.version.VersionIterator.isSeparator.

Determine if the current token is some kind of separator (a character or a zero-length alphabetical-to-numeric or numeric-to-alphabetical transition).

protected boolean

Returns:

true if the code point is a separator, or false otherwise
isSeparatorCodePoint
(int
the code point to test
cp
)

Determine whether the given code point is a valid separator according to the current scheme.

public int
length()

Implements io.smallrye.common.version.VersionIterator.length.

Get the length of the current token.

pack-priv static long
makeCookie(final long start, final long end, final AbstractVersionIterator.TokenType state, final long extraBits)

protected long

Returns:

the current iteration cookie
mark
()

Mark the current iteration position and state.

public void
next()

Implements io.smallrye.common.version.VersionIterator.next.

A basic implementation of VersionIterator#next() which uses the methods on this class to establish the next iteration token.

protected int

Returns:

the numerical value of the given code point, or -1 if the code point is not a valid numerical digit for this version scheme
numericCodePointValue
(int
the code point to test
cp
)

Determine whether the given code point is a valid numeric code point according to the current scheme, and if so, what the digit's numerical value is.

protected void
reset(long
the mark to restore to
mark
)

Restore the iteration position to a previous mark() state.

protected void
setCurrentToken(AbstractVersionIterator.TokenType
the token type (must not be null)
tokenType
,
int
the start index
startIndex
,
int
the end index
endIndex
,
int
extra implementation-specific state bits
extraBits
)

Set the current token.

private boolean
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

stringback to summary
protected final String string

The version string being iterated.

Constructor Detail

AbstractVersionIteratorback to summary
protected AbstractVersionIterator(final String string)

Construct a new instance.

Parameters
string:String

the version string (must not be null)

Method Detail

appendAlphaPartToback to summary
public StringBuilder appendAlphaPartTo(final StringBuilder target) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.appendAlphaPartTo.

Doc from io.smallrye.common.version.VersionIterator.appendAlphaPartTo.

Append the current alphabetical part to the given string builder. If the iterator is not positioned on an alphabetical part (i.e. isAlphaPart() returns false), then an exception is thrown.

Parameters
target:StringBuilder

the StringBuilder to append

Returns:StringBuilder

the current alphabetical part

Exceptions
IllegalStateException:
if the current token is not an alphabetical part
appendNumberPartToback to summary
public StringBuilder appendNumberPartTo(final StringBuilder target) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.appendNumberPartTo.

Doc from io.smallrye.common.version.VersionIterator.appendNumberPartTo.

Get the current numeric part, appending it to the given builder. If the iterator is not positioned on a numeric part (i.e. isNumberPart() returns false), then an exception is thrown. Any redundant leading zeros are removed.

Parameters
target:StringBuilder

the StringBuilder to append

Returns:StringBuilder

the current numeric part as a String

Exceptions
IllegalStateException:
if the current token is not a numeric part
appendPartToback to summary
public StringBuilder appendPartTo(final StringBuilder target)

Implements io.smallrye.common.version.VersionIterator.appendPartTo.

Doc from io.smallrye.common.version.VersionIterator.appendPartTo.

Append this version part to the given string builder. This is used to produce a canonical representation of an input string.

Parameters
target:StringBuilder

the string builder (must not be null)

Returns:StringBuilder

the same string builder (not null)

changeTypeback to summary
protected void changeType(AbstractVersionIterator.TokenType newType)

Change the current token type.

Parameters
newType:AbstractVersionIterator.TokenType

the new type (must not be null)

compareAlphaPartback to summary
public int compareAlphaPart(final String str, final int offs, final int len, final boolean ignoreCase) throws IllegalStateException, StringIndexOutOfBoundsException

Implements io.smallrye.common.version.VersionIterator.compareAlphaPart.

Doc from io.smallrye.common.version.VersionIterator.compareAlphaPart.

Compare two alphabetical parts lexicographically. This iterator must be positioned at an alphabetical part or an exception is thrown.

Parameters
str:String

the string to compare against (must not be null)

offs:int

the offset into the string to compare

len:int

the length to compare

ignoreCase:boolean

true to perform a case-insensitive comparison, or false to perform a case-sensitive comparison

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the given string

Exceptions
IllegalStateException:
if this iterator is not positioned on an alphabetical part
StringIndexOutOfBoundsException:
if the given offset or length fall outside of the string
compareAlphaPartback to summary
public int compareAlphaPart(final VersionIterator other, final boolean ignoreCase) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.compareAlphaPart.

Doc from io.smallrye.common.version.VersionIterator.compareAlphaPart.

Compare two alphabetical parts lexicographically. Both this and the other iterator must be positioned at alphabetical parts or an exception is thrown.

Parameters
other:VersionIterator

the other iterator (must not be null)

ignoreCase:boolean

a boolean to ignore case in the compare

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the other iterator's part

Exceptions
IllegalStateException:
if this or the other iterator are not positioned on an alphabetical part
compareNumberPartback to summary
public int compareNumberPart(final int value) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Doc from io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison). This iterator must be positioned at a numerical part or an exception is thrown.

Parameters
value:int

the number to compare against

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the given value

Exceptions
IllegalStateException:
if this iterator is not positioned on a numeric part
compareNumberPartback to summary
public int compareNumberPart(final long value) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Doc from io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison). This iterator must be positioned at a numerical part or an exception is thrown.

Parameters
value:long

the number to compare against

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the given value

Exceptions
IllegalStateException:
if this iterator is not positioned on a numeric part
compareNumberPartback to summary
public int compareNumberPart(final String value, int offs, int len) throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Doc from io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison). This iterator must be positioned at a numerical part or an exception is thrown. The given string must be numeric according to the rules of this iterator or an exception is thrown.

Parameters
value:String

the number to compare against

offs:int

the offset into the string to compare

len:int

the length to compare

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the given value

Exceptions
IllegalStateException:
if this iterator is not positioned on a numeric part
compareNumberPartback to summary
public int compareNumberPart(final VersionIterator other)

Implements io.smallrye.common.version.VersionIterator.compareNumberPart.

Doc from io.smallrye.common.version.VersionIterator.compareNumberPart.

Compare two numerical parts (using an unsigned comparison). Both iterators must be positioned at a numerical part or an exception is thrown.

Parameters
other:VersionIterator

the other iterator (must not be null)

Returns:int

-1, 0, or 1 if this segment is less than, equal to, or greater than the other iterator's part

cookieToEndIndexback to summary
pack-priv static int cookieToEndIndex(long cookie)
cookieToExtraBitsback to summary
pack-priv static int cookieToExtraBits(long cookie)
cookieToStartIndexback to summary
pack-priv static int cookieToStartIndex(long cookie)
cookieTypeback to summary
pack-priv static AbstractVersionIterator.TokenType cookieType(long cookie)
currentTypeback to summary
protected AbstractVersionIterator.TokenType currentType()

Get the current iteration token type.

Returns:AbstractVersionIterator.TokenType

the iteration state

getAlphaPartback to summary
public String getAlphaPart() throws IllegalStateException

Implements io.smallrye.common.version.VersionIterator.getAlphaPart.

Doc from io.smallrye.common.version.VersionIterator.getAlphaPart.

Get the current alphabetical part. If the iterator is not positioned on an alphabetical part (i.e. isAlphaPart() returns false), then an exception is thrown.

Returns:String

the current alphabetical part

Exceptions
IllegalStateException:
if the current token is not an alphabetical part
getEndIndexback to summary
protected int getEndIndex()

Get the end index (exclusive) of the current token. The length

Returns:int

the index into the version string

getExtraBitsback to summary
protected int getExtraBits()

Get the extra implementation-specific state bits.

Returns:int

the extra bits

getNumberPartAsIntback to summary
public int getNumberPartAsInt()

Implements io.smallrye.common.version.VersionIterator.getNumberPartAsInt.

Doc from io.smallrye.common.version.VersionIterator.getNumberPartAsInt.

Get the current numeric part, as an int. If the iterator is not positioned on a numeric part (i.e. isNumberPart() returns false), then an exception is thrown. If the value overflows the maximum value for an int, then only the low-order 32 bits of the version number value are returned.

Returns:int

the current numeric part as an int

getNumberPartAsLongback to summary
public long getNumberPartAsLong()

Implements io.smallrye.common.version.VersionIterator.getNumberPartAsLong.

Doc from io.smallrye.common.version.VersionIterator.getNumberPartAsLong.

Get the current numeric part, as a long. If the iterator is not positioned on a numeric part (i.e. isNumberPart() returns false), then an exception is thrown. If the value overflows the maximum value for a long, then only the low-order 64 bits of the version number value are returned.

Returns:long

the current numeric part as a long

getNumberPartAsStringback to summary
public String getNumberPartAsString() throws IllegalStateException

Overrides default io.smallrye.common.version.VersionIterator.getNumberPartAsString.

Doc from io.smallrye.common.version.VersionIterator.getNumberPartAsString.

Get the current numeric part, as a String. If the iterator is not positioned on a numeric part (i.e. isNumberPart() returns false), then an exception is thrown. Any redundant leading zeros are removed.

Returns:String

the current numeric part as a String

Exceptions
IllegalStateException:
if the current token is not a numeric part
getSeparatorCodePointback to summary
public int getSeparatorCodePoint()

Implements io.smallrye.common.version.VersionIterator.getSeparatorCodePoint.

Doc from io.smallrye.common.version.VersionIterator.getSeparatorCodePoint.

Get the code point of the current separator. If the iterator is not positioned on a non-empty separator (i.e. isNonEmptySeparator() returns false), then an exception is thrown.

Returns:int

the code point of the current separator

getStartIndexback to summary
protected int getStartIndex()

Get the start index of the current token.

Returns:int

the index into the version string

hasNextback to summary
public boolean hasNext()

Implements io.smallrye.common.version.VersionIterator.hasNext.

A basic implementation of VersionIterator#hasNext() which returns true if there are more characters after the current token. Subclasses should generally override this basic behavior but may delegate to this implementation for convenience.

Returns:boolean

true if there are more characters after the current token, false otherwise

insertEmptyAlphaback to summary
protected void insertEmptyAlpha()

Insert an empty part into the current position.

insertEmptyNumberback to summary
protected void insertEmptyNumber()

Insert an empty (zero) number into the current position.

insertEmptySeparatorback to summary
protected void insertEmptySeparator()

Insert an empty separator into the current position.

isAlphaCodePointback to summary
protected boolean isAlphaCodePoint(int cp)

Determine whether the given code point is a valid alpha code point according to the current scheme. This basic implementation returns true for any character whose general category is in the set recognized by Character#isLetter(int). Subclasses may override this method to recognize a different set of alpha code points.

Parameters
cp:int

the code point to test

Returns:boolean

true if the code point is a valid letter, or false otherwise

isAlphaPartback to summary
public boolean isAlphaPart()

Implements io.smallrye.common.version.VersionIterator.isAlphaPart.

Doc from io.smallrye.common.version.VersionIterator.isAlphaPart.

Determine if the current token is an alphabetical part.

Returns:boolean

true if the token is an alphabetical part, false otherwise

isEmptySeparatorback to summary
public boolean isEmptySeparator()

Implements io.smallrye.common.version.VersionIterator.isEmptySeparator.

Doc from io.smallrye.common.version.VersionIterator.isEmptySeparator.

Determine if the current token is an empty (or zero-length alphabetical-to-numeric or numeric-to-alphabetical) separator. Note that some version schemes do not have empty separators.

Returns:boolean

true if the token is an empty separator, false otherwise

isNonEmptySeparatorback to summary
public boolean isNonEmptySeparator()

Implements io.smallrye.common.version.VersionIterator.isNonEmptySeparator.

Doc from io.smallrye.common.version.VersionIterator.isNonEmptySeparator.

Determine if the current token is a non-empty separator.

Returns:boolean

true if the token is a non-empty separator, false otherwise

isNumberPartback to summary
public boolean isNumberPart()

Implements io.smallrye.common.version.VersionIterator.isNumberPart.

Doc from io.smallrye.common.version.VersionIterator.isNumberPart.

Determine if the current token is a numeric part.

Returns:boolean

true if the token is a numeric part, false otherwise

isPartback to summary
public boolean isPart()

Overrides default io.smallrye.common.version.VersionIterator.isPart.

Doc from io.smallrye.common.version.VersionIterator.isPart.

Determine if the current token is some kind of part (alphabetical or numeric).

Returns:boolean

true if the token is a part, false otherwise

isSeparatorback to summary
public boolean isSeparator()

Overrides default io.smallrye.common.version.VersionIterator.isSeparator.

Doc from io.smallrye.common.version.VersionIterator.isSeparator.

Determine if the current token is some kind of separator (a character or a zero-length alphabetical-to-numeric or numeric-to-alphabetical transition).

Returns:boolean

true if the token is a separator, false otherwise

isSeparatorCodePointback to summary
protected boolean isSeparatorCodePoint(int cp)

Determine whether the given code point is a valid separator according to the current scheme. This basic implementation returns true for '.', '-', '+', and '_'. Subclasses may override this method to recognize a different set of separators.

Parameters
cp:int

the code point to test

Returns:boolean

true if the code point is a separator, or false otherwise

lengthback to summary
public int length()

Implements io.smallrye.common.version.VersionIterator.length.

Doc from io.smallrye.common.version.VersionIterator.length.

Get the length of the current token. If there is no current token, zero is returned.

Returns:int

the length of the current token

makeCookieback to summary
pack-priv static long makeCookie(final long start, final long end, final AbstractVersionIterator.TokenType state, final long extraBits)
markback to summary
protected long mark()

Mark the current iteration position and state.

Returns:long

the current iteration cookie

nextback to summary
public void next() throws NoSuchElementException, VersionSyntaxException

Implements io.smallrye.common.version.VersionIterator.next.

A basic implementation of VersionIterator#next() which uses the methods on this class to establish the next iteration token. This implementation consumes leading zeros from numeric parts but otherwise does not perform any transformations.

Exceptions
NoSuchElementException:
if there are no tokens left to iterate
VersionSyntaxException:
if the version string is unparseable due to syntax error
numericCodePointValueback to summary
protected int numericCodePointValue(int cp)

Determine whether the given code point is a valid numeric code point according to the current scheme, and if so, what the digit's numerical value is. This basic implementation delegates to Character#digit(int, int) with a radix value of 10. Subclasses may override this method to recognize a different set of numeric code points.

Parameters
cp:int

the code point to test

Returns:int

the numerical value of the given code point, or -1 if the code point is not a valid numerical digit for this version scheme

resetback to summary
protected void reset(long mark)

Restore the iteration position to a previous mark() state.

Parameters
mark:long

the mark to restore to

setCurrentTokenback to summary
protected void setCurrentToken(AbstractVersionIterator.TokenType tokenType, int startIndex, int endIndex, int extraBits)

Set the current token.

Parameters
tokenType:AbstractVersionIterator.TokenType

the token type (must not be null)

startIndex:int

the start index

endIndex:int

the end index

extraBits:int

extra implementation-specific state bits

thisHasNextback to summary
private boolean thisHasNext()
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

io.smallrye.common.version back to summary

protected final Enum AbstractVersionIterator.TokenType

extends Enum<AbstractVersionIterator.TokenType>
Class Inheritance

The current state of iteration.

Field Summary

Modifier and TypeField and Description
public static final AbstractVersionIterator.TokenType
INITIAL

The initial state.

public static final AbstractVersionIterator.TokenType
INVALID

An invalid state.

public static final AbstractVersionIterator.TokenType
PART_ALPHA

A part of the version string which is an alpha part.

public static final AbstractVersionIterator.TokenType
PART_NUMBER

A part of the version string which is a numeric part.

public static final AbstractVersionIterator.TokenType
SEP

A non-empty separator character.

public static final AbstractVersionIterator.TokenType
SEP_EMPTY

A separator character.

pack-priv static AbstractVersionIterator.TokenType[]

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static AbstractVersionIterator.TokenType
public static AbstractVersionIterator.TokenType[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

INITIALback to summary
public static final AbstractVersionIterator.TokenType INITIAL

The initial state.

INVALIDback to summary
public static final AbstractVersionIterator.TokenType INVALID

An invalid state.

PART_ALPHAback to summary
public static final AbstractVersionIterator.TokenType PART_ALPHA

A part of the version string which is an alpha part.

PART_NUMBERback to summary
public static final AbstractVersionIterator.TokenType PART_NUMBER

A part of the version string which is a numeric part.

SEPback to summary
public static final AbstractVersionIterator.TokenType SEP

A non-empty separator character.

SEP_EMPTYback to summary
public static final AbstractVersionIterator.TokenType SEP_EMPTY

A separator character.

valuesback to summary
pack-priv static AbstractVersionIterator.TokenType[] values

Constructor Detail

TokenTypeback to summary
private TokenType()

Method Detail

valueOfback to summary
public static AbstractVersionIterator.TokenType valueOf(String name)
valuesback to summary
public static AbstractVersionIterator.TokenType[] values()