Martchus
2e93882882
Reduce redundant code in stringconversion.h
2021-05-24 19:51:49 +02:00
Martchus
3afed30760
Detect overflow in functions to convert strings to numbers
...
Otherwise these functions can strictly run into undefined behavior which
should be prevented.
2021-05-24 19:51:49 +02:00
Martchus
d5e35e460c
Fix a few details in string conversion functions
2021-05-23 19:20:45 +02:00
Martchus
63955ffcc5
Avoid including ranges header under reflective-rapidjson's generator
...
This works around errors which Clang 11.1.0 has when parsing this header
from GCC 11.1.0. (Yes, at this point the GCC and Clang versions which are
currently in Arch Linux testing are identical.)
2021-05-16 19:21:58 +02:00
Martchus
6d5045c2b1
Port away from deprecated WriteCompilerDetectionHeader module
2021-05-13 15:49:53 +02:00
Martchus
f549285fde
Fix splitString()/splitStringSimple() for case of empty trailing part
2021-05-11 16:42:28 +02:00
Martchus
b43de126b9
Retain source compatibility of numberToString()/stringToNumber()
...
IntegralType and BaseType need to be kept different types, otherwise one
runs into deduction errors if both arguments have different types (which is
quite likely in practise). Since the base is always a small positive
integer the cast should always be safe.
2021-03-22 13:45:16 +01:00
Martchus
a30ba0c147
Ensure still the right stringToNumber() overload is called for char arrays
2021-03-22 12:13:20 +01:00
Martchus
42132719e5
Remove comments about std::expected (which didn't even make it into C++20)
2021-03-22 12:12:11 +01:00
Martchus
8c033ca243
Fix warnings
2021-03-20 21:56:45 +01:00
Martchus
3c8eb5a333
Apply clang-format
2021-03-05 23:14:54 +01:00
Martchus
cc63c8c250
Improve parameter-passing in some string conversion functions
...
* Allow using a range as input of joinStrings()
* Use `std::string_view` instead of `const std::string &` to pass read-only
parameters to joinStrings() and splitString*() to avoid constructing an
`std::string` from `const char *` parameters
* Use auto for return types of toMultiline() and toArrayOfLines()
* Does not affect BC because those are template functions
* Should not affect source compatibility; at least uses in my main projects
seem to be unaffected
2021-03-05 23:01:30 +01:00
Martchus
6968716d5c
Avoid using substr in splitString()/splitStringSimple()
2021-02-23 20:54:04 +01:00
Martchus
27e9761f63
Adjust conditions for C++20 for g++
2021-02-09 00:22:20 +01:00
Martchus
c61a1784ec
Allow using splitStringSimple() with `std::unordered_set` in C++20
...
* So one could use e.g. `std::unordered_set<std::string_view>` as target
container when splitting an `std::string_view`.
* Still an experimental feature
2021-02-09 00:21:53 +01:00
Martchus
70f827c78e
Apply clang-format
2020-11-25 17:53:28 +01:00
Martchus
a26f3d7e1a
Avoid instantiating an std::string for find and replace parameters
...
This overloads should allow passing an std::string_view or C-string to
findAndReplace() without instantiating an std::string.
2020-09-19 15:40:32 +02:00
Martchus
b363498f53
Allow specifying return type in joinStrings()
...
for joining an std::string from an std::vector<std::string_view>.
2020-07-25 22:53:46 +02:00
Martchus
bf8e0db87f
Construct tuple in in string builder directly
2020-03-02 18:23:38 +01:00
Martchus
8744cf95ef
Ensure no copy is made when using argsToString()
...
It seems that std::make_tuple() is using __decay_and_strip so
the arguments get copied. Using the std::tuple c'tor directly
instead.
When using the %-operator it is already taken care that strings
are stored as pointers and not by value.
2020-02-18 19:29:23 +01:00
Martchus
1154ed4d1c
Improve exception messages of NativeFileStream
...
So one gets e.g. "open failed: Permission denied" instead of
just "open failed: iostream error".
2020-02-14 17:13:05 +01:00
Martchus
7204bc6f06
Support using string builder with types convertible to target string type
...
So e.g. std::filesystem::path can be used to build an std::string.
2020-02-13 17:05:46 +01:00
Martchus
a5283535cc
Support nested tuples in string builder
...
This is useful to concatenate previously constructed sub
strings passed around as tuples.
2020-01-26 19:02:22 +01:00
Martchus
7376a2bb9b
Support string builder operator '+' for std::string_view
2019-11-28 23:10:16 +01:00
Martchus
b8a60a0cd4
Support string builder operator '%' for std::string_view
2019-11-28 23:05:55 +01:00
Martchus
8e3aa84780
Support std::string_view in stringbuilder.h
2019-11-28 22:34:10 +01:00
Martchus
4e3393ee72
Apply clang-format
2019-10-30 23:02:30 +01:00
Martchus
1177381521
Add CppUtilities::endsWith()
2019-10-30 20:34:16 +01:00
Martchus
2cdde81077
Fix startsWith() if strings are equal
2019-10-27 17:59:26 +01:00
Martchus
b693c72eb1
Fix old namespaces being mentioned in the documentation
2019-09-04 18:45:28 +02:00
Martchus
b48b2f5c06
Have everything in one top-level namespace
2019-06-10 21:56:46 +02:00
Martchus
54aaad49a3
Use std::forward in argsToString()
2019-05-11 19:19:59 +02:00
Martchus
eef6cd2f9e
Use constexpr or inline in stringbuilder where possible
2019-05-11 19:10:36 +02:00
Martchus
9a50d2b8df
Remove types
2019-04-13 20:33:39 +02:00
Martchus
f40a800107
Remove USE_NOTHROW and make ConversionException inline
2019-04-13 20:33:39 +02:00
Martchus
264a349751
Remove widen.h, use iconv based string conversion instead
2019-04-13 20:33:39 +02:00
Martchus
41fa627ef4
Apply tidy
2019-03-11 17:47:17 +01:00
Martchus
7452d44e64
Prevent formatting bitrate as "-NaN GiB/s"
2019-03-10 16:26:23 +01:00
Martchus
a0dff23c26
Remove extra handling for big endian
...
The detection for big endian seems to work. But the special
handling for big endian is wrong. Only without it tests pass
under ppc64. Tested with Tumbleweed ppc64 image ran within
qemu-system-ppc64.
2019-01-12 04:53:05 +01:00
Martchus
fe4d2b5778
Improve readability of endianness detection
2018-12-29 23:48:01 +01:00
Martchus
8e32fc0229
Apply clang-format
2018-10-06 16:18:53 +02:00
Martchus
5356d793fc
Make all tests pass under Windows
...
* Workaround some issues
* Disable some tests (better than not running tests
at all)
2018-10-03 22:37:55 +02:00
Martchus
8e3c40abb5
Make conversion from multi byte to wide string generic
2018-10-03 21:26:41 +02:00
Martchus
3a14d39a14
Add conversion from const char* to float/double
...
Previously only conversion from std::string to float/double
was possible.
2018-09-22 16:47:44 +02:00
Martchus
a6eefc3ab6
Fix documentation of string conversion functions
2018-09-22 16:46:48 +02:00
Martchus
651720552e
Replace typedef's with using
...
* Except in code which will be discarded in v5 anyways
* Should not affect source and binary compatibility
2018-09-22 16:41:33 +02:00
Marius Kittler
7e4d9a6c59
Add missing header to fix compilation with GCC 4.9
2018-07-13 13:54:53 +02:00
Martchus
97aac2424a
Reduce block-nesting in joinStrings()
2018-07-01 23:21:06 +02:00
Martchus
52734ebf51
Make use of thread_local optional
...
Because it doesn't seem to be implemented for
apple-darwin targets.
2018-06-03 22:14:22 +02:00
Martchus
a21ed51505
Improve coding style in toFloat{32,64}() functions
...
* Use const
* Don't duplicate BE/LE branches
2018-05-31 22:45:45 +02:00