LLVM: lib/Support/Twine.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
11#include "llvm/Config/llvm-config.h"
15using namespace llvm;
16
18
19 if (LHSKind == StdStringKind && RHSKind == EmptyKind)
20 return *LHS.stdString;
21
22
23
24 if (LHSKind == FormatvObjectKind && RHSKind == EmptyKind)
25 return LHS.formatvObject->str();
26
27
30}
31
35}
36
38 if (isUnary()) {
39 switch (getLHSKind()) {
40 case CStringKind:
41
43 case StdStringKind: {
44 const std::string *str = LHS.stdString;
46 }
47 case StringLiteralKind:
48 return StringRef(LHS.ptrAndLength.ptr, LHS.ptrAndLength.length);
49 default:
50 break;
51 }
52 }
57}
58
60 NodeKind Kind) const {
61 switch (Kind) {
62 case Twine::NullKind: break;
63 case Twine::EmptyKind: break;
64 case Twine::TwineKind:
66 break;
67 case Twine::CStringKind:
69 break;
70 case Twine::StdStringKind:
72 break;
73 case Twine::PtrAndLengthKind:
74 case Twine::StringLiteralKind:
76 break;
77 case Twine::FormatvObjectKind:
79 break;
80 case Twine::CharKind:
82 break;
83 case Twine::DecUIKind:
85 break;
86 case Twine::DecIKind:
88 break;
89 case Twine::DecULKind:
91 break;
92 case Twine::DecLKind:
94 break;
95 case Twine::DecULLKind:
97 break;
98 case Twine::DecLLKind:
100 break;
101 case Twine::UHexKind:
103 break;
104 }
105}
106
109 switch (Kind) {
110 case Twine::NullKind:
111 OS << "null"; break;
112 case Twine::EmptyKind:
113 OS << "empty"; break;
114 case Twine::TwineKind:
115 OS << "rope:";
117 break;
118 case Twine::CStringKind:
119 OS << "cstring:\""
120 << Ptr.cString << "\"";
121 break;
122 case Twine::StdStringKind:
123 OS << "std:🧵\""
124 << Ptr.stdString << "\"";
125 break;
126 case Twine::PtrAndLengthKind:
127 OS << "ptrAndLength:\""
128 << StringRef(Ptr.ptrAndLength.ptr, Ptr.ptrAndLength.length) << "\"";
129 break;
130 case Twine::StringLiteralKind:
131 OS << "constexprPtrAndLength:\""
132 << StringRef(Ptr.ptrAndLength.ptr, Ptr.ptrAndLength.length) << "\"";
133 break;
134 case Twine::FormatvObjectKind:
135 OS << "formatv:\"" << *Ptr.formatvObject << "\"";
136 break;
137 case Twine::CharKind:
138 OS << "char:\"" << Ptr.character << "\"";
139 break;
140 case Twine::DecUIKind:
141 OS << "decUI:\"" << Ptr.decUI << "\"";
142 break;
143 case Twine::DecIKind:
144 OS << "decI:\"" << Ptr.decI << "\"";
145 break;
146 case Twine::DecULKind:
147 OS << "decUL:\"" << *Ptr.decUL << "\"";
148 break;
149 case Twine::DecLKind:
150 OS << "decL:\"" << *Ptr.decL << "\"";
151 break;
152 case Twine::DecULLKind:
153 OS << "decULL:\"" << *Ptr.decULL << "\"";
154 break;
155 case Twine::DecLLKind:
156 OS << "decLL:\"" << *Ptr.decLL << "\"";
157 break;
158 case Twine::UHexKind:
159 OS << "uhex:\"" << Ptr.uHex << "\"";
160 break;
161 }
162}
163
165 printOneChild(OS, LHS, getLHSKind());
166 printOneChild(OS, RHS, getRHSKind());
167}
168
170 OS << "(Twine ";
171 printOneChildRepr(OS, LHS, getLHSKind());
172 OS << " ";
173 printOneChildRepr(OS, RHS, getRHSKind());
174 OS << ")";
175}
176
177#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
180}
181
184}
185#endif
#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.