Packages

sealed trait ZeroLengthDetector extends Serializable

Rapidly determines if an Infoset Element will have non-zero length when unparsed.

This enables an important optimization for separator suppression.

If by looking at the infoset value/nilled status we can tell whether it would be non-zero length immediately, then we don't need to suspend whether to unparse the separator or not, we just unparse it directly.

Conversely, if we don't know if the value will unparse to zero-length or not, we must use a suspendable unparser for the separator, and that has a lot of overhead. But we avoid this overhead in most cases.

The specific concrete sub-class is selected based on a compile time analysis of whether the element can have zero length at all, and if so, under what conditions.

Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ZeroLengthDetector
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def isKnownNonZeroLength(diElement: DIElement): Boolean

    Determines if the representation is known for certain to be non-zero length.

    Determines if the representation is known for certain to be non-zero length.

    Used to avoid complexity when unparsing and trailing separator suppression is a possibility.

  2. abstract def isKnownZeroLength(diElement: DIElement): Boolean

    Determines if the representation is known for certain to be zero length.

    Determines if the representation is known for certain to be zero length.

    Used to optimize for dfdl:separatorSuppressionPolicy="anyEmpty".

Concrete 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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def isKnownNonZeroLengthModelGroup: Boolean
  13. def isKnownZeroLengthModelGroup: Boolean
  14. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  18. def toString(): String
    Definition Classes
    AnyRef → Any
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped