-
Mark OLESEN authored
* Support default values for format/compress enum lookups. - Avoids situations where the preferred default format is not ASCII. For example, with dictionary input: format binar; The typing mistake would previously have caused formatEnum to default to ASCII. We can now properly control its behaviour. IOstream::formatEnum ( dict.get<word>("format"), IOstream::BINARY ); Allowing us to switch ascii/binary, using BINARY by default even in the case of spelling mistakes. The mistakes are flagged, but the return value can be non-ASCII. * The format/compression lookup behave as pass-through if the lookup string is empty. - Allows the following to work without complaint IOstream::formatEnum ( dict.getOrDefault("format", word::null), IOstream::BINARY ); - Or use constructor-like failsafe method IOstream::formatEnum("format", dict, IOstream::BINARY); - Apply the same behaviour with setting stream format/compression from a word. is.format("binar"); will emit a warning, but leave the stream format UNCHANGED * Rationalize versionNumber construction - constexpr constructors where possible. Default construct is the "currentVersion" - Construct from token to shift the burden to versionNumber. Support token as argument to version(). Now: is.version(headerDict.get<token>("version")); or failsafe constructor method is.version ( IOstreamOption::versionNumber("version", headerDict) ); Before (controlled input): is.version ( IOstreamOption::versionNumber ( headerDict.get<float>("version") ) ); Old, uncontrolled input - has been removed: is.version(headerDict.lookup("version")); * improve consistency, default behaviour for IOstreamOption construct - constexpr constructors where possible - add copy construct with change of format. - construct IOstreamOption from streamFormat is now non-explicit. This is a commonly expected result with no ill-effects
33f9ae50