Packages

c

org.apache.daffodil.processors.unparsers

SuppressableSeparatorUnparserSuspendableOperation

final class SuppressableSeparatorUnparserSuspendableOperation extends SuspendableOperation with StreamSplitter with AlignmentFillUnparserSuspendableMixin

Performance Note: This can be a very special purpose suspension. Unlike the suspensions for dfdl:outputValueCalc, a separator expression can only look backwards to data that is already known. Hence, we can evaluate the separator, and just cache it, and when we decide to unsuspend this, we either blat out that cached data or not. But we need none of the state needed to unparse or evaluate expressions.

Linear Supertypes
AlignmentFillUnparserSuspendableMixin, StreamSplitter, SuspendableOperation, Suspension, Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SuppressableSeparatorUnparserSuspendableOperation
  2. AlignmentFillUnparserSuspendableMixin
  3. StreamSplitter
  4. SuspendableOperation
  5. Suspension
  6. Serializable
  7. Serializable
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new SuppressableSeparatorUnparserSuspendableOperation(sepMtaAlignmentMaybe: MaybeInt, sepUnparser: Unparser, rd: TermRuntimeData)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def UE(ustate: UState, s: String, args: Any*): Nothing
    Definition Classes
    Suspension
  5. val alignmentInBits: Int
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. final def block(nodeOrVar: AnyRef, info: AnyRef, index: Long, exc: AnyRef): Unit
    Definition Classes
    Suspension
  8. final def blockedLocation: String
    Definition Classes
    Suspension
  9. def captureDOSForEndOfSeparatedRegionBeforePostfixSeparator(s: UState): Unit
  10. def captureDOSForStartOfSeparatedRegionBeforePostfixSeparator(s: UState): Unit

    Needed for the corner case of suppressing a postfix separator.

    Needed for the corner case of suppressing a postfix separator.

    Here we need to know whether two regions of data are zero length when dealing with trailingEmpty suppression. The data before the postfix separator must be ZL, and the data to the end of sequence must be ZL. So we have the ability to capture two ranges of buffered data from unparsing.

  11. def captureStateAtEndOfPotentiallyZeroLengthRegionFollowingTheSeparator(s: UState): Unit
  12. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  13. def continuation(state: UState): Unit

    Once we know whether the length is zero/non-zero, then we decide to unparse the separator or not.

    Once we know whether the length is zero/non-zero, then we decide to unparse the separator or not.

    If we're positional and potentially trailing, then this will only be Zero length if we're considering unparsing a trailing separator for an empty, with nothing following. So if ZL, no separator, otherwise we unparse the separator.

    If we are unparsing a separator, we must also unparse associated MTA alignment if we didn't statically determine that it wasn't needed

    Definition Classes
    SuppressableSeparatorUnparserSuspendableOperationAlignmentFillUnparserSuspendableMixin → SuspendableOperation
  14. final def doTask(ustate: UState): Unit
    Attributes
    protected
    Definition Classes
    SuspendableOperation → Suspension
  15. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  17. final def explain(): Unit
    Definition Classes
    Suspension
  18. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  19. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  20. def getDOSFromAtoB(beforeDOS: DataOutputStream, afterDOS: DataOutputStream): Seq[DataOutputStream]

    Given two DataOutputStream, determine the set of data output streams starting from the first, and in chain until (and including) we reach the second.

    Given two DataOutputStream, determine the set of data output streams starting from the first, and in chain until (and including) we reach the second.

    If the two are the same DataOutputStream, we get back a sequence of just the one DOS.

    Definition Classes
    StreamSplitter
  21. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  22. final def isBlocked: Boolean
    Definition Classes
    Suspension
  23. final def isDone: Boolean
    Definition Classes
    Suspension
  24. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  25. final def isMakingProgress: Boolean
    Definition Classes
    Suspension
  26. val isReadOnly: Boolean
    Definition Classes
    Suspension
  27. def maybeKnownLengthInBits(ustate: UState): MaybeULong
    Attributes
    protected
    Definition Classes
    Suspension
  28. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  29. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  30. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  31. val rd: TermRuntimeData
    Definition Classes
    SuppressableSeparatorUnparserSuspendableOperationAlignmentFillUnparserSuspendableMixin → SuspendableOperation → Suspension
  32. final def run(ustate: UState): Unit
    Definition Classes
    Suspension
  33. final def runSuspension(): Unit
    Definition Classes
    Suspension
  34. final def savedUstate: UState
    Definition Classes
    Suspension
  35. final def setDone(): Unit
    Definition Classes
    Suspension
  36. final def setUnblocked(): Unit
    Definition Classes
    Suspension
  37. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  38. def test(ustate: UState): Boolean

    Determine if the decision about whether to suppress or not can be taken.

    Determine if the decision about whether to suppress or not can be taken.

    A trailing separator may be suppressed if the things after it are zero-length to the end of the sequence.

    An anyEmpty separator may be suppressed if the separated thing is zero-length.

    This must be determined by examining the buffers of unparsed data. Such time as their length is known to be greater than zero the test will return true. If they are finished and length is still zero the test will also return true. Otherwise they are possibly just temporarily of length zero, so we don't know so we return false and the suspension will be retried later.

    Also note that this must take into account alignment. However, we only care about alignment if we will create a separator, which only occurs when the zero length status is NonZero. If we determine the zero length status is Zero, no separator will be unparsed, and so MTA should also not be unparsed.

    Definition Classes
    SuppressableSeparatorUnparserSuspendableOperationAlignmentFillUnparserSuspendableMixin → SuspendableOperation
  39. def toString(): String
    Definition Classes
    SuspendableOperation → AnyRef → Any
  40. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  41. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  42. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from StreamSplitter

Inherited from SuspendableOperation

Inherited from Suspension

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped