1193323Sed//===-- StringPool.cpp - Interned string pool -----------------------------===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This file implements the StringPool class. 11193323Sed// 12193323Sed//===----------------------------------------------------------------------===// 13193323Sed 14193323Sed#include "llvm/Support/StringPool.h" 15198090Srdivacky#include "llvm/ADT/StringRef.h" 16193323Sed 17193323Sedusing namespace llvm; 18193323Sed 19193323SedStringPool::StringPool() {} 20193323Sed 21193323SedStringPool::~StringPool() { 22193323Sed assert(InternTable.empty() && "PooledStringPtr leaked!"); 23193323Sed} 24193323Sed 25210299SedPooledStringPtr StringPool::intern(StringRef Key) { 26198090Srdivacky table_t::iterator I = InternTable.find(Key); 27193323Sed if (I != InternTable.end()) 28193323Sed return PooledStringPtr(&*I); 29193323Sed 30198090Srdivacky entry_t *S = entry_t::Create(Key.begin(), Key.end()); 31193323Sed S->getValue().Pool = this; 32193323Sed InternTable.insert(S); 33193323Sed 34193323Sed return PooledStringPtr(S); 35193323Sed} 36