From 0a2363704e426b4e3112a63aeaba973cca6666ad Mon Sep 17 00:00:00 2001 From: cqwrteur <100043421+trcrsired@users.noreply.github.com> Date: Sun, 9 Feb 2025 21:23:08 -0500 Subject: [PATCH] Fix warnings caused by macromodel (#1074) * add null_terminated_c_str_v for a null terminated string literal * fix __builtin_addressof(::fast_io::char_literal_v * string_view uses null_terminated_c_str_v * Fix warnings caused by macromodel Why do you not compile code with warnings enabled? this is so painful --------- Co-authored-by: hearyldp --- include/fast_io_core_impl/literals/literal.h | 32 +++++++++++++++++++ include/fast_io_dsal/impl/cstring_view.h | 4 +-- .../fast_io_hosted/filesystem/win32_9xa_at.h | 4 +-- .../process/ipc/win32/named_pipe_win32.h | 8 +++-- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/include/fast_io_core_impl/literals/literal.h b/include/fast_io_core_impl/literals/literal.h index cfcaf2e38..4ac8a837b 100644 --- a/include/fast_io_core_impl/literals/literal.h +++ b/include/fast_io_core_impl/literals/literal.h @@ -22,6 +22,38 @@ inline constexpr ch_type char_literal(char8_t ch) noexcept template inline constexpr ch_type char_literal_v{char_literal(ch)}; +template <::std::integral ch_type> +inline constexpr ch_type const *null_terminated_c_str() noexcept +{ + if constexpr (::std::same_as) + { + return ""; + } + else if constexpr (::std::same_as) + { + return L""; + } + else if constexpr (::std::same_as) + { + return u8""; + } + else if constexpr (::std::same_as) + { + return u""; + } + else if constexpr (::std::same_as) + { + return U""; + } + else + { + return __builtin_addressof(::fast_io::char_literal_v<0, ch_type>); + } +} + +template <::std::integral ch_type> +inline constexpr ch_type const *null_terminated_c_str_v{::fast_io::null_terminated_c_str()}; + template <::std::integral ch_type> #if __has_cpp_attribute(__gnu__::__always_inline__) [[__gnu__::__always_inline__]] diff --git a/include/fast_io_dsal/impl/cstring_view.h b/include/fast_io_dsal/impl/cstring_view.h index 6b74c9159..78b4b0e2a 100644 --- a/include/fast_io_dsal/impl/cstring_view.h +++ b/include/fast_io_dsal/impl/cstring_view.h @@ -30,11 +30,11 @@ class basic_cstring_view : private ::fast_io::containers::basic_string_view), 0) + : string_view_type(::fast_io::null_terminated_c_str_v, 0) {} inline constexpr void clear() noexcept { - this->ptr = __builtin_addressof(::fast_io::char_literal_v<0, char_type>); + this->ptr = ::fast_io::null_terminated_c_str_v; this->n = 0; } inline constexpr basic_cstring_view(::std::nullptr_t) = delete; diff --git a/include/fast_io_hosted/filesystem/win32_9xa_at.h b/include/fast_io_hosted/filesystem/win32_9xa_at.h index d02b86fd9..074f66fdc 100644 --- a/include/fast_io_hosted/filesystem/win32_9xa_at.h +++ b/include/fast_io_hosted/filesystem/win32_9xa_at.h @@ -364,9 +364,9 @@ inline auto win32_9xa_22_api_dispatcher(::fast_io::win32_9xa_dir_handle const &o } } -template <::fast_io::details::posix_api_12 dsp, typename... Args> +template <::fast_io::details::posix_api_12 dsp> inline auto win32_9xa_12_api_dispatcher(char8_t const *oldpath_c_str, ::std::size_t oldpath_size, - ::fast_io::win32_9xa_dir_handle const &newdirhd, char8_t const *newpath_c_str, ::std::size_t newpath_size, Args... args) + ::fast_io::win32_9xa_dir_handle const &newdirhd, char8_t const *newpath_c_str, ::std::size_t newpath_size) { if constexpr (dsp == ::fast_io::details::posix_api_12::symlinkat) { diff --git a/include/fast_io_hosted/process/ipc/win32/named_pipe_win32.h b/include/fast_io_hosted/process/ipc/win32/named_pipe_win32.h index 2d56167f5..403d351d5 100644 --- a/include/fast_io_hosted/process/ipc/win32/named_pipe_win32.h +++ b/include/fast_io_hosted/process/ipc/win32/named_pipe_win32.h @@ -58,8 +58,9 @@ inline void *win32_family_create_named_pipe_ipc_server_impl(win32_named_pipe_cha { // check filename using family_internal_char_type = win32_named_pipe_internal_char_type; +#if 0 using family_internal_str = win32_named_pipe_internal_str; - +#endif using family_internal_char_type_const_may_alias_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) [[__gnu__::__may_alias__]] @@ -252,8 +253,9 @@ inline void *win32_family_ipc_named_pipe_client_connect_impl(win32_named_pipe_ch // check filename using family_char_type = win32_named_pipe_char_type; using family_internal_char_type = win32_named_pipe_internal_char_type; +#if 0 using family_internal_str = win32_named_pipe_internal_str; - +#endif using family_internal_char_type_const_may_alias_ptr #if __has_cpp_attribute(__gnu__::__may_alias__) [[__gnu__::__may_alias__]] @@ -347,7 +349,7 @@ inline void *win32_family_ipc_named_pipe_client_connect_impl(win32_named_pipe_ch ::fast_io::open_mode om{}; if ((mode & ::fast_io::ipc_mode::in) == ::fast_io::ipc_mode::in) { - om |= ::fast_io::open_mode::in; + om |= ::fast_io::open_mode::in; } if ((mode & ::fast_io::ipc_mode::out) == ::fast_io::ipc_mode::out) {