summaryrefslogtreecommitdiff
path: root/libs/pbd/string_convert.cc
AgeCommit message (Collapse)Author
2017-04-19Make boolean string values 0 and 1 to maintain backwards compatibilityTim Mayberry
I would prefer "yes" and "no" as it distinguishes boolean values from numeric but using "yes and "no" results in PBD::Property<T>::from_string failing to parse the correct values when opening in an older Ardour version as there is no specialization for bool. Using 0 and 1 also results in less change to the Session file.
2017-04-16Add locale independent and thread safe string conversion API with testsTim Mayberry
All conversions are performed as if in the "C" locale but without actually changing locale. This is a wrapper around printf/sscanf for int types which aren't affected by locale and uses glib functions g_ascii_strtod and g_ascii_dtostr for float/double types. My first attempt at this used std::stringstream and ios::imbue(std::locale::classic()) as it should be thread safe, but testing shows it is not for gcc/mingw-w64 on Windows, and possibly also some versions of macOS/OS X. Use "yes" and "no" when converting a boolean in PBD::string_to<bool> as this seems to be the convention used throughout libardour which will allow using string_to<bool> in those cases. Add accepted bool string values from PBD::string_is_affirmative to PBD::string_to<bool> Mark strings in pbd/string_convert.cc as not for translation Add u/int16_t string conversions to pbd/string_convert.h and tests Add DEBUG_TRACE output on conversion errors Add int8_t/uint8_t conversions(using int16/uint16 types) to string_convert.h Add support for converting an infinity expression to/from string Follows the C99/C11 standard for strtof/strtod where subject sequence is an optional plus or minus sign then INF or INFINITY, ignoring case.