mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 07:31:28 +00:00
[libcxxabi][demangle] create helper for std::string_view::starts_with
Add C++ 20 style starts_with to replace StringView::startsWith in LLVMDemangle. Due to library layering (LLVMSupport depends on LLVMDemangle), we add the utility header under llvm/Demangle, instead of llvm/ADT or llvm/Support. Modify this in libcxxabi, then copy this over to llvm. Reviewed By: MaskRay, #libc_abi, phosek Differential Revision: https://reviews.llvm.org/D148556
This commit is contained in:
parent
328cfa840d
commit
691c4800be
@ -5251,6 +5251,7 @@ llvm/include/llvm/Debuginfod/DIFetcher.h
|
||||
llvm/include/llvm/Debuginfod/HTTPClient.h
|
||||
llvm/include/llvm/Demangle/Demangle.h
|
||||
llvm/include/llvm/Demangle/StringView.h
|
||||
llvm/include/llvm/Demangle/StringViewExtras.h
|
||||
llvm/include/llvm/Demangle/Utility.h
|
||||
llvm/include/llvm/DWARFLinker/DWARFLinker.h
|
||||
llvm/include/llvm/DWARFLinker/DWARFLinkerCompileUnit.h
|
||||
|
34
libcxxabi/src/demangle/StringViewExtras.h
Normal file
34
libcxxabi/src/demangle/StringViewExtras.h
Normal file
@ -0,0 +1,34 @@
|
||||
//===--- 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 "DemangleConfig.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
|
@ -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
|
||||
|
34
llvm/include/llvm/Demangle/StringViewExtras.h
Normal file
34
llvm/include/llvm/Demangle/StringViewExtras.h
Normal file
@ -0,0 +1,34 @@
|
||||
//===--- 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 "DemangleConfig.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
|
Loading…
Reference in New Issue
Block a user