It's better to define enum Color { no, yes } because this enables
writing compact code like if (color) { ... }. Further setting the
variable is done using std.conv's parse which makes the code more
compact and throws if the conversion fails.
getopt does not allow handling enums. This commit introduces the
necessary changes. It updates the documentation accordingly and provides
some unittests.
r1557 relaxed some unittests, as some platforms had accuracy problem with strtold(). But the strict unittests were requirements for D; so r1557 should be reverted.
With this change, these unittests will fail on some platforms such as OSX and Gentoo. However, the unittests SHOULD fail because using strtold() on these platforms is a 'bug' -- we should provide an accurate implementation.
Related issues:
3758: Create D impementation of to!(float, string), etc.
4200: "to!real(to!string(real.min_normal))" raises std.conv.ConvError
* std.contracts: Added file and line information to enforce. Added errnoEnforce that reads and formats a message according to errno. Added corresponding ErrnoException class.
* std.encoding: For now commented out std.encoding.to.
* std.file: Fixed bug 2065
* std.format: Fixed bug in raw write for arrays
* std.getopt: Added new option stopOnFirstNonOption. Also automatically expand dubious option groups with embedded in them (useful for shebang scripts)
* std.math: improved integral powers
* std.md5: Improved signature of sum so it takes multiple arrays. Added getDigestString.
* std.path: changed signatures of test functions from bool to int. Implemented rel2abs for Windows. Improved join so that it accepts multiple paths. Got rid of some gotos with the help of scope statements.
* std.process: added getenv and setenv. Improved system() so it returns the exit code correctly on Linux.
* std.random: added the dice function - a handy (possibly biased) dice.
* std.file: added support for opening large files (not yet tested)
* std.utf: added the codeLength function. Got rid of some gotos.
std.contracts: added functions pointsTo()
std.numeric: minor unittest fixes.
std.bitmanip: fixed code bloat issue, reintroduced FloatRep and DoubleRep.
std.conv: minor simplification of implementation.
std.regexp: added reference to ECMA standard in the documentation.
std.getopt: changed return type from bool to void, error is signaled by use of exceptions.
std.functional: added unaryFun, binaryFun, adjoin.
std.string: updated documentation, changed code to compile with warnings enabled.
std.traits: changed FieldTypeTuple; added RepresentationTypeTuple, hasAliasing; fixed bug 1826; added call to flush() from within write; fixed unlisted bug in lines().
std.algorithm: added map, reduce, filter, inPlace, move, swap, overwriteAdjacent, find, findRange, findBoyerMoore, findAdjacent, findAmong, findAmongSorted, canFind, canFindAmong, canFindAmongSorted, count, equal, overlap, min, max, mismatch, EditOp, none, substitute, insert, remove, levenshteinDistance, levenshteinDistanceAndPath, copy, copyIf, iterSwap, swapRanges, reverse, rotate, SwapStrategy, Unstable, Semistable, Stable, eliminate, partition, nthElement, sort, schwartzSort, partialSort, isSorted, makeIndex, schwartzMakeIndex, lowerBound, upperBound, equalRange, canFindSorted.
std.thread: fixed so it compiles with warnings enabled.
std.file: made getSize() faster under Linux.
std.random: fixed so it compiles with warnings enabled; improved function uniform so it deduces type generated from its arguments.
std.format: added fixes to make formatting work with const data.
std.path: minor documentation changes.
-- add std.getopt
-- add std.variant
-- switch strings over to be invariant rather than const
-- hopefully the last big linux makefile overhaul
-- fix for bug 1579: write[ln] fails for obj.toString()
-- fix negative precision handling in std.format
-- add some file and directory iterator helpers
-- among other little changes here and there...