| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #ifndef NETDATA_WINDOWS_EVENTS_UNICODE_H |
| 4 | #define NETDATA_WINDOWS_EVENTS_UNICODE_H |
| 5 | |
| 6 | #include "libnetdata/libnetdata.h" |
| 7 | |
| 8 | #define WINEVENT_NAME_KEYWORDS_SEPARATOR ", " |
| 9 | static inline void txt_utf8_add_keywords_separator_if_needed(TXT_UTF8 *dst) { |
| 10 | if(dst->used > 1) |
| 11 | txt_utf8_append(dst, WINEVENT_NAME_KEYWORDS_SEPARATOR, sizeof(WINEVENT_NAME_KEYWORDS_SEPARATOR) - 1); |
| 12 | } |
| 13 | |
| 14 | static inline void txt_utf8_set_numeric_if_empty(TXT_UTF8 *dst, const char *prefix, size_t len, uint64_t value) { |
| 15 | if(dst->used <= 1) { |
| 16 | txt_utf8_resize(dst, len + UINT64_MAX_LENGTH + 1, false); |
| 17 | memcpy(dst->data, prefix, len); |
| 18 | dst->used = len + print_uint64(&dst->data[len], value) + 1; |
| 19 | } |
| 20 | } |
| 21 | |
| 22 | static inline void txt_utf8_set_hex_if_empty(TXT_UTF8 *dst, const char *prefix, size_t len, uint64_t value) { |
| 23 | if(dst->used <= 1) { |
| 24 | txt_utf8_resize(dst, len + UINT64_HEX_MAX_LENGTH + 1, false); |
| 25 | memcpy(dst->data, prefix, len); |
| 26 | dst->used = len + print_uint64_hex_full(&dst->data[len], value) + 1; |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | // -------------------------------------------------------------------------------------------------------------------- |
| 31 | // conversions |
| 32 | |
| 33 | void unicode2utf8(char *dst, size_t dst_size, const wchar_t *src); |
| 34 | void utf82unicode(wchar_t *dst, size_t dst_size, const char *src); |
| 35 | |
| 36 | char *channel2utf8(const wchar_t *channel); |
| 37 | wchar_t *channel2unicode(const char *utf8str); |
| 38 | |
| 39 | char *query2utf8(const wchar_t *query); |
| 40 | char *provider2utf8(const wchar_t *provider); |
| 41 | |
| 42 | #endif //NETDATA_WINDOWS_EVENTS_UNICODE_H |