libc/src/__support/CPP/Bitset.h
libc/src/__support/CPP/Functional.h
libc/src/__support/CPP/Limits.h
-libc/src/__support/CPP/StringView.h
libc/src/__support/CPP/Utility.h
libc/src/__support/CPP/vector.h
libc/src/__support/File/file.cpp
libcxx/src/ryu/d2s.cpp
libcxx/src/ryu/f2s.cpp
libcxxabi/src/cxa_guard_impl.h
-libcxxabi/src/demangle/StringView.h
libcxxabi/src/demangle/Utility.h
libunwind/src/cet_unwind.h
lld/COFF/CallGraphSort.cpp
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
+++ /dev/null
-//===--- StringView.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
-//
-//===----------------------------------------------------------------------===//
-//
-// FIXME: Use std::string_view instead when we support C++17.
-// 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 <__cxxabi_config.h>
-#include <cassert>
-#include <cstring>
-
-#ifdef _LIBCXXABI_COMPILER_CLANG
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-template"
-#endif
-
-DEMANGLE_NAMESPACE_BEGIN
-
-class StringView {
- const char *First;
- const char *Last;
-
-public:
- static const size_t npos = ~size_t(0);
-
- template <size_t N>
- StringView(const char (&Str)[N]) : First(Str), Last(Str + N - 1) {}
- StringView(const char *First_, size_t Len)
- : First(First_), Last(First_ + Len) {}
- StringView(const char *Str) : First(Str), Last(Str + std::strlen(Str)) {}
- StringView() : First(nullptr), Last(nullptr) {}
-
- StringView substr(size_t Pos, size_t Len = npos) const {
- assert(Pos <= size());
- if (Len > size() - Pos)
- Len = size() - Pos;
- return StringView(begin() + Pos, Len);
- }
-
- size_t find(char C, size_t From = 0) const {
- // Avoid calling memchr with nullptr.
- if (From < size()) {
- // Just forward to memchr, which is faster than a hand-rolled loop.
- if (const void *P = ::memchr(First + From, C, size() - From))
- return size_t(static_cast<const char *>(P) - First);
- }
- return npos;
- }
-
- void remove_prefix(size_t N) {
- assert(size() >= N);
- First += N;
- }
- void remove_suffix(size_t N) {
- assert(size() >= N);
- Last -= N;
- }
-
- char front() const {
- assert(!empty());
- return *begin();
- }
-
- char back() const {
- assert(!empty());
- return *(end() - 1);
- }
-
- bool startsWith(char C) const { return !empty() && *begin() == C; }
-
- bool startsWith(StringView Str) const {
- if (Str.size() > size())
- return false;
- return std::strncmp(Str.begin(), begin(), Str.size()) == 0;
- }
-
- const char &operator[](size_t Idx) const { return *(begin() + Idx); }
-
- const char *begin() const { return First; }
- const char *end() const { return Last; }
- size_t size() const { return static_cast<size_t>(Last - First); }
- bool empty() const { return First == Last; }
-};
-
-inline bool operator==(const StringView &LHS, const StringView &RHS) {
- return LHS.size() == RHS.size() &&
- std::strncmp(LHS.begin(), RHS.begin(), LHS.size()) == 0;
-}
-
-DEMANGLE_NAMESPACE_END
-
-#ifdef _LIBCXXABI_COMPILER_CLANG
-#pragma clang diagnostic pop
-#endif
-
-#endif
set -e
cd $(dirname $0)
-HDRS="ItaniumDemangle.h ItaniumNodes.def StringView.h StringViewExtras.h Utility.h"
+HDRS="ItaniumDemangle.h ItaniumNodes.def StringViewExtras.h Utility.h"
LLVM_DEMANGLE_DIR=$1
if [[ -z "$LLVM_DEMANGLE_DIR" ]]; then
+++ /dev/null
-//===--- StringView.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
-//
-//===----------------------------------------------------------------------===//
-//
-// FIXME: Use std::string_view instead when we support C++17.
-// 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 <cassert>
-#include <cstring>
-
-DEMANGLE_NAMESPACE_BEGIN
-
-class StringView {
- const char *First;
- const char *Last;
-
-public:
- static const size_t npos = ~size_t(0);
-
- template <size_t N>
- StringView(const char (&Str)[N]) : First(Str), Last(Str + N - 1) {}
- StringView(const char *First_, size_t Len)
- : First(First_), Last(First_ + Len) {}
- StringView(const char *Str) : First(Str), Last(Str + std::strlen(Str)) {}
- StringView() : First(nullptr), Last(nullptr) {}
-
- StringView substr(size_t Pos, size_t Len = npos) const {
- assert(Pos <= size());
- if (Len > size() - Pos)
- Len = size() - Pos;
- return StringView(begin() + Pos, Len);
- }
-
- size_t find(char C, size_t From = 0) const {
- // Avoid calling memchr with nullptr.
- if (From < size()) {
- // Just forward to memchr, which is faster than a hand-rolled loop.
- if (const void *P = ::memchr(First + From, C, size() - From))
- return size_t(static_cast<const char *>(P) - First);
- }
- return npos;
- }
-
- void remove_prefix(size_t N) {
- assert(size() >= N);
- First += N;
- }
- void remove_suffix(size_t N) {
- assert(size() >= N);
- Last -= N;
- }
-
- char front() const {
- assert(!empty());
- return *begin();
- }
-
- char back() const {
- assert(!empty());
- return *(end() - 1);
- }
-
- bool startsWith(char C) const { return !empty() && *begin() == C; }
-
- bool startsWith(StringView Str) const {
- if (Str.size() > size())
- return false;
- return std::strncmp(Str.begin(), begin(), Str.size()) == 0;
- }
-
- const char &operator[](size_t Idx) const { return *(begin() + Idx); }
-
- const char *begin() const { return First; }
- const char *end() const { return Last; }
- size_t size() const { return static_cast<size_t>(Last - First); }
- bool empty() const { return First == Last; }
-};
-
-inline bool operator==(const StringView &LHS, const StringView &RHS) {
- return LHS.size() == RHS.size() &&
- std::strncmp(LHS.begin(), RHS.begin(), LHS.size()) == 0;
-}
-
-DEMANGLE_NAMESPACE_END
-
-#endif
OutputBufferTest.cpp
PartialDemangleTest.cpp
RustDemangleTest.cpp
- StringViewTest.cpp
)
+++ /dev/null
-//===- llvm/unittest/StringViewTest.cpp - StringView unit tests -----------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Demangle/StringView.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using llvm::itanium_demangle::StringView;
-
-namespace llvm {
-namespace itanium_demangle {
-
-std::ostream &operator<<(std::ostream &OS, const StringView &S) {
- return OS.write(S.begin(), S.size());
-}
-
-} // namespace itanium_demangle
-} // namespace llvm
-
-TEST(StringViewTest, EmptyInitializerList) {
- StringView S = {};
- EXPECT_TRUE(S.empty());
-
- S = {};
- EXPECT_TRUE(S.empty());
-}
-
-TEST(StringViewTest, Substr) {
- StringView S("abcdef");
-
- EXPECT_EQ("abcdef", S.substr(0));
- EXPECT_EQ("f", S.substr(5));
- EXPECT_EQ("", S.substr(6));
-
- EXPECT_EQ("", S.substr(0, 0));
- EXPECT_EQ("a", S.substr(0, 1));
- EXPECT_EQ("abcde", S.substr(0, 5));
- EXPECT_EQ("abcdef", S.substr(0, 6));
- EXPECT_EQ("abcdef", S.substr(0, 7));
-
- EXPECT_EQ("f", S.substr(5, 100));
- EXPECT_EQ("", S.substr(6, 100));
-}