b9a7e30aff
This commit merges the latest LLVM sources from the vendor space. It also updates the build glue to match the new sources. Clang's version number is changed to match LLVM's, which means /usr/include/clang/2.0 has been renamed to /usr/include/clang/2.8. Obtained from: projects/clangbsd
36 lines
997 B
C++
36 lines
997 B
C++
//===-- StringPool.cpp - Interned string pool -----------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the StringPool class.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Support/StringPool.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
using namespace llvm;
|
|
|
|
StringPool::StringPool() {}
|
|
|
|
StringPool::~StringPool() {
|
|
assert(InternTable.empty() && "PooledStringPtr leaked!");
|
|
}
|
|
|
|
PooledStringPtr StringPool::intern(StringRef Key) {
|
|
table_t::iterator I = InternTable.find(Key);
|
|
if (I != InternTable.end())
|
|
return PooledStringPtr(&*I);
|
|
|
|
entry_t *S = entry_t::Create(Key.begin(), Key.end());
|
|
S->getValue().Pool = this;
|
|
InternTable.insert(S);
|
|
|
|
return PooledStringPtr(S);
|
|
}
|