summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/StringToOffsetTable.h
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-03-03 19:13:20 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-03-03 19:13:20 +0000
commitdbe7f3bf2efa8fa4f8a9a8d75355f9564a018044 (patch)
tree8dffa50d908184edb17959165e67b4756bc137cd /llvm/utils/TableGen/StringToOffsetTable.h
parent7a3b1d9757dbbe4cec5d2d86533a842768c51fad (diff)
downloadbcm5719-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.h13
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) {
OpenPOWER on IntegriCloud