https://github.com/bassiounix updated https://github.com/llvm/llvm-project/pull/174820
>From 8de54d6d5490c47217791ad22ad39d3fefb16ccc Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Wed, 7 Jan 2026 20:08:51 +0200 Subject: [PATCH 1/3] [libc][wctype] Upstream enumerate header from PtrHash-cc prototype to LLVM libc --- .../wctype/conversion/utils/CMakeLists.txt | 10 +++ .../wctype/conversion/utils/enumerate.hpp | 66 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 libc/src/__support/wctype/conversion/utils/enumerate.hpp diff --git a/libc/src/__support/wctype/conversion/utils/CMakeLists.txt b/libc/src/__support/wctype/conversion/utils/CMakeLists.txt index da0b76a345a30..e7bd43e72e380 100644 --- a/libc/src/__support/wctype/conversion/utils/CMakeLists.txt +++ b/libc/src/__support/wctype/conversion/utils/CMakeLists.txt @@ -1,3 +1,13 @@ +add_header_library( + enumerate + HDRS + enumerate.h + DEPENDS + libc.hdr.types.size_t + libc.src.__support.CPP.tuple + libc.src.__support.common +) + add_header_library( slice HDRS diff --git a/libc/src/__support/wctype/conversion/utils/enumerate.hpp b/libc/src/__support/wctype/conversion/utils/enumerate.hpp new file mode 100644 index 0000000000000..74f6a568c935f --- /dev/null +++ b/libc/src/__support/wctype/conversion/utils/enumerate.hpp @@ -0,0 +1,66 @@ +//===-- Internal utils for wctype conversion code - enumerate ---*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP +#define LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP + +#include "hdr/types/size_t.h" +#include "src/__support/CPP/tuple.h" +#include "src/__support/common.h" + +namespace LIBC_NAMESPACE_DECL { + +namespace internal_wctype_conversion_utils { + +namespace { + +template <typename Iterable> struct Enumerate { + Iterable &iterable; + + struct Iterator { + size_t index; + decltype(iterable.begin()) it; + + LIBC_INLINE constexpr auto operator*() const { + return cpp::tuple<size_t, decltype(*it)>(index, *it); + } + + LIBC_INLINE constexpr Iterator &operator++() { + ++index; + ++it; + return *this; + } + + LIBC_INLINE constexpr bool operator!=(const Iterator &other) const { + return it != other.it; + } + }; + + LIBC_INLINE constexpr Iterator begin() const { return {0, iterable.begin()}; } + + LIBC_INLINE constexpr Iterator end() const { return {0, iterable.end()}; } +}; + +} // namespace + +template <typename Iterable> +LIBC_INLINE static constexpr Enumerate<Iterable> enumerate(Iterable &iterable) { + return Enumerate<Iterable>{iterable}; +} + +template <typename Iterable> +LIBC_INLINE static constexpr Enumerate<Iterable> +enumerate(Iterable &&iterable) { + return Enumerate<Iterable>{iterable}; +} + +} // namespace internal_wctype_conversion_utils + +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP >From 3b8a8430d36bdc50d5b6a2baa51147b4c3362265 Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Wed, 7 Jan 2026 20:25:05 +0200 Subject: [PATCH 2/3] fix nesting --- libc/src/__support/wctype/conversion/utils/enumerate.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libc/src/__support/wctype/conversion/utils/enumerate.hpp b/libc/src/__support/wctype/conversion/utils/enumerate.hpp index 74f6a568c935f..9d65d064e8784 100644 --- a/libc/src/__support/wctype/conversion/utils/enumerate.hpp +++ b/libc/src/__support/wctype/conversion/utils/enumerate.hpp @@ -15,7 +15,9 @@ namespace LIBC_NAMESPACE_DECL { -namespace internal_wctype_conversion_utils { +namespace wctype_internal { + +namespace conversion_utils { namespace { @@ -59,7 +61,9 @@ enumerate(Iterable &&iterable) { return Enumerate<Iterable>{iterable}; } -} // namespace internal_wctype_conversion_utils +} // namespace conversion_utils + +} // namespace wctype_internal } // namespace LIBC_NAMESPACE_DECL >From 7d82867d1efa9ee5a261d01923bb6314ab1af26b Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Wed, 7 Jan 2026 20:34:39 +0200 Subject: [PATCH 3/3] fix extension --- .../wctype/conversion/utils/{enumerate.hpp => enumerate.h} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename libc/src/__support/wctype/conversion/utils/{enumerate.hpp => enumerate.h} (98%) diff --git a/libc/src/__support/wctype/conversion/utils/enumerate.hpp b/libc/src/__support/wctype/conversion/utils/enumerate.h similarity index 98% rename from libc/src/__support/wctype/conversion/utils/enumerate.hpp rename to libc/src/__support/wctype/conversion/utils/enumerate.h index 9d65d064e8784..dd4d56e483268 100644 --- a/libc/src/__support/wctype/conversion/utils/enumerate.hpp +++ b/libc/src/__support/wctype/conversion/utils/enumerate.h @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP -#define LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP +#ifndef LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_H +#define LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_H #include "hdr/types/size_t.h" #include "src/__support/CPP/tuple.h" @@ -67,4 +67,4 @@ enumerate(Iterable &&iterable) { } // namespace LIBC_NAMESPACE_DECL -#endif // LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_HPP +#endif // LLVM_LIBC_SRC___SUPPORT_WCTYPE_CONVERSION_UTILS_ENUMERATE_H _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
