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:

65 Ptr.twine->print(OS);

66 break;

67 case Twine::CStringKind:

68 OS << Ptr.cString;

69 break;

70 case Twine::StdStringKind:

71 OS << *Ptr.stdString;

72 break;

73 case Twine::PtrAndLengthKind:

74 case Twine::StringLiteralKind:

76 break;

77 case Twine::FormatvObjectKind:

78 OS << *Ptr.formatvObject;

79 break;

80 case Twine::CharKind:

81 OS << Ptr.character;

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:

96 OS << *Ptr.decULL;

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:";

116 Ptr.twine->printRepr(OS);

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.