Class LexicalPositionMutable<F>

java.lang.Object
com.io7m.jlexing.core.LexicalPositionMutable<F>
Type Parameters:
F - generic parameter F
All Implemented Interfaces:
LexicalPositionType<F>

public final class LexicalPositionMutable<F> extends Object implements LexicalPositionType<F>
A modifiable implementation of the LexicalPositionType type.

Use the create() static factory methods to create new instances. Use the toImmutable() method to convert to canonical immutable instances.

LexicalPositionMutable is not thread-safe

See Also:
  • Method Details

    • create

      public static <F> LexicalPositionMutable<F> create(int line, int column, Optional<F> file)
      Construct a modifiable instance of LexicalPositionType.
      Type Parameters:
      F - generic parameter F
      Parameters:
      line - The value for the line attribute
      column - The value for the column attribute
      file - The value for the file attribute
      Returns:
      A new modifiable instance
    • create

      public static <F> LexicalPositionMutable<F> create()
      Construct a modifiable instance of LexicalPositionType.
      Type Parameters:
      F - generic parameter F
      Returns:
      A new modifiable instance
    • line

      public final int line()
      Specified by:
      line in interface LexicalPositionType<F>
      Returns:
      The line number
    • column

      public final int column()
      Specified by:
      column in interface LexicalPositionType<F>
      Returns:
      The column number
    • file

      public final Optional<F> file()
      Specified by:
      file in interface LexicalPositionType<F>
      Returns:
      The file, if any
    • columnEnd

      public final int columnEnd()
      The "end" column number. This defines an inclusive span [column, columnEnd] and defaults to column if not specified.
      Specified by:
      columnEnd in interface LexicalPositionType<F>
      Returns:
      The column end number
      Since:
      3.1.0
    • clear

      public LexicalPositionMutable<F> clear()
      Clears the object by setting all attributes to their initial values.
      Returns:
      this for use in a chained invocation
    • from

      public LexicalPositionMutable<F> from(LexicalPositionType<F> instance)
      Fill this modifiable instance with attribute values from the provided LexicalPositionType instance. Regular attribute values will be overridden, i.e. replaced with ones of an instance. Any of the instance's absent optional values will not be copied (will not override current values).
      Parameters:
      instance - The instance from which to copy values
      Returns:
      this for use in a chained invocation
    • setLine

      public LexicalPositionMutable<F> setLine(int line)
      Assigns a value to the line attribute.
      Parameters:
      line - The value for line
      Returns:
      this for use in a chained invocation
    • setColumn

      public LexicalPositionMutable<F> setColumn(int column)
      Assigns a value to the column attribute.
      Parameters:
      column - The value for column
      Returns:
      this for use in a chained invocation
    • setFile

      public LexicalPositionMutable<F> setFile(F file)
      Assigns a present value for the optional file attribute.
      Parameters:
      file - A value for file
      Returns:
      this for use in a chained invocation
    • setFile

      public LexicalPositionMutable<F> setFile(Optional<F> file)
      Assigns an optional value for file.
      Parameters:
      file - A value for file
      Returns:
      this for use in a chained invocation
    • setColumnEnd

      public LexicalPositionMutable<F> setColumnEnd(int columnEnd)
      Assigns a value to the columnEnd attribute.

      If not set, this attribute will have a default value returned by the initializer of columnEnd.

      Parameters:
      columnEnd - The value for columnEnd
      Returns:
      this for use in a chained invocation
    • lineIsSet

      public final boolean lineIsSet()
      Returns true if the required attribute line is set.
      Returns:
      true if set
    • columnIsSet

      public final boolean columnIsSet()
      Returns true if the required attribute column is set.
      Returns:
      true if set
    • columnEndIsSet

      public final boolean columnEndIsSet()
      Returns true if the default attribute columnEnd is set.
      Returns:
      true if set
    • unsetLine

      public final LexicalPositionMutable<F> unsetLine()
      Reset an attribute to its initial value.
      Returns:
      this for use in a chained invocation
    • unsetColumn

      public final LexicalPositionMutable<F> unsetColumn()
      Reset an attribute to its initial value.
      Returns:
      this for use in a chained invocation
    • unsetColumnEnd

      public final LexicalPositionMutable<F> unsetColumnEnd()
      Reset an attribute to its initial value.
      Returns:
      this for use in a chained invocation
    • isInitialized

      public final boolean isInitialized()
      Returns true if all required attributes are set, indicating that the object is initialized.
      Returns:
      true if set
    • toImmutable

      public final LexicalPosition<F> toImmutable()
      Converts to LexicalPosition.
      Returns:
      An immutable instance of LexicalPosition
    • equals

      public boolean equals(Object another)
      This instance is equal to all instances of LexicalPositionMutable that have equal attribute values. An uninitialized instance is equal only to itself.
      Overrides:
      equals in class Object
      Returns:
      true if this is equal to another instance
    • hashCode

      public int hashCode()
      Computes a hash code from attributes: line, column, file, columnEnd.
      Overrides:
      hashCode in class Object
      Returns:
      hashCode value
    • toString

      public String toString()
      Generates a string representation of this LexicalPositionType. If uninitialized, some attribute values may appear as question marks.
      Overrides:
      toString in class Object
      Returns:
      A string representation