16#ifndef DEMANGLE_STRINGVIEW_H
17#define DEMANGLE_STRINGVIEW_H
30 static const size_t npos = ~size_t(0);
33 StringView(
const char (&Str)[
N]) : First(Str), Last(Str +
N - 1) {}
35 : First(First_), Last(Last_) {}
37 : First(First_), Last(First_ + Len) {}
38 StringView(
const char *Str) : First(Str), Last(Str +
std::strlen(Str)) {}
43 if (Len >
size() - Pos)
53 return size_t(
static_cast<const char *
>(
P) - First);
102 if (Str.size() >
size())
104 return std::strncmp(Str.begin(),
begin(), Str.size()) == 0;
109 const char *
begin()
const {
return First; }
110 const char *
end()
const {
return Last; }
111 size_t size()
const {
return static_cast<size_t>(Last - First); }
112 bool empty()
const {
return First == Last; }
116 return LHS.size() ==
RHS.size() &&
117 std::strncmp(
LHS.begin(),
RHS.begin(),
LHS.size()) == 0;
BlockVerifier::State From
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
#define DEMANGLE_NAMESPACE_END
#define DEMANGLE_NAMESPACE_BEGIN
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool operator==(const StringView &LHS, const StringView &RHS)
StringView(const char *First_, const char *Last_)
StringView dropBack(size_t N=1) const
const char & operator[](size_t Idx) const
bool startsWith(char C) const
bool consumeFront(char C)
StringView(const char *Str)
StringView substr(size_t Pos, size_t Len=npos) const
StringView dropFront(size_t N=1) const
StringView(const char *First_, size_t Len)
bool consumeFront(StringView S)
StringView(const char(&Str)[N])
const char * begin() const
bool startsWith(StringView Str) const
size_t find(char C, size_t From=0) const