diff options
author | Louis Dionne <ldionne.2@gmail.com> | 2021-08-23 15:32:36 -0400 |
---|---|---|
committer | Louis Dionne <ldionne.2@gmail.com> | 2021-10-12 06:08:23 -0400 |
commit | f4c1258d5633fcf06385ff3fd1f4bf57ab971964 (patch) | |
tree | 8ecc9ec5f12c67f859f411c3d04a6a1e6ec3c228 /libcxx/src/algorithm.cpp | |
parent | c6828e0cea73f89a79db008da0e902c790cdee88 (diff) | |
download | llvm-f4c1258d5633fcf06385ff3fd1f4bf57ab971964.tar.gz |
[libc++] Add an option to disable wide character support in libc++
Some embedded platforms do not wish to support the C library functionality
for handling wchar_t because they have no use for it. It makes sense for
libc++ to work properly on those platforms, so this commit adds a carve-out
of functionality for wchar_t.
Unfortunately, unlike some other carve-outs (e.g. random device), this
patch touches several parts of the library. However, despite the wide
impact of this patch, I still think it is important to support this
configuration since it makes it much simpler to port libc++ to some
embedded platforms.
Differential Revision: https://reviews.llvm.org/D111265
Diffstat (limited to 'libcxx/src/algorithm.cpp')
-rw-r--r-- | libcxx/src/algorithm.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libcxx/src/algorithm.cpp b/libcxx/src/algorithm.cpp index 9f11dc38b15b..16221f4b7515 100644 --- a/libcxx/src/algorithm.cpp +++ b/libcxx/src/algorithm.cpp @@ -11,7 +11,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD template void __sort<__less<char>&, char*>(char*, char*, __less<char>&); +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&); +#endif template void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&); template void __sort<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&); template void __sort<__less<short>&, short*>(short*, short*, __less<short>&); @@ -27,7 +29,9 @@ template void __sort<__less<double>&, double*>(double*, double*, __less<double>& template void __sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&); template bool __insertion_sort_incomplete<__less<char>&, char*>(char*, char*, __less<char>&); +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template bool __insertion_sort_incomplete<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&); +#endif template bool __insertion_sort_incomplete<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&); template bool __insertion_sort_incomplete<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&); template bool __insertion_sort_incomplete<__less<short>&, short*>(short*, short*, __less<short>&); |