Class

org.apache.daffodil.infoset

DIComplex

Related Doc: package infoset

Permalink

sealed class DIComplex extends DIElement with DIComplexSharedImplMixin with InfosetComplexElement with DIFinalizable

Complex elements have an array of slots one per named child element.

TODO: consider xs:choice - alternatives could share slots, but that would add a lot of complexity, and the nil technique of storing null in a slot to indicate a nilled element only works if we have a positive association of slots to element-bases. If we were to share slots we'd need a different way to indicate nil. A better approach for xs:choice would be a sparse table of slots (whenever there are more than N - some threshold), so that we're not allocating arrays of 200 slots just because there are 200 branches of a choice.

A slot stores a Maybe[InfosetCommonMixin]. None means not present (yet, because it hasn't been parsed yet, or it is an optional element (minOccurs 0, maxOccurs 1) and is not present.) One[DISimple] or One[DIComplex] mean a required element is present, or an optional element (minOccurs 0, maxOccurs 1) is present.

A slot of a DIComplex should never be null.

One[DIArray] means the slot is for a recurring element which can have 2+ instances. The DIArray object's length gives the number of occurrences.

Self Type
DIComplex
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DIComplex
  2. DIFinalizable
  3. InfosetComplexElement
  4. DIComplexSharedImplMixin
  5. DIComplexSharedMembersMixin
  6. DIElement
  7. DIElementSharedImplMixin
  8. DIElementSharedMembersMixin
  9. DIElementSharedInterface
  10. InfosetElement
  11. InfosetItem
  12. InfosetCommon
  13. DITerm
  14. DINode
  15. AnyRef
  16. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DIComplex(erd: ElementRuntimeData, tunable: DaffodilTunables)

    Permalink

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 var _arraySize: MaybeInt

    Permalink
    Definition Classes
    DIComplexSharedMembersMixin
  5. final var _contentLength: ContentLengthState

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  6. final var _isNilled: Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  7. final var _isNilledSet: Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    DIElement
  8. final var _numChildren: Int

    Permalink
    Definition Classes
    DIComplexSharedMembersMixin
  9. final var _parent: InfosetComplexElement

    Permalink
    Attributes
    protected
    Definition Classes
    DIElement
  10. final var _validity: MaybeBoolean

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  11. final var _valueLength: ValueLengthState

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  12. def addChild(e: InfosetElement): Unit

    Permalink

    Determines slotInParent from the ERD of the infoset element arg.

    Determines slotInParent from the ERD of the infoset element arg. Hooks up the parent pointer of the new child to reference this.

    When slot contains an array, this appends to the end of the array.

    Definition Classes
    DIComplexInfosetComplexElement
  13. def addChildToFastLookup(node: DINode): Unit

    Permalink
  14. final def allocContentLength: ContentLengthState

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementDIElementSharedMembersMixin
  15. final def allocValueLength: ValueLengthState

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementDIElementSharedMembersMixin
  16. def array: Maybe[InfosetArray]

    Permalink
    Definition Classes
    DIElementInfosetElement
  17. def asComplex: DIComplex

    Permalink
    Definition Classes
    DINode
  18. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  19. def asSimple: DISimple

    Permalink
    Definition Classes
    DINode
  20. def captureFrom(e: DIElement): Unit

    Permalink
  21. final def captureInto(cs: DIComplexSharedImplMixin): Unit

    Permalink
  22. val childNodes: ArrayBuffer[DINode]

    Permalink
  23. def children: Stream[DINode]

    Permalink
    Definition Classes
    DIComplexDINode
  24. def clear(): Unit

    Permalink
  25. final def clearContentLength(): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  26. final def clearValueLength(): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  27. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def contentLength: ContentLengthState

    Permalink
    Definition Classes
    DIElementSharedMembersMixin
  29. lazy val contents: IndexedSeq[DINode]

    Permalink

    Can treat any DINode, even simple ones, as a container of other nodes.

    Can treat any DINode, even simple ones, as a container of other nodes. This simplifies walking an infoset.

    Definition Classes
    DIComplexDINode
  30. final def copyContentLengthFrom(e: DIElementSharedMembersMixin): Unit

    Permalink

    Copy method keeps these objects null to avoid allocation unless they are really needed.

    Copy method keeps these objects null to avoid allocation unless they are really needed.

    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  31. final def copyValueLengthFrom(e: DIElementSharedMembersMixin): Unit

    Permalink

    Copy method keeps these objects null to avoid allocation unless they are really needed.

    Copy method keeps these objects null to avoid allocation unless they are really needed.

    Attributes
    protected
    Definition Classes
    DIElementSharedMembersMixin
  32. final def dafPrefix: String

    Permalink
    Attributes
    protected
    Definition Classes
    DITerm
  33. def diParent: DIComplex

    Permalink
    Definition Classes
    DIElement
  34. final def eq(arg0: AnyRef): Boolean

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

    Permalink
    Definition Classes
    AnyRef → Any
  36. val erd: ElementRuntimeData

    Permalink
    Definition Classes
    DIComplexDINode
  37. def evalCache(state: ParseOrUnparseState): EvalCache

    Permalink
    Definition Classes
    DITerm
  38. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  39. def findChild(info: DPathElementCompileInfo): Maybe[DINode]

    Permalink
  40. final def getChild(info: DPathElementCompileInfo): InfosetElement

    Permalink
  41. final def getChild(erd: ElementRuntimeData): InfosetElement

    Permalink
    Definition Classes
    DIComplexInfosetComplexElement
  42. final def getChildArray(info: DPathElementCompileInfo): InfosetArray

    Permalink
  43. final def getChildArray(childERD: ElementRuntimeData): InfosetArray

    Permalink
    Definition Classes
    DIComplexInfosetComplexElement
  44. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  45. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  46. final def isComplex: Boolean

    Permalink
    Definition Classes
    DIComplexDIElement
  47. final def isEmpty: Boolean

    Permalink
    Definition Classes
    DIComplexInfosetElement
  48. def isFinal: Boolean

    Permalink
    Definition Classes
    DIFinalizable
  49. final def isHidden: Boolean

    Permalink

    Note: there is no infoset data member for isHidden.

    Note: there is no infoset data member for isHidden. A hidden group is a DFDL schema characteristic for a model group. Elements inside it will have (their element base) isHidden statically on the schema. So there is no notion of creating an infoset element then making it hidden by marking it in some way. Rather, the corresponding elementRuntimeData tells you whether it is hidden or not.

    When we convert to XML, then if we want to preserve information about things being hidden (for inspection by looking at the XML) then we need to add an attribute. But for the infoset itself, we don't need it.

    Definition Classes
    DIElementInfosetElement
  50. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  51. final def isNilled: Boolean

    Permalink

    Tells if the element is nilled or not.

    Tells if the element is nilled or not.

    Throws InfosetNoDataException if we don't yet know if it is nil or not (i.e., hasn't be set, nor has anything been set to indicate that it won't be nilled.)

    Definition Classes
    DIComplexDIElementInfosetElement
  52. def isRoot: Boolean

    Permalink
    Definition Classes
    DIElement
  53. def isRootDoc: Boolean

    Permalink
    Definition Classes
    DIElement
  54. final def isSimple: Boolean

    Permalink
    Definition Classes
    DIComplexDIElement
  55. final def maybeIsNilled: MaybeBoolean

    Permalink

    Used for just testing whether a node has the nil indicators set.

    Used for just testing whether a node has the nil indicators set. That is, dodges the expression evaluation complexity where specific exceptions are thrown when you ask about data that isn't known yet.

    Definition Classes
    DIElement
  56. final def name: String

    Permalink
    Definition Classes
    DIElementInfosetElement
  57. lazy val nameToChildNodeLookup: HashMap[NamedQName, ArrayBuffer[DINode]]

    Permalink
  58. final def namedQName: NamedQName

    Permalink
    Definition Classes
    DIElementDINode
  59. final def namespace: NS

    Permalink
    Definition Classes
    DIElementInfosetElement
  60. final def ne(arg0: AnyRef): Boolean

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

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

    Permalink
    Definition Classes
    AnyRef
  63. final def numChildren: Int

    Permalink
    Definition Classes
    DINode
  64. def parent: InfosetComplexElement

    Permalink
    Definition Classes
    DIElementInfosetElement
  65. final lazy val parserEvalCache: EvalCache

    Permalink
    Definition Classes
    DITerm
  66. def requireFinal: Unit

    Permalink

    use to require it be finalized or throw the appropriate Array or Complex exception.

    use to require it be finalized or throw the appropriate Array or Complex exception.

    Definition Classes
    DIComplexDIFinalizable
  67. final def restoreFrom(cs: DIComplexSharedImplMixin): Unit

    Permalink
  68. def restoreInto(e: DIElement): Unit

    Permalink
  69. final def runtimeData: ElementRuntimeData

    Permalink

    Retrieve the schema component that gave rise to this infoset item.

    Retrieve the schema component that gave rise to this infoset item.

    Definition Classes
    DIElementInfosetElement
  70. def setArray(a: InfosetArray): Unit

    Permalink
    Definition Classes
    DIElementInfosetElement
  71. def setFinal(): Unit

    Permalink
    Definition Classes
    DIFinalizable
  72. def setNilled(): Unit

    Permalink
    Definition Classes
    DIElementInfosetElement
  73. def setParent(p: InfosetComplexElement): Unit

    Permalink
    Definition Classes
    DIElementInfosetElement
  74. def setValid(validity: Boolean): Unit

    Permalink
    Definition Classes
    DIElementInfosetElement
  75. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  76. final def termRuntimeData: TermRuntimeData

    Permalink
    Definition Classes
    DITerm
  77. def toParent: DIComplex

    Permalink
    Definition Classes
    DIElement
  78. def toRootDoc: DIComplex

    Permalink
    Definition Classes
    DIElement
  79. def toString(): String

    Permalink

    This is purely to make debugging easier.

    This is purely to make debugging easier.

    Definition Classes
    DIElement → AnyRef → Any
  80. def totalElementCount: Long

    Permalink

    The totalElementCount is the total count of how many elements this InfosetItem contains.

    The totalElementCount is the total count of how many elements this InfosetItem contains.

    (Used to call this 'size', but size is often a length-like thing, so changed name to be more distinctive)

    Definition Classes
    DIComplexInfosetItemDINode
  81. final def trd: ElementRuntimeData

    Permalink
    Definition Classes
    DIElementDITerm
  82. val tunable: DaffodilTunables

    Permalink
  83. final lazy val unparserEvalCache: EvalCache

    Permalink
    Definition Classes
    DITerm
  84. def valid: MaybeBoolean

    Permalink

    valid = Nope means not checked valid = One(true) means valid valid = One(false) means invalid

    valid = Nope means not checked valid = One(true) means valid valid = One(false) means invalid

    Definition Classes
    DIElementInfosetElement
  85. final def valueLength: ValueLengthState

    Permalink
    Definition Classes
    DIElementSharedMembersMixin
  86. def valueStringForDebug: String

    Permalink
    Definition Classes
    DIComplexDIElement
  87. def visit(handler: InfosetOutputter, removeHidden: Boolean = true): Unit

    Permalink
    Definition Classes
    DIComplexInfosetCommonDINode
  88. final def wait(): Unit

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

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

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

Inherited from DIFinalizable

Inherited from InfosetComplexElement

Inherited from DIComplexSharedImplMixin

Inherited from DIElement

Inherited from DIElementSharedImplMixin

Inherited from DIElementSharedInterface

Inherited from InfosetElement

Inherited from InfosetItem

Inherited from InfosetCommon

Inherited from DITerm

Inherited from DINode

Inherited from AnyRef

Inherited from Any

Ungrouped