Package picocli

Class CommandLine.Range

java.lang.Object
picocli.CommandLine.Range
All Implemented Interfaces:
Comparable<CommandLine.Range>
Enclosing class:
CommandLine

public static class CommandLine.Range extends Object implements Comparable<CommandLine.Range>
Describes the number of parameters required and accepted by an option or a positional parameter.
Since:
0.9.7
  • Field Details

    • min

      @Deprecated public final int min
      Deprecated.
      use min() instead
    • max

      @Deprecated public final int max
      Deprecated.
      use max() instead
    • isVariable

      @Deprecated public final boolean isVariable
      Deprecated.
      use isVariable() instead
    • isUnspecified

      private final boolean isUnspecified
    • originalValue

      private final String originalValue
    • relative

      private final boolean relative
    • anchor

      private final int anchor
  • Constructor Details

    • Range

      public Range(int min, int max, boolean variable, boolean unspecified, String originalValue)
      Constructs a new Range object with the specified parameters.
      Parameters:
      min - minimum number of required parameters
      max - maximum number of allowed parameters (or Integer.MAX_VALUE if variable)
      variable - true if any number or parameters is allowed, false otherwise
      unspecified - true if no arity was specified on the option/parameter (value is based on type)
      originalValue - the original value that was specified on the option or parameter
  • Method Details

    • optionArity

      public static CommandLine.Range optionArity(Field field)
      Returns a new Range based on the CommandLine.Option.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
      Parameters:
      field - the field whose Option annotation to inspect
      Returns:
      a new Range based on the Option arity annotation on the specified field
    • optionArity

      private static CommandLine.Range optionArity(CommandLine.Model.IAnnotatedElement member)
    • parameterArity

      public static CommandLine.Range parameterArity(Field field)
      Returns a new Range based on the CommandLine.Parameters.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
      Parameters:
      field - the field whose Parameters annotation to inspect
      Returns:
      a new Range based on the Parameters arity annotation on the specified field
    • parameterArity

      private static CommandLine.Range parameterArity(CommandLine.Model.IAnnotatedElement member)
    • parameterIndex

      public static CommandLine.Range parameterIndex(Field field)
      Returns a new Range based on the CommandLine.Parameters.index() annotation on the specified field.
      Parameters:
      field - the field whose Parameters annotation to inspect
      Returns:
      a new Range based on the Parameters index annotation on the specified field
    • parameterIndex

      private static CommandLine.Range parameterIndex(CommandLine.Model.IAnnotatedElement member)
    • defaultParameterIndex

      private static CommandLine.Range defaultParameterIndex(CommandLine.Model.ITypeInfo typeInfo)
    • adjustForType

    • defaultArity

      public static CommandLine.Range defaultArity(Field field)
      Returns the default arity Range: for interactive options/positional parameters, this is 0; for options this is effectively "0..1" for booleans and 1 for other types, for parameters booleans have arity 1, arrays or Collections have arity "0..*", and other types have arity 1.

      Implementation Notes

      The returned Range for boolean options has an effective arity of "0..1". This is implemented by returning a Range with arity "0", and its unspecified property set to true. This implementation may change in the future.

      Parameters:
      field - the field whose default arity to return
      Returns:
      a new Range indicating the default arity of the specified field
      Since:
      2.0
    • defaultArity

      private static CommandLine.Range defaultArity(CommandLine.Model.IAnnotatedElement member)
    • defaultArity

      @Deprecated public static CommandLine.Range defaultArity(Class<?> type)
      Deprecated.
      Returns the default arity Range for options: booleans have arity 0, other types have arity 1.
      Parameters:
      type - the type whose default arity to return
      Returns:
      a new Range indicating the default arity of the specified type
    • size

      private int size()
    • parameterCapacity

      static CommandLine.Range parameterCapacity(CommandLine.Model.IAnnotatedElement member)
    • parameterCapacity

      private static CommandLine.Range parameterCapacity(CommandLine.Range arity, CommandLine.Range index)
    • valueOf

      public static CommandLine.Range valueOf(String range)
      Leniently parses the specified String as a Range value and return the result. A range string can be a fixed integer value or a range of the form MIN_VALUE + ".." + MAX_VALUE. If the MIN_VALUE string is not numeric, the minimum is zero. If the MAX_VALUE is not numeric, the range is taken to be variable and the maximum is Integer.MAX_VALUE.
      Parameters:
      range - the value range string to parse
      Returns:
      a new Range value
    • parseInt

      private static int parseInt(String str, int defaultValue)
    • min

      public CommandLine.Range min(int newMin)
      Returns a new Range object with the min value replaced by the specified value. The max of the returned Range is guaranteed not to be less than the new min value.
      Parameters:
      newMin - the min value of the returned Range object
      Returns:
      a new Range object with the specified min value
    • max

      public CommandLine.Range max(int newMax)
      Returns a new Range object with the max value replaced by the specified value. The min of the returned Range is guaranteed not to be greater than the new max value.
      Parameters:
      newMax - the max value of the returned Range object
      Returns:
      a new Range object with the specified max value
    • unspecified

      public CommandLine.Range unspecified(boolean unspecified)
      Returns a new Range object with the isUnspecified value replaced by the specified value.
      Parameters:
      unspecified - the unspecified value of the returned Range object
      Returns:
      a new Range object with the specified unspecified value
    • isUnspecified

      public boolean isUnspecified()
      Returns true if this Range is a default value, false if the user specified this value.
      Since:
      4.0
    • isUnresolved

      public boolean isUnresolved()
      Returns true if this range contains a relative index like "1+", or variables that have not been expanded yet, false if this Range does not contain any variables or relative indices.
      Since:
      4.0
    • isRelative

      public boolean isRelative()
      Returns true if this Range contains a relative index like "1+", or false if this Range does not contain any relative indices.
      Since:
      4.3
    • anchor

      int anchor()
      Returns the anchor position that this Range is relative to, or min() if this Range is absolute.
      Returns:
      1 for a relative index like "1+", or Integer.MAX_VALUE for a relative index without an anchor, like "+"
      Since:
      4.3
    • isRelativeToAnchor

      boolean isRelativeToAnchor()
    • originalValue

      public String originalValue()
      Returns the original String value that this range was constructed with.
      Since:
      4.3
    • min

      public int min()
      Returns the lower bound of this range (inclusive).
      Since:
      4.0
    • max

      public int max()
      Returns the upper bound of this range (inclusive), or Integer.MAX_VALUE if this range has no upper bound.
      Since:
      4.0
    • isVariable

      public boolean isVariable()
      Returns true if this range has no fixed upper bound.
      Since:
      4.0
    • contains

      public boolean contains(int value)
      Returns true if this Range includes the specified value, false otherwise.
      Parameters:
      value - the value to check
      Returns:
      true if the specified value is not less than the minimum and not greater than the maximum of this Range
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • internalToString

      String internalToString()
      Returns equivalent of format("%s (%s)", originalValue, toString()).
    • compareTo

      public int compareTo(CommandLine.Range other)
      Specified by:
      compareTo in interface Comparable<CommandLine.Range>
    • isValidForInteractiveArgs

      boolean isValidForInteractiveArgs()
      Returns true for these ranges: 0 and 0..1.
    • overlaps

      boolean overlaps(CommandLine.Range index)