For testing mostly.
Returns the value of a variable, constructing also a modified variable map which shows that the variable has been read (state VariableRead), when the variable hadn't previously been read yet.
Assigns a variable, returning a new VariableMap which shows the state of the variable.
Assigns a variable, returning a new VariableMap which shows the state of the variable.
Pure functional data structure for implementing DFDL's variables.
Key concepts: DFDL variables are single-assignment. Once they have been set, they may not be set again. Furthermore, they have default values, and if the default value has been read, then they may not subsequently be set.
These constraints insure that the variables do NOT become a sneaky way to get generalized accumulators and hence turing-complete semantics (and complexity) into designing and debugging DFDL schemas. They also allow for parallel implementations since order of evaluation does not matter.
The DPath implementation must be made to implement the no-set-after-default-value-has-been-read behavior. This requires that reading the variables causes a state transition.