diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-03-03 19:13:20 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-03-03 19:13:20 +0000 |
| commit | dbe7f3bf2efa8fa4f8a9a8d75355f9564a018044 (patch) | |
| tree | 8dffa50d908184edb17959165e67b4756bc137cd /llvm/utils/TableGen/StringToOffsetTable.h | |
| parent | 7a3b1d9757dbbe4cec5d2d86533a842768c51fad (diff) | |
| download | bcm5719-llvm-dbe7f3bf2efa8fa4f8a9a8d75355f9564a018044.tar.gz bcm5719-llvm-dbe7f3bf2efa8fa4f8a9a8d75355f9564a018044.zip | |
StringToOffsetTable: Allow uniquing the first element, add an option to skip appending a terminating null.
llvm-svn: 151983
Diffstat (limited to 'llvm/utils/TableGen/StringToOffsetTable.h')
| -rw-r--r-- | llvm/utils/TableGen/StringToOffsetTable.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/utils/TableGen/StringToOffsetTable.h b/llvm/utils/TableGen/StringToOffsetTable.h index ac9422c5d72..803f5bd5cf0 100644 --- a/llvm/utils/TableGen/StringToOffsetTable.h +++ b/llvm/utils/TableGen/StringToOffsetTable.h @@ -26,16 +26,17 @@ class StringToOffsetTable { std::string AggregateString; public: - unsigned GetOrAddStringOffset(StringRef Str) { - unsigned &Entry = StringOffset[Str]; - if (Entry == 0) { + unsigned GetOrAddStringOffset(StringRef Str, bool appendZero = true) { + StringMapEntry<unsigned> &Entry = StringOffset.GetOrCreateValue(Str, -1U); + if (Entry.getValue() == -1U) { // Add the string to the aggregate if this is the first time found. - Entry = AggregateString.size(); + Entry.setValue(AggregateString.size()); AggregateString.append(Str.begin(), Str.end()); - AggregateString += '\0'; + if (appendZero) + AggregateString += '\0'; } - return Entry; + return Entry.getValue(); } void EmitString(raw_ostream &O) { |

