Trait

org.apache.daffodil.dsom

TermEncodingMixin

Related Doc: package dsom

Permalink

trait TermEncodingMixin extends KnownEncodingMixin

Captures concepts around dfdl:encoding property and Terms.

Just factored out into a trait for isolation of related code.

Self Type
Term
Linear Supertypes
KnownEncodingMixin, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TermEncodingMixin
  2. KnownEncodingMixin
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def charsetEv: CharsetEv

    Permalink
    Definition Classes
    KnownEncodingMixin

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final lazy val couldBeVariableWidthEncoding: Boolean

    Permalink
    Definition Classes
    KnownEncodingMixin
  7. final lazy val defaultEncodingErrorPolicy: EncodingErrorPolicy

    Permalink
    Attributes
    protected
  8. lazy val encodingInfo: EncodingRuntimeData

    Permalink
  9. final def encodingMinimumCodePointWidthInBits(cs: BitsCharset): Int

    Permalink
    Definition Classes
    KnownEncodingMixin
  10. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  14. final lazy val hasTextAlignment: Boolean

    Permalink

    no alignment properties that would explicitly create a need to align in a way that is not on a suitable boundary for a character.

  15. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  17. final lazy val isKnownEncoding: Boolean

    Permalink

    Character encoding common attributes

    Character encoding common attributes

    Note that since encoding can be computed at runtime, we create values to tell us if the encoding is known or not so that we can decide things at compile time when possible.

    Definition Classes
    TermEncodingMixin → KnownEncodingMixin
  18. final lazy val isLocallyTextOnly: Boolean

    Permalink

    True if this element itself consists only of text.

    True if this element itself consists only of text. No binary stuff like alignment or skips.

    Not recursive into contained children.

  19. final lazy val isScannable: Boolean

    Permalink

    True if it is sensible to scan this data e.g., with a regular expression.

    True if it is sensible to scan this data e.g., with a regular expression. Requires that all children have same encoding as enclosing groups and elements, requires that there is no leading or trailing alignment regions, skips. We have to be able to determine that we are for sure going to always be properly aligned for text.

    Caveat: we only care that the encoding is the same if the term actually could have text (couldHaveText is an LV) as part of its representation. For example, a sequence with no initiator, terminator, nor separators can have any encoding at all, without disqualifying an element containing it from being scannable. There has to be text that would be part of the scan.

    If the root element isScannable, and encodingErrorPolicy is 'replace', then we can use a lower-overhead I/O layer - basically we can use a java.io.InputStreamReader directly.

    We are going to depend on the fact that if the encoding is going to be this X-DFDL-US-ASCII-7-BIT-PACKED thingy (7-bits wide code units, so aligned at 1 bit) that this encoding must be specified statically in the schema.

    If an encoding is determined at runtime, then we will insist on it being 8-bit aligned code units.

  20. final lazy val knownEncodingAlignmentInBits: Int

    Permalink

    When the encoding is known, this tells us the mandatory alignment required.

    When the encoding is known, this tells us the mandatory alignment required. This is always 1 or 8.

    Definition Classes
    TermEncodingMixin → KnownEncodingMixin
  21. final lazy val knownEncodingCharset: BitsCharset

    Permalink
    Definition Classes
    KnownEncodingMixin
  22. final lazy val knownEncodingIsFixedWidth: Boolean

    Permalink
    Definition Classes
    KnownEncodingMixin
  23. final lazy val knownEncodingIsUnicode: Boolean

    Permalink
    Definition Classes
    KnownEncodingMixin
  24. final lazy val knownEncodingName: String

    Permalink
    Definition Classes
    KnownEncodingMixin
  25. final lazy val knownEncodingWidthInBits: Int

    Permalink
    Definition Classes
    KnownEncodingMixin
  26. final def knownFixedWidthEncodingInCharsToBits(nChars: Long): Long

    Permalink
    Definition Classes
    KnownEncodingMixin
  27. final lazy val mustBeAnEncodingWith8BitAlignment: Boolean

    Permalink
    Definition Classes
    KnownEncodingMixin
  28. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  29. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  30. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  31. final lazy val summaryEncoding: EncodingLattice

    Permalink

    Roll up from the bottom.

    Roll up from the bottom. This is abstract interpretation. The top (aka conflicting encodings) is "mixed" The bottom is "noText" (combines with anything) The values are encoding names, or "runtime" for expressions.

    By doing expression analysis we could do a better job here and determine when things that use expressions to get the encoding are all going to get the same expression value. For now, if it is an expression then we lose.

  32. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  33. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  34. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  35. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from KnownEncodingMixin

Inherited from AnyRef

Inherited from Any

Ungrouped