249 Commits

Author SHA1 Message Date
d44aed2cff string: add "C" locale function variants
"C"-locale is basically ASCII while (Microsoft) implementation is not
quite performant to our likes. We can do faster.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-18 09:57:38 +01:00
dff646a4f8 README: add link to auto-generated documentation
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:18:06 +01:00
87c41c0947 html: add simple tokenizer and parser
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:54 +01:00
424f297c7b sgml: sgml2wstr→sgml2str, wstr2sgml→str2sgml 🧨
This is analogous to string.hpp's strlen, strcpy, strcat, which use C++
polymorphism rather than function name decorations for char/wchar_t
flavors.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
06da717405 string: upgrade vappendf and appendf to return number of chars appended
This comes handy when concatenating strings and calculating mappings.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
10791467d8 string: add isblank
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
3dfcaf3f10 string: add std_locale_C
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
6c8d6f182c unicode: add charset_from_name
This makes name->charset_t conversion available to others.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
52d9956891 Cleanup
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-17 15:14:53 +01:00
bea4b5b408 spinlock, pool: add
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-10 12:38:13 +01:00
cc8a6eeee7 Make C++17 minimum requirement
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-10 08:36:33 +01:00
57ccb713ad Make inline variables optional before C++17
This allows gradual projects migration to C++17 and later.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-09 09:25:42 +01:00
3dfd62ec2f socket: add own cross-platform declaration
Like with stdex::locale_t, this frees us from using Windowsizms on other
platforms. Sockets came from Unix to Windows and not the other way
around in the first place.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-09 09:25:42 +01:00
2c45749f78 string, locale: make stdex::locale(_t) independent .hpp file
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-09 08:12:31 +01:00
9d50a878dc Inline variables to have compiler reuse them
Unfortunately, this requires at least C++17, but the inline is exactly
what we need to avoid redundant copies of static const data.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-08 18:48:31 +01:00
4fb684ce75 Cleanup
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-08 18:35:59 +01:00
ee8f54ee5f Fix to compile for Linux
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-08 13:48:41 +01:00
9ff15a27a1 string: move uuidtostr to a separate .hpp
It requires libuuid-devel on Linux and since this function is optional, lets
not impose libuuid-devel dependency on anything that #include
<stdex/string.hpp>.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-08 13:41:50 +01:00
fedeef0bea string: fix strncat SAL
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-06 11:57:47 +01:00
dec5ad54d1 interval: add invalidate method
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-11-06 11:57:08 +01:00
89a5c6e5e6 sys_info: move to a separate .hpp
The stdex::sys_info is instantiated for each compilation unit. To reduce
amount of copies, move it to a separate .hpp as system.hpp is almost
always #included.

Breaking-change: Add #include <stdex/sys_info.hpp>
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-19 10:16:53 +02:00
16a86cf350 Add #include wrapper to fix min/max <Windows.h> mess
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-18 12:51:49 +02:00
856be3a0d8 Revise #include to make each .hpp individually compilable
Mind that min/max Windows.h mess is Microsoft's problem, not ours.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-18 09:12:06 +02:00
11e56f927f string: add missing #include to support uuid_t on Windows
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-18 08:14:28 +02:00
983891ec41 string: add crlf2nl
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:09 +02:00
913cbc104a string: add strcmp
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:09 +02:00
8a6462a40c string: add uuidtostr
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
a469860382 stream: revise cache init and cleanup
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
00b05092af stream: reuse converter R/W methods
Where we need to read from/write to m_source and immediately apply its
state to our converter, we already have methods for this.

Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
47e63b1f32 Use lambda as trampoline to simplify thread functions
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
8732b1df5b system: add admin and elevated bools to sys_info
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
3a39f2438a chrono: resolve time constant confusion
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
7cd4d099ff stream: cleanup
Signed-off-by: Simon Rozman <simon@rozman.si>
2023-10-10 16:43:08 +02:00
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