See Figure C.2 for the derivation hierarchy of the buffer classes.
See Table C.1.
A buffer is plural when multiple distinct tokens can be appended to, and distinguished within, the buffer all at one time. E.g., null-terminated strings in a NulBuf, or vertical bar terminated character sequences within a BarBuf. Alternatively, a buffer is singular when each character sequence appended to the buffer is catenated directly adjacent to the previous, the one example being the CatBuf.
Source streams have one msg buffers, stream, providing fixed size blocks as the targets of system input routines,
Cat buffers occur in Tables, the Dbms, the Logger, and the Historian; Nul buffers, in Tables, twice;
There is currently only one instance of a TmpBuf, in Source, where it is shared with a tokenizer for the duration of a parse, and from there used by Cursor::probe, Parser::scan, and Tokens::scan itself.