ENH: improve consistency in parsing primitives from strings (issue #590)
- Any trailing whitespace when parsing from strings or character buffers is ignored rather than being treated as an error. This is consistent with behaviour when reading from an Istream and with leading whitespace being ignored in the underlying atof/atod, strtof/strtod... functions. - Allow parsing directly from a std::string instead of just from a 'char*'. This reflects the C++11 addition of std::stod to complement the C functions strtod. This also makes it easier to parse string directly without using an IStringStream. - Two-parameter parsing methods return success/failure. Eg, if (readInt32(str, &int32Val)) ... - One-parameter parsing methods return the value on success or emit a FatalIOError. Eg, const char* buf; int32Val = readInt32(buf, &); - Improved consistency when parsing unsigned ints. Use strtoimax and strtoumax throughout. - Rename readDoubleScalar -> readDouble, readFloatScalar -> readFloat. Using the primitive name directly instead of the Foam typedef for better consistency with readInt32 etc. - Clean/improve parseNasScalar. Handle normal numbers directly, reduce some operations.
Showing
- applications/test/primitives/Make/files 3 additions, 0 deletionsapplications/test/primitives/Make/files
- applications/test/primitives/Make/options 5 additions, 0 deletionsapplications/test/primitives/Make/options
- applications/test/primitives/Test-primitives.C 198 additions, 0 deletionsapplications/test/primitives/Test-primitives.C
- src/OSspecific/POSIX/printStack.C 1 addition, 1 deletionsrc/OSspecific/POSIX/printStack.C
- src/OpenFOAM/Make/files 1 addition, 0 deletionssrc/OpenFOAM/Make/files
- src/OpenFOAM/primitives/Scalar/Scalar.C 53 additions, 12 deletionssrc/OpenFOAM/primitives/Scalar/Scalar.C
- src/OpenFOAM/primitives/Scalar/Scalar.H 38 additions, 18 deletionssrc/OpenFOAM/primitives/Scalar/Scalar.H
- src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C 11 additions, 3 deletionssrc/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C
- src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H 20 additions, 37 deletionssrc/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H
- src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C 12 additions, 4 deletionssrc/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C
- src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H 21 additions, 38 deletionssrc/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H
- src/OpenFOAM/primitives/Scalar/scalar/scalar.C 6 additions, 13 deletionssrc/OpenFOAM/primitives/Scalar/scalar/scalar.C
- src/OpenFOAM/primitives/Scalar/scalar/scalar.H 12 additions, 2 deletionssrc/OpenFOAM/primitives/Scalar/scalar/scalar.H
- src/OpenFOAM/primitives/ints/int/int.H 25 additions, 2 deletionssrc/OpenFOAM/primitives/ints/int/int.H
- src/OpenFOAM/primitives/ints/int/intIO.C 59 additions, 1 deletionsrc/OpenFOAM/primitives/ints/int/intIO.C
- src/OpenFOAM/primitives/ints/int32/int32.C 18 additions, 3 deletionssrc/OpenFOAM/primitives/ints/int32/int32.C
- src/OpenFOAM/primitives/ints/int32/int32.H 54 additions, 16 deletionssrc/OpenFOAM/primitives/ints/int32/int32.H
- src/OpenFOAM/primitives/ints/int32/int32IO.C 60 additions, 32 deletionssrc/OpenFOAM/primitives/ints/int32/int32IO.C
- src/OpenFOAM/primitives/ints/int64/int64.C 18 additions, 3 deletionssrc/OpenFOAM/primitives/ints/int64/int64.C
- src/OpenFOAM/primitives/ints/int64/int64.H 50 additions, 12 deletionssrc/OpenFOAM/primitives/ints/int64/int64.H
Please register or sign in to comment