Important - Evalutables MUST declare all evaluatables they depend on.
Important - Evalutables MUST declare all evaluatables they depend on. But only those they directly depend on. (Not the dependents of the dependents...)
Compile an Ev to see if it is a constant at compilation time.
Compile an Ev to see if it is a constant at compilation time. This is determined by actually evaluating it, passing a special CompileState that errors out when data access to runtime-valued data is attempted.
Convenience method
Convenience method
Use by way of override lazy val qName = dafName("foobar")
Preferred for use in the runtime.
Preferred for use in the runtime.
Override if this evaluatable needs to use a different evaluate mode for unparsing.
Override if this evaluatable needs to use a different evaluate mode for unparsing.
The only example of this (as of this comment being written) is LengthEv
Schema compiler wants to use map call, so we need a scala option type for that.
Schema compiler wants to use map call, so we need a scala option type for that. So this variant supplies that.
QName to be associated with this evaluatable.
QName to be associated with this evaluatable.
If the Evaluatable is for a DFDL property this should be dfdl:propertyName e.g., dfdl:terminator, with the prefix DFDL being the prefix associated with the DFDL namespace.
If the Evaluatable is for some other computation, e.g., for the CharsetEncoder. Then daf:encoder or other useful identifier.
This QName is used in the XML representation of these Evaluatables, if they are to be displayed, which is mostly for various debug purposes.
Creates an XML-like string representation.
Creates an XML-like string representation.
Looks like an attribute definition, but the value part may contain XML-element-like syntax. If so it is either escaped with CDATA bracketing (preferred), or if there are quotes in it, then it is escapified meaning " < etc.
Avoids inserting single quotes (aka apos) so that those can be used surrounding this at a higher level.