ports/devel/py-rapidfuzz/files/patch-src_rapidfuzz_utils.hpp
Dimitry Andric 3db7d7ff7d devel/py-rapidfuzz: fix build with libc++ 19
As noted in the libc++ 19 release notes [1], std::char_traits<> is now
only provided for char, char8_t, char16_t, char32_t and wchar_t, and any
instantiation for other types will fail.

This causes devel/py-rapidfuzz to fail to compile with clang 19 and
libc++ 19, resulting in errors similar to:

  /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<unsigned char>'
    820 |   static_assert(is_same<_CharT, typename traits_type::char_type>::value,
        |                                          ^
  /wrkdirs/usr/ports/devel/rapidfuzz-cpp/work/rapidfuzz-cpp-3.0.5/test/distance/examples/ocr.cpp:3:28: note: in instantiation of template class 'std::basic_string<unsigned char>' requested here
      3 | std::basic_string<uint8_t> ocr_example1 = {
        |                            ^
  /usr/include/c++/v1/__fwd/string.h:23:29: note: template is declared here
     23 | struct _LIBCPP_TEMPLATE_VIS char_traits;
        |                             ^

Once the fix for devel/rapidfuzz-cpp is in, this port only needs a few
replacements of `std::basic_string` with `std::vector`.

[1] https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals

PR:		281194
Approved by:	yuri (maintainer)
MFH:		2024Q3
2024-09-02 09:46:48 +02:00

25 lines
660 B
C++

--- src/rapidfuzz/utils.hpp.orig 2024-08-06 20:55:30 UTC
+++ src/rapidfuzz/utils.hpp
@@ -10,7 +10,7 @@
#include <cwctype>
#include <limits>
#include <stdint.h>
-#include <string>
+#include <vector>
uint32_t UnicodeDefaultProcess(uint32_t ch);
@@ -80,11 +80,9 @@ template <typename CharT>
}
template <typename CharT>
-std::basic_string<CharT> default_process(std::basic_string<CharT> s)
+std::vector<CharT> default_process(std::vector<CharT> str)
{
- std::basic_string<CharT> str(s);
-
- int64_t len = default_process(&str[0], str.size());
+ int64_t len = default_process(str.data(), str.size());
str.resize(len);
return str;
}