When we advance, data0 is known to be consumed into either the field, or delimiter being accumulated, or it is dropped.
When we advance, data0 is known to be consumed into either the field, or delimiter being accumulated, or it is dropped.
The new data0 and data1 are effectively peek() and peek2() past the character that was just consumed, and that's an invariant here. I.e., data0 and data1 are always two characters lookahead into the data stream.
Copy an existing Registers' reader position information to this Registers.
Copy an existing Registers' reader position information to this Registers.
This allows this Registers to pick-up where the other left off.
Consumes one character (in the sense of advancing the data stream past the bits of that character's code points.
Consumes one character (in the sense of advancing the data stream past the bits of that character's code points. Then peeks ahead one further, and returns the peeked character.
Very important.
Very important. We don't want to create these over and over. We want to use one and reset it and use it again.
So this is set up so you must construct it, and then reset before first use. I.e., reset() is also init().