11#include "llvm/Config/llvm-config.h"
19 if (LHSKind == StdStringKind && RHSKind == EmptyKind)
20 return *LHS.stdString;
24 if (LHSKind == FormatvObjectKind && RHSKind == EmptyKind)
25 return LHS.formatvObject->str();
39 switch (getLHSKind()) {
44 const std::string *
str = LHS.stdString;
47 case StringLiteralKind:
48 return StringRef(LHS.ptrAndLength.ptr, LHS.ptrAndLength.length);
60 NodeKind Kind)
const {
62 case Twine::NullKind:
break;
63 case Twine::EmptyKind:
break;
64 case Twine::TwineKind:
67 case Twine::CStringKind:
70 case Twine::StdStringKind:
73 case Twine::PtrAndLengthKind:
74 case Twine::StringLiteralKind:
77 case Twine::FormatvObjectKind:
78 OS << *
Ptr.formatvObject;
83 case Twine::DecUIKind:
89 case Twine::DecULKind:
95 case Twine::DecULLKind:
98 case Twine::DecLLKind:
101 case Twine::UHexKind:
110 case Twine::NullKind:
112 case Twine::EmptyKind:
113 OS <<
"empty";
break;
114 case Twine::TwineKind:
116 Ptr.twine->printRepr(
OS);
118 case Twine::CStringKind:
120 <<
Ptr.cString <<
"\"";
122 case Twine::StdStringKind:
123 OS <<
"std::string:\""
124 <<
Ptr.stdString <<
"\"";
126 case Twine::PtrAndLengthKind:
127 OS <<
"ptrAndLength:\""
130 case Twine::StringLiteralKind:
131 OS <<
"constexprPtrAndLength:\""
134 case Twine::FormatvObjectKind:
135 OS <<
"formatv:\"" << *
Ptr.formatvObject <<
"\"";
137 case Twine::CharKind:
138 OS <<
"char:\"" <<
Ptr.character <<
"\"";
140 case Twine::DecUIKind:
141 OS <<
"decUI:\"" <<
Ptr.decUI <<
"\"";
143 case Twine::DecIKind:
144 OS <<
"decI:\"" <<
Ptr.decI <<
"\"";
146 case Twine::DecULKind:
147 OS <<
"decUL:\"" << *
Ptr.decUL <<
"\"";
149 case Twine::DecLKind:
150 OS <<
"decL:\"" << *
Ptr.decL <<
"\"";
152 case Twine::DecULLKind:
153 OS <<
"decULL:\"" << *
Ptr.decULL <<
"\"";
155 case Twine::DecLLKind:
156 OS <<
"decLL:\"" << *
Ptr.decLL <<
"\"";
158 case Twine::UHexKind:
159 OS <<
"uhex:\"" <<
Ptr.uHex <<
"\"";
165 printOneChild(
OS, LHS, getLHSKind());
166 printOneChild(
OS, RHS, getRHSKind());
171 printOneChildRepr(
OS, LHS, getLHSKind());
173 printOneChildRepr(
OS, RHS, getRHSKind());
177#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds.
This file defines the SmallString class.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void push_back(const T &Elt)
pointer data()
Return a pointer to the vector's buffer, even if empty().
StringRef - Represent a constant reference to a string, i.e.
std::string str() const
str - Get the contents as an std::string.
std::string str() const
Return the twine contents as a std::string.
void print(raw_ostream &OS) const
Write the concatenated string represented by this twine to the stream OS.
StringRef toNullTerminatedStringRef(SmallVectorImpl< char > &Out) const
This returns the twine as a single null terminated StringRef if it can be represented as such.
void dump() const
Dump the concatenated string represented by this twine to stderr.
void printRepr(raw_ostream &OS) const
Write the representation of this twine to the stream OS.
StringRef toStringRef(SmallVectorImpl< char > &Out) const
This returns the twine as a single StringRef if it can be represented as such.
void toVector(SmallVectorImpl< char > &Out) const
Append the concatenated string into the given SmallString or SmallVector.
void dumpRepr() const
Dump the representation of this twine to stderr.
This class implements an extremely fast bulk output stream that can only output to a stream.
raw_ostream & write_hex(unsigned long long N)
Output N in hexadecimal, without any prefix or padding.
A raw_ostream that writes to an SmallVector or SmallString.
This is an optimization pass for GlobalISel generic memory operations.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Determine the kind of a node from its type.