From 9ff15a27a16f80a31ee465d0804d5353bfe3e3f6 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 8 Nov 2023 13:41:50 +0100 Subject: [PATCH] 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 . Signed-off-by: Simon Rozman --- include/stdex/string.hpp | 55 +----------------------------- include/stdex/uuid.hpp | 72 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 54 deletions(-) create mode 100644 include/stdex/uuid.hpp diff --git a/include/stdex/string.hpp b/include/stdex/string.hpp index ca5988ac4..abe18d24e 100644 --- a/include/stdex/string.hpp +++ b/include/stdex/string.hpp @@ -15,14 +15,11 @@ #include #if defined(_WIN32) #include "windows.h" -#include #elif defined(__APPLE__) -#include -#include -#else #include #endif #include +#include #include #include #include @@ -1463,56 +1460,6 @@ namespace stdex return str; } - /// - /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. - /// - /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. - /// \param[in ] id GUID to write. - /// - inline void uuidtostr(_Out_writes_z_(39) char str[39], _In_ const uuid_t& id) - { - _Assume_(str); - _snprintf_s_l(str, 39, _TRUNCATE, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, -#ifdef _WIN32 - id.Data1, - static_cast(id.Data2), - static_cast(id.Data3), - static_cast(id.Data4[0]), static_cast(id.Data4[1]), - static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); -#else - *reinterpret_cast(&id[0]), - static_cast(*reinterpret_cast(&id[4])), - static_cast(*reinterpret_cast(&id[6])), - static_cast(id[8]), static_cast(id[9]), - static_cast(id[10])), static_cast(id[11]), static_cast(id[12]), static_cast(id)), static_cast(id[14]), static_cast(id[15])); -#endif - } - - /// - /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. - /// - /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. - /// \param[in ] id GUID to write. - /// - inline void uuidtostr(_Out_writes_z_(39) wchar_t str[39], _In_ const uuid_t& id) - { - _Assume_(str); - _snwprintf_s_l(str, 39, _TRUNCATE, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, -#ifdef _WIN32 - id.Data1, - static_cast(id.Data2), - static_cast(id.Data3), - static_cast(id.Data4[0]), static_cast(id.Data4[1]), - static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); -#else - *reinterpret_cast(&id[0]), - static_cast(*reinterpret_cast(&id[4])), - static_cast(*reinterpret_cast(&id[6])), - static_cast(id[8]), static_cast(id[9]), - static_cast(id[10])), static_cast(id[11]), static_cast(id[12]), static_cast(id)), static_cast(id[14]), static_cast(id[15])); -#endif - } - /// /// Convert string to lower-case character-by-character /// diff --git a/include/stdex/uuid.hpp b/include/stdex/uuid.hpp new file mode 100644 index 000000000..b53c0aefd --- /dev/null +++ b/include/stdex/uuid.hpp @@ -0,0 +1,72 @@ +/* + SPDX-License-Identifier: MIT + Copyright © 2016-2023 Amebis +*/ + +#pragma once + +#include "compat.hpp" +#include +#include +#if defined(_WIN32) +#include "windows.h" +#include +#else +#include +#include +#endif + +namespace stdex +{ + /// + /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. + /// + /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. + /// \param[in ] id GUID to write. + /// + inline void uuidtostr(_Out_writes_z_(39) char str[39], _In_ const uuid_t& id) + { + _Assume_(str); +#ifdef _WIN32 + _snprintf_s_l(str, 39, _TRUNCATE, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + id.Data1, + static_cast(id.Data2), + static_cast(id.Data3), + static_cast(id.Data4[0]), static_cast(id.Data4[1]), + static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); +#else + snprintf(str, 39, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + *reinterpret_cast(&id[0]), + static_cast(*reinterpret_cast(&id[4])), + static_cast(*reinterpret_cast(&id[6])), + static_cast(id[8]), static_cast(id[9]), + static_cast(id[10]), static_cast(id[11]), static_cast(id[12]), static_cast(id[13]), static_cast(id[14]), static_cast(id[15])); +#endif + } + + /// + /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. + /// + /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. + /// \param[in ] id GUID to write. + /// + inline void uuidtostr(_Out_writes_z_(39) wchar_t str[39], _In_ const uuid_t& id) + { + _Assume_(str); +#ifdef _WIN32 + _snwprintf_s_l(str, 39, _TRUNCATE, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + id.Data1, + static_cast(id.Data2), + static_cast(id.Data3), + static_cast(id.Data4[0]), static_cast(id.Data4[1]), + static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); +#else + swprintf(str, 39, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + *reinterpret_cast(&id[0]), + static_cast(*reinterpret_cast(&id[4])), + static_cast(*reinterpret_cast(&id[6])), + static_cast(id[8]), static_cast(id[9]), + static_cast(id[10]), static_cast(id[11]), static_cast(id[12]), static_cast(id[13]), static_cast(id[14]), static_cast(id[15])); +#endif + } +}