Description
There are a number of data representations DFDL cannot handle because it cannot manipulate numbers with sufficient flexibility in expressions.
We need AND, OR, NOT, maybe XOR, and shift left, shift right, and probably arithmetic shift right (which does sign-extension of signed numbers). We should add functions for the whole set of them.
On signed numbers with specific sizes (long, int, short, byte) these should behave as if the data was binary in 2s complement representation, i.e., as if the most-significant-bit was playing the role of 2s complement sign.
These operations should all be undefined (Schema Def Error) on decimal, integer, and non-negative integer values, as well as float and double.
Specifically, these operations are defined on long and its subtypes, and unsignedLong and its subtypes only.