From 80d79fca53ad6c06ca23fa19f51136ca8b4cae11 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Wed, 17 Dec 2025 03:37:29 +0000 Subject: [PATCH] Update C++ version of wapp_str8_node_from_str8 --- src/base/strings/str8/str8.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/base/strings/str8/str8.h b/src/base/strings/str8/str8.h index 52f84ca..269b485 100644 --- a/src/base/strings/str8/str8.h +++ b/src/base/strings/str8/str8.h @@ -119,12 +119,25 @@ Str8 *wapp_str8_join(const Allocator *allocator, const Str8List *list, Str8R /** * Str8 list utilities */ +u64 wapp_str8_list_total_size(const Str8List *list); + #ifdef WAPP_PLATFORM_CPP +END_C_LINKAGE + +#include + +template +constexpr bool is_lvalue(T&&) { + return std::is_lvalue_reference{}; +} + #define wapp_str8_node_from_cstr(STRING) wapp_dbl_list_node(Str8, Str8Node, [&]() { \ wapp_persist Str8 str = wapp_str8_lit(STRING); \ return &str; \ }()) #define wapp_str8_node_from_str8(STRING) wapp_dbl_list_node(Str8, Str8Node, [&]() { \ + if (is_lvalue(STRING)) { return &STRING; } \ + \ wapp_persist Str8 str = STRING; \ return &str; \ }()) @@ -132,10 +145,5 @@ Str8 *wapp_str8_join(const Allocator *allocator, const Str8List *list, Str8R #define wapp_str8_node_from_cstr(STRING) wapp_dbl_list_node(Str8, Str8Node, &wapp_str8_lit(STRING)) #define wapp_str8_node_from_str8(STRING) wapp_dbl_list_node(Str8, Str8Node, &(STRING)) #endif // !WAPP_PLATFORM_CPP -u64 wapp_str8_list_total_size(const Str8List *list); - -#ifdef WAPP_PLATFORM_CPP -END_C_LINKAGE -#endif // !WAPP_PLATFORM_CPP #endif // !STR8_H