ParameterReader
Steady-state allocation-free tokenizer for comma-separated modifier parameters, including quoted tokens and escaped delimiters.
Example
Reads the next comma-delimited token (trimmed) without consuming it — a following Next returns the same token. Returns false if no tokens remain. The optional-slot idiom: peek, test, and call Next only on a match, so a non-matching token flows to the following slot instead of being eaten.
Peek for an optional positional slot. An explicitly-empty slot (a bare comma) is a positional skip: it is consumed here and reported as absent (returns ). A non-empty token is left in place — the caller tests it and either claims it with Next or lets it flow to the following slot. Centralizes the empty-skip so a leading empty slot can never silently shift the remaining positional values.
Reads the next token as a value of enum T. Matches the full enum-member name case-insensitively; for single-character tokens, also matches against the first letter of any member whose initial is unique within the enum (e.g. r → Radial when no other member starts with R). Members whose initial collides with another member's keep working under their full name but lose the short alias. Returns false if missing or unmatched; on failure value is left at defaultValue.
