LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
StringPool.cpp
Go to the documentation of this file.
1 //===-- StringPool.cpp - Interned string pool -----------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the StringPool class.
11 //
12 //===----------------------------------------------------------------------===//
13 
15 #include "llvm/ADT/StringRef.h"
16 
17 using namespace llvm;
18 
20 
22  assert(InternTable.empty() && "PooledStringPtr leaked!");
23 }
24 
26  table_t::iterator I = InternTable.find(Key);
27  if (I != InternTable.end())
28  return PooledStringPtr(&*I);
29 
30  entry_t *S = entry_t::Create(Key.begin(), Key.end());
31  S->getValue().Pool = this;
32  InternTable.insert(S);
33 
34  return PooledStringPtr(S);
35 }
friend class PooledStringPtr
Definition: StringPool.h:54
const ValueTy & getValue() const
Definition: StringMap.h:132
PooledStringPtr intern(StringRef Str)
Definition: StringPool.cpp:25
bool empty() const
Definition: StringMap.h:103
iterator find(StringRef Key)
Definition: StringMap.h:291
iterator begin() const
Definition: StringRef.h:97
static StringMapEntry * Create(const char *KeyStart, const char *KeyEnd, AllocatorTy &Allocator, InitType InitVal)
Definition: StringMap.h:147
bool insert(MapEntryTy *KeyValue)
Definition: StringMap.h:323
#define I(x, y, z)
Definition: MD5.cpp:54
iterator end() const
Definition: StringRef.h:99
iterator end()
Definition: StringMap.h:281