ab8d37ee75
Turn assert() into _Analysis_assume_ on Release builds
...
While runtime asserts also served as MSVC Code Analysis hints, the lack
of asserts in Release builds provides no hints to Code Analysis which
rises a lot of warnings then.
Maybe I should learn how to use SAL to annotate <ptr, len> parameter
pairs to allow ptr==nullptr when and only when len==0? 😇
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
9ba4b21cef
Un-static global data
...
Otherwise, compiler generates instances for each compilation unit.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
36012a107b
stream: cleanup
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
b791621a2a
stream: make std:thread member rather than derive from it
...
When deriving, C++ might believe the derived class is still movable. But
it's not and rather than deleting move constructor and operator, this
approach made simpler code.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
9365f0252c
stream: add socket
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
e61720598f
stream: revise string reading and writing
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:07 +02:00
86e7ed3690
stream: add support for collection reading and writing
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
838dfabbda
string: add trim
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
82a16ef579
string: add strftime
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
a888731c39
string: extend strupr
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
02c531e2a8
string: fix strncpy and strncat buffer limit check
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
d7a44c2929
string: add strncmp
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
7ea1870552
interval: allow use with scoped enums
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:06 +02:00
010ee71d93
interval: make operators a class friend
...
This makes them better discoverable by MSVC from various non-root
namespaces.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:05 +02:00
3183b58e0d
idrec: cleanup and make operators a class friend
...
This makes them better discoverable by MSVC from various non-root
namespaces.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:05 +02:00
6f19e5250d
parser: weasel winsock2.h support
...
This is a royal PITA to get compiled under various combinations of
WIN32_LEAN_AND_MEAN and _WINSOCKAPI_ combinations.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:04 +02:00
c16579984d
system: add sys_info
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:04 +02:00
9f21015209
system: add sregex
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:03 +02:00
1a9b63279d
unicode: add UTF-7 and improve system charset detection
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:03 +02:00
970917f164
unicode: silence MSVC code analysis warnings
...
Those lines of code were tested.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:03 +02:00
67d328a550
watchdog: add
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:42:03 +02:00
06a896ccf6
hash: make operators a class friend
...
This makes them better discoverable by MSVC from various non-root
namespaces.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-03 14:56:15 +02:00
dfdc4369b8
base64: add base64_reader and base64_writer
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-03 14:56:14 +02:00
49b741c94f
Replace errno_error with std::system_error
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-01 23:09:50 +02:00
b8fae2d0dd
pch.h -> pch.hpp
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-25 15:05:36 +02:00
4e25c13d08
hash: macOS support
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-25 15:04:19 +02:00
c4e94150d1
hash: add
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-25 14:57:14 +02:00
772dbb3524
Add README.md
...
A very vague one, but still. 😇
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-25 14:55:27 +02:00
4a5970595f
math: document add and mul
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-25 14:54:46 +02:00
41d764eeef
parser: fix compilation for macOS
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-23 17:58:40 +02:00
80eecac31a
unicode: add charset_id::utf32 for Windows
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-22 13:36:13 +02:00
10d74988aa
Add mising UTF-8 BOM's
...
Curse you XCode! 😔
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-22 13:07:14 +02:00
b724ce1333
stream: fix wchar_t/UTF-16 confusion and revise readln and write_array
...
On non-Windows, wchar_t is UTF-32. This adds preliminary support for UTF-32
and changes readln and write_array members to use charset_encoder for better
performance on non-Windows platforms.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-22 13:04:41 +02:00
921d235459
unicode: upgrade and promote use of charset_encoder
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-22 13:02:27 +02:00
cb010bd72e
UnitTests: upgrade XCode project to include all .hpp files
...
This simplifies source code browsing.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-20 14:02:40 +02:00
6689aa5210
stream: add file::exists and file::readonly
...
We are targeting C++14, while C++17 already has std::filesystem::exists. 😢
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-20 13:00:20 +02:00
dcfc4752b5
stream: add stdex::sstring method variants
2023-09-20 12:09:58 +02:00
475e6734a7
stream: extend open/create disposition flags
...
User could not create file only if it did not exist.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-20 11:13:16 +02:00
50fea81f83
parser: cleanup
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-20 08:07:50 +02:00
613bba9e05
parser: refine IBAN checking
...
Allow arbitrary spacing, minor optimizations...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-19 21:40:36 +02:00
b5984ea8f2
Port to macOS
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-19 18:02:18 +02:00
27afd7afa5
parser: add IBAN, RF and SI support
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-19 16:53:16 +02:00
0e8e119346
unicode: Fix charset detection on macOS
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-15 16:33:20 +02:00
fea0ed7754
unicode: add system charset detection
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-15 15:32:14 +02:00
bffb48c87d
string: streamline C locale management across platforms
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-15 15:31:18 +02:00
bb2578f65c
UnitTests: Revert to XCode 13
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-14 16:10:13 +02:00
edd480d64b
macOS fixes
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-14 15:57:55 +02:00
51d7ee3493
Fix to support pre-C++17
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-14 13:01:16 +02:00
13703b1747
unicode: extend conversion with reusable charset_encoder
...
Windows takes care of internal converter state in MultiByteToWideChar
and WideCharToMultiByte and keeps them thread-safe. On other platforms,
iconv requires user to setup and keep converter state for thread-safe
conversions. This sounds time consuming for every string conversion,
therefore the concept of string converter (or converter state) has been
extended to Windows too, allowing uniform client code. On Windows, using
charset_encoder has no performance benefit, where on Linux and macOS,
there should be. To be measured...
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-14 12:28:05 +02:00
66f8a6c3b7
Re-add UTF-8 BOM XCode is removing
...
Visual Studio IDE really needs it on non-UTF-8 PCs.
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-09-14 09:13:04 +02:00