org.apache.daffodil.processors.parsers
Tells us whether to attempt another array element at the current index, and how we should interpret the existence of an element or empty/zero-length based on the array index.
Tells us whether to attempt another array element at the current index, and how we should interpret the existence of an element or empty/zero-length based on the array index.
NOTE: must be stateless. State must be passed in, and returned for assignment to a loop var, or held in pstate.
Do things that must be done at the end of an array.
Do things that must be done at the end of an array.
This applies to both variable-occurrence and fixed-occurrence array elements, as well as optional elements.
This applies for optional elements as well because expressions can access them by way of index: e.g., fn:exists( optElement[dfdl:currentIndex()] )
Only needed for separated sequences, but in order to avoid code duplication we use this "fat interface" approach, and have these here by default.
Only needed for separated sequences, but in order to avoid code duplication we use this "fat interface" approach, and have these here by default.
Override in separated, hasPoU case.
Only needed for separated sequences, but in order to avoid code duplication we use this "fat interface" approach, and have these here by default.
Only needed for separated sequences, but in order to avoid code duplication we use this "fat interface" approach, and have these here by default.
Override in separated, hasPoU case.
False because combinators don't touch the data stream themselves.
False because combinators don't touch the data stream themselves. The processors they call do that work.
The digestion of maxOccurs with the occursCountKind results in maxRepeats.
The digestion of maxOccurs with the occursCountKind results in maxRepeats. For example, when occursCountKind is parsed, then maxRepeats is -1 (meaning unbounded) regardless of the value of maxOccurs.
The digestion of minOccurs with the occursCountKind results in minRepeats.
The digestion of minOccurs with the occursCountKind results in minRepeats. For example, when occursCountKind is parsed, then minRepeats is 0, regardless of the value of minOccurs.
Invokes the child parser.
Invokes the child parser. Once, only. Does NOT do iterations of it.
Tells us if we should remove a successfully parsed zero-length string or hexBinary from the infoset, because it is optional, so even though zero length may parse successfully and return an empty string or hexbinary normal value, the optionality of the element wins out over the empty-string value, and we don't put the element into the infoset as an array child.
Tells us if we should remove a successfully parsed zero-length string or hexBinary from the infoset, because it is optional, so even though zero length may parse successfully and return an empty string or hexbinary normal value, the optionality of the element wins out over the empty-string value, and we don't put the element into the infoset as an array child.
True for cases where we should deal with trailing separator toleration.
True for cases where we should deal with trailing separator toleration.
Combines the runtime information needed with static/schema-compile-time information about the Sequence child.
This is applicable only to OPTIONAL elements (as in between min/maxOccurs, i.e., has variable occurrences, and speculative parsing/PoU.
Do things that are done at the start of an array-element.
Do things that are done at the start of an array-element.
This applies to both variable-occurrence and fixed-occurrence array elements, as well as optional elements.
This applies for optional elements as well because expressions can access them by way of index: e.g., fn:exists( optElement[dfdl:currentIndex()] )
This makes more sense if you consider that an "optional" element (minOccurs 0, maxOccurs 1) when occursCountKind is 'parsed' is treated as an array with an unbounded number of possible occurrences. Similarly, if occursCountKind is 'expression', then minOccurs/maxOccurs are ignored (used only for validation), and there can be more than 1 occurrence.