- eliminated previous PackedBitRef class, the iterator does all of that and
can also be used to (forward) traverse the list
- no const_iterator yet
- Note that PackedList is also a bit like DynamicList in terms of storage
management and the append() method. Since the underlying storage in
integer, any auto-vivified elements will also flood-fill the gaps with
zero.
- token class handles both single and double quoted strings. Single quoted
strings are used to tag regular expressions. At the moment this is just
syntactical sugar and isn't (yet) treated differently than double-quoted
strings.
- write output for std:string, with/without single quotes with the method
writeQuoted(). Use distinct method name to avoid inadvertent compiler
conversions.
- write wordRe and keyType using writeQuoted()
- coordinateSystem, cylindricalCS, sphericalCS:
get copy with name constructor
- cylindricalCS, sphericalCS:
can switch off default degrees
- dropped cartesianCS class (already covered by coordinateSystem) and just
always use coordinateSystem directly.
The dictionary runtime selection still accepts type "cartesian" as an alias,
to provide the least surprises.
- dropped runtime selection based on origin/axis/direction (not used), but
left runtime selection based on origin/coordinateRotation as still being
potentially useful.
- Switch now stores its value as an unsigned char, which gives it the same
storage requirement as bool (1 byte). The original implementation had both
bool+word (1+XXX bytes storage), an intermediate version with bool+enum
had 8 bytes (1+4 + boundary alignment).
- The reading code in boolIO.C and SwitchIO.C is now identical except for
the error message. This allows Switch to accept '1', '0' as logical
values, and allows bool to accept 'yes', 'no' etc. as logical values.
- The Switch text translation of a bool value is now true/false instead of
on/off. This is partly personal preference, but we could also output the
same text when writing a bool value to Ostream.
- Switch gets null and integer constructors so it feels more like bool.
Added Switch::operator=(const bool);
- Low-level types can be used for the constructors, and low-level return
values are used for the greatest flexibility (and speed).
- Fixed bugginess with dictionary lookup. The previous version actually used
a bool instead of a Switch and bombed on 'on/off'.
TODO?
perhaps don't worry about the error message and just call the Switch
routines from bool.