Interface SymbolOccurrence

All Superinterfaces:
Comparable<SymbolOccurrence>
All Known Implementing Classes:
IntBasedSymbolOccurrence, ShortBasedSymbolOccurrence

public sealed interface SymbolOccurrence extends Comparable<SymbolOccurrence> permits IntBasedSymbolOccurrence, ShortBasedSymbolOccurrence
Обращение к символу в файле.

Поля расположения (uri и координаты диапазона) хранятся прямо в записи, а не в отдельном объекте Location: на больших проектах это убирает второй заголовок объекта и лишний прыжок по указателю на каждое из миллионов вхождений. URI шарится, поэтому размножается только запись обращения. Диапазон/позиция при необходимости строятся на лету (range(), startPosition()).

Координаты диапазона в подавляющем большинстве файлов укладываются в short (строки/столбцы <= Short.MAX_VALUE). Поэтому реализация выбирается фабрикой of(OccurrenceType, Symbol, URI, Range): для таких файлов создаётся ShortBasedSymbolOccurrence (четыре short вместо четырёх int — на 8 байт меньше на экземпляр), для остальных — IntBasedSymbolOccurrence. Аксессоры координат всегда возвращают int, поэтому выбор реализации незаметен для вызывающего кода.

  • Field Details

  • Method Details

    • occurrenceType

      OccurrenceType occurrenceType()
      Returns:
      Тип обращения к символу.
    • symbol

      Symbol symbol()
      Returns:
      Символ, к которому происходит обращение.
    • uri

      URI uri()
      Returns:
      URI файла, в котором расположено обращение.
    • startLine

      int startLine()
      Returns:
      Строка начала обращения.
    • startCharacter

      int startCharacter()
      Returns:
      Столбец начала обращения.
    • endLine

      int endLine()
      Returns:
      Строка конца обращения.
    • endCharacter

      int endCharacter()
      Returns:
      Столбец конца обращения.
    • of

      static SymbolOccurrence of(OccurrenceType occurrenceType, Symbol symbol, URI uri, Range range)
      Создать обращение к символу из диапазона.
      Parameters:
      occurrenceType - Тип обращения.
      symbol - Символ, к которому происходит обращение.
      uri - URI файла.
      range - Диапазон обращения.
      Returns:
      построенное обращение.
    • of

      static SymbolOccurrence of(OccurrenceType occurrenceType, Symbol symbol, URI uri, int startLine, int startCharacter, int endLine, int endCharacter)
      Создать обращение к символу по координатам диапазона.

      Если все координаты укладываются в short, создаётся компактная ShortBasedSymbolOccurrence, иначе — IntBasedSymbolOccurrence.

      Parameters:
      occurrenceType - Тип обращения.
      symbol - Символ, к которому происходит обращение.
      uri - URI файла.
      startLine - Строка начала обращения.
      startCharacter - Столбец начала обращения.
      endLine - Строка конца обращения.
      endCharacter - Столбец конца обращения.
      Returns:
      построенное обращение.
    • range

      default Range range()
      Returns:
      Диапазон обращения.
    • startPosition

      default Position startPosition()
      Returns:
      Позиция начала обращения.
    • compareTo

      default int compareTo(@Nullable SymbolOccurrence other)
      Specified by:
      compareTo in interface Comparable<SymbolOccurrence>