10 #ifndef TBLGEN_STRING_TO_OFFSET_TABLE_H
11 #define TBLGEN_STRING_TO_OFFSET_TABLE_H
27 std::string AggregateString;
34 Entry.
setValue(AggregateString.size());
35 AggregateString.append(Str.
begin(), Str.
end());
37 AggregateString +=
'\0';
47 AggregateString = Str.
str();
50 unsigned CharsPrinted = 0;
51 for (
unsigned i = 0, e = AggregateString.size(); i != e; ++i) {
52 if (CharsPrinted > 70) {
56 O << AggregateString[i];
60 if (AggregateString[i] !=
'\\')
63 assert(i+1 < AggregateString.size() &&
"Incomplete escape sequence!");
64 if (
isdigit(AggregateString[i+1])) {
65 assert(
isdigit(AggregateString[i+2]) &&
66 isdigit(AggregateString[i+3]) &&
67 "Expected 3 digit octal escape!");
68 O << AggregateString[++i];
69 O << AggregateString[++i];
70 O << AggregateString[++i];
73 O << AggregateString[++i];
const ValueTy & getValue() const
void setValue(const ValueTy &V)
unsigned GetOrAddStringOffset(StringRef Str, bool appendZero=true)
void EmitString(raw_ostream &O)
raw_ostream & write_escaped(StringRef Str, bool UseHexEscapes=false)
StringRef str() const
Explicit conversion to StringRef.
MapEntryTy & GetOrCreateValue(StringRef Key, InitTy Val)