[PATCH] D148556: [libcxxabi][demangle] create helper for std::string_view::starts_with

Nick Desaulniers via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 17 11:43:19 PDT 2023


nickdesaulniers created this revision.
nickdesaulniers added reviewers: MaskRay, erichkeane, chapuni.
Herald added a project: All.
nickdesaulniers requested review of this revision.
Herald added projects: libc++abi, LLVM.
Herald added subscribers: llvm-commits, libcxx-commits.
Herald added a reviewer: libc++abi.

This was added to ADT in
https://reviews.llvm.org/D148367
then reverted in
https://reviews.llvm.org/D148547
because it was a layering violation pointed out in
https://reviews.llvm.org/D148384#4270356.

Modify this in libcxxabi, then copy this over to llvm.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D148556

Files:
  libcxxabi/src/demangle/StringViewExtras.h
  libcxxabi/src/demangle/cp-to-llvm.sh
  llvm/include/llvm/Demangle/StringViewExtras.h


Index: llvm/include/llvm/Demangle/StringViewExtras.h
===================================================================
--- /dev/null
+++ llvm/include/llvm/Demangle/StringViewExtras.h
@@ -0,0 +1,32 @@
+//===--- StringViewExtras.h ----------*- mode:c++;eval:(read-only-mode) -*-===//
+//       Do not edit! See README.txt.
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// There are two copies of this file in the source tree.  The one under
+// libcxxabi is the original and the one under llvm is the copy.  Use
+// cp-to-llvm.sh to update the copy.  See README.txt for more details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef DEMANGLE_STRINGVIEW_H
+#define DEMANGLE_STRINGVIEW_H
+
+#include <string_view>
+
+DEMANGLE_NAMESPACE_BEGIN
+
+inline bool starts_with(std::string_view self, char C) {
+  return !self.empty() && self.front() == C;
+}
+
+inline bool starts_with(std::string_view haystack, std::string_view needle) {
+  return haystack.substr(0, needle.size()) == needle;
+}
+
+DEMANGLE_NAMESPACE_END
+
+#endif
Index: libcxxabi/src/demangle/cp-to-llvm.sh
===================================================================
--- libcxxabi/src/demangle/cp-to-llvm.sh
+++ libcxxabi/src/demangle/cp-to-llvm.sh
@@ -6,7 +6,7 @@
 set -e
 
 cd $(dirname $0)
-HDRS="ItaniumDemangle.h ItaniumNodes.def StringView.h Utility.h"
+HDRS="ItaniumDemangle.h ItaniumNodes.def StringView.h StringViewExtras.h Utility.h"
 LLVM_DEMANGLE_DIR=$1
 
 if [[ -z "$LLVM_DEMANGLE_DIR" ]]; then
Index: libcxxabi/src/demangle/StringViewExtras.h
===================================================================
--- /dev/null
+++ libcxxabi/src/demangle/StringViewExtras.h
@@ -0,0 +1,32 @@
+//===--- StringViewExtras.h -------------------------------------*- 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
+//
+//===----------------------------------------------------------------------===//
+//
+// There are two copies of this file in the source tree.  The one under
+// libcxxabi is the original and the one under llvm is the copy.  Use
+// cp-to-llvm.sh to update the copy.  See README.txt for more details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef DEMANGLE_STRINGVIEW_H
+#define DEMANGLE_STRINGVIEW_H
+
+#include <string_view>
+
+DEMANGLE_NAMESPACE_BEGIN
+
+inline bool starts_with(std::string_view self, char C) {
+  return !self.empty() && self.front() == C;
+}
+
+inline bool starts_with(std::string_view haystack, std::string_view needle) {
+  return haystack.substr(0, needle.size()) == needle;
+}
+
+DEMANGLE_NAMESPACE_END
+
+#endif


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148556.514342.patch
Type: text/x-patch
Size: 3052 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230417/93b0daff/attachment-0001.bin>


More information about the llvm-commits mailing list