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.
LLVM_ABI std::string str() const
Return the twine contents as a std::string.
LLVM_ABI void print(raw_ostream &OS) const
Write the concatenated string represented by this twine to the stream OS.
LLVM_ABI StringRef toNullTerminatedStringRef(SmallVectorImpl< char > &Out) const
This returns the twine as a single null terminated StringRef if it can be represented as such.
LLVM_DUMP_METHOD void dump() const
Dump the concatenated string represented by this twine to stderr.
LLVM_ABI 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.
LLVM_ABI void toVector(SmallVectorImpl< char > &Out) const
Append the concatenated string into the given SmallString or SmallVector.
LLVM_DUMP_METHOD 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.
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Determine the kind of a node from its type.