org.apache.fop.layoutmgr

## Class KnuthSequence<T extends ListElement>

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractList<E>
    - - java.util.ArrayList<T>
      - - org.apache.fop.layoutmgr.KnuthSequence<T>

- All Implemented Interfaces:
    Serializable, Cloneable, Iterable<T>, Collection<T>, List<T>, RandomAccess
  Direct Known Subclasses:
    BlockKnuthSequence, InlineKnuthSequence

      public abstract class KnuthSequence<T extends ListElement>
      extends ArrayList<T>

  Represents a list of `Knuth elements`.
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class java.util.AbstractList

      `modCount`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `KnuthSequence()` Creates a new and empty list.
    `KnuthSequence(List<T> list)` Creates a new list from an existing list.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract boolean` | `appendSequence(KnuthSequence sequence)` Append sequence to this sequence if it can be appended.
    `abstract boolean` | `appendSequence(KnuthSequence sequence, boolean keepTogether, BreakElement breakElement)` Append sequence to this sequence if it can be appended.
    `boolean` | `appendSequenceOrClose(KnuthSequence sequence)` Append sequence to this sequence if it can be appended.
    `boolean` | `appendSequenceOrClose(KnuthSequence sequence, boolean keepTogether, BreakElement breakElement)` Append sequence to this sequence if it can be appended.
    `abstract boolean` | `canAppendSequence(KnuthSequence sequence)` Can sequence be appended to this sequence?
    `abstract KnuthSequence` | `endSequence()` Finalizes a Knuth sequence.
    `ListElement` | `getElement(int index)`
    `protected int` | `getFirstBoxIndex(int startIndex)` Returns the position index of the first box in this sequence, starting at the given index.
    `T` | `getLast()`
    `abstract boolean` | `isInlineSequence()` Is this an inline or a block sequence?
    `T` | `removeLast()` Remove the last element of this sequence.
    `void` | `startSequence()` Marks the start of the sequence.
    `String` | `toString()`
    `void` | `wrapPositions(LayoutManager lm)` Wrap the Positions of the elements of this sequence in a Position for LayoutManager lm.

    - ### Methods inherited from class java.util.ArrayList

      `add, add, addAll, addAll, clear, clone, contains, ensureCapacity, forEach, get, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize`

    - ### Methods inherited from class java.util.AbstractList

      `equals, hashCode`

    - ### Methods inherited from class java.util.AbstractCollection

      `containsAll`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.List

      `containsAll, equals, hashCode`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, stream`

- - ### Constructor Detail

    - #### KnuthSequence

          public KnuthSequence()

      Creates a new and empty list.

    - #### KnuthSequence

          public KnuthSequence(List<T> list)

      Creates a new list from an existing list.
      Parameters:
        `list` - The list from which to create the new list.

  - ### Method Detail

    - #### startSequence

          public void startSequence()

      Marks the start of the sequence.

    - #### endSequence

          public abstract KnuthSequence endSequence()

      Finalizes a Knuth sequence.
      Returns:
        a finalized sequence.

    - #### canAppendSequence

          public abstract boolean canAppendSequence(KnuthSequence sequence)

      Can sequence be appended to this sequence?
      Parameters:
        `sequence` - The sequence that may be appended.
      Returns:
        whether the sequence can be appended to this sequence.

    - #### appendSequence

          public abstract boolean appendSequence(KnuthSequence sequence,
                                                 boolean keepTogether,
                                                 BreakElement breakElement)

      Append sequence to this sequence if it can be appended.
      Parameters:
        `sequence` - The sequence that is to be appended.
        `keepTogether` - Whether the two sequences must be kept together.
        `breakElement` - The BreakElement that may be inserted between the two sequences.
      Returns:
        whether the sequence was succesfully appended to this sequence.

    - #### appendSequence

          public abstract boolean appendSequence(KnuthSequence sequence)

      Append sequence to this sequence if it can be appended.
      Parameters:
        `sequence` - The sequence that is to be appended.
      Returns:
        whether the sequence was succesfully appended to this sequence.

    - #### appendSequenceOrClose

          public boolean appendSequenceOrClose(KnuthSequence sequence)

      Append sequence to this sequence if it can be appended. If that is not possible, close this sequence.
      Parameters:
        `sequence` - The sequence that is to be appended.
      Returns:
        whether the sequence was succesfully appended to this sequence.

    - #### appendSequenceOrClose

          public boolean appendSequenceOrClose(KnuthSequence sequence,
                                               boolean keepTogether,
                                               BreakElement breakElement)

      Append sequence to this sequence if it can be appended. If that is not possible, close this sequence.
      Parameters:
        `sequence` - The sequence that is to be appended.
        `keepTogether` - Whether the two sequences must be kept together.
        `breakElement` - The BreakElement that may be inserted between the two sequences.
      Returns:
        whether the sequence was succesfully appended to this sequence.

    - #### wrapPositions

          public void wrapPositions(LayoutManager lm)

      Wrap the Positions of the elements of this sequence in a Position for LayoutManager lm.
      Parameters:
        `lm` - The LayoutManager for the Positions that will be created.

    - #### getLast

          public T getLast()

      Returns:
        the last element of this sequence.

    - #### removeLast

          public T removeLast()

      Remove the last element of this sequence.
      Returns:
        the removed element.

    - #### getElement

          public ListElement getElement(int index)

      Parameters:
        `index` - The index of the element to be returned
      Returns:
        the element at index index.

    - #### getFirstBoxIndex

          protected int getFirstBoxIndex(int startIndex)

      Returns the position index of the first box in this sequence, starting at the given index. If `startIndex` is outside the bounds of this sequence, it is returned.
      Parameters:
        `startIndex` - the index from which to start the lookup
      Returns:
        the index of the next box element, `ArrayList.size()` if there is no such element, `startIndex` if `(startIndex < 0 || startIndex >= size())`

    - #### isInlineSequence

          public abstract boolean isInlineSequence()

      Is this an inline or a block sequence?
      Returns:
        true if this is an inline sequence

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `AbstractCollection<T extends ListElement>`

Copyright © 2025 Apache Software Foundation. All rights reserved.