Class Position

    • Field Detail

      • line

        public final int line
      • column

        public final int column
      • FIRST_LINE

        public static final int FIRST_LINE
        The first line -- note that it is 1-indexed (i.e. the first line is line 1, as opposed to 0)
        See Also:
        Constant Field Values
      • FIRST_COLUMN

        public static final int FIRST_COLUMN
        The first column -- note that it is 1-indexed (i.e. the first column is column 1, as opposed to 0)
        See Also:
        Constant Field Values
      • HOME

        public static final Position HOME
        The first position in the file.
      • ABSOLUTE_BEGIN_LINE

        public static final int ABSOLUTE_BEGIN_LINE
        Line numbers must be positive, thus
        See Also:
        Constant Field Values
    • Constructor Detail

      • Position

        public Position​(int line,
                        int column)
        TODO: Do we refer to the characters as columns, ...or the spaces between (thus also before/after) characters as columns?
    • Method Detail

      • pos

        @Deprecated
        public static Position pos​(int line,
                                   int column)
        Deprecated.
        Use the constructor (e.g. new Position(line, column))
        Convenient factory method.
      • withColumn

        public Position withColumn​(int column)
        Returns:
        Jump to the given column number, while retaining the current line number.
      • withLine

        public Position withLine​(int line)
        Returns:
        Jump to the given line number, while retaining the current column number.
      • right

        public Position right​(int characters)
        Returns:
        a position that is "characters" characters more to the right than this position.
      • nextLine

        public Position nextLine()
        Returns:
        a position that is on the start of the next line from this position.
      • valid

        public boolean valid()
        Check if the position is usable, also checks for special positions (ABSOLUTE_BEGIN_LINE and ABSOLUTE_END_LINE). Does not know what it is pointing at, so it can't check if the position is after the end of the source.
        Returns:
        true if the position is usable or a special position.
      • invalid

        public boolean invalid()
        Returns:
        The inverse of valid()
        See Also:
        valid()
      • orIfInvalid

        public Position orIfInvalid​(Position alternativePosition)
        Returns:
        If this position is valid, this. Otherwise, if the alternativePosition is valid, return that. Otherwise, just return this.
      • isAfter

        public boolean isAfter​(Position otherPosition)
        Parameters:
        otherPosition - the other position to compare to
        Returns:
        true if this position is after the given position
      • isAfterOrEqual

        public boolean isAfterOrEqual​(Position otherPosition)
      • isBefore

        public boolean isBefore​(Position otherPosition)
        Parameters:
        otherPosition - the other position to compare to
        Returns:
        true if this position is before the given position
      • isBeforeOrEqual

        public boolean isBeforeOrEqual​(Position otherPosition)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object