forked from OSchip/llvm-project
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
|
//===--- Index.cpp -----------------------------------------------*- C++-*-===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#include "Index.h"
|
||
|
|
||
|
#include "llvm/Support/SHA1.h"
|
||
|
|
||
|
namespace clang {
|
||
|
namespace clangd {
|
||
|
|
||
|
namespace {
|
||
|
ArrayRef<uint8_t> toArrayRef(StringRef S) {
|
||
|
return {reinterpret_cast<const uint8_t *>(S.data()), S.size()};
|
||
|
}
|
||
|
} // namespace
|
||
|
|
||
|
SymbolID::SymbolID(llvm::StringRef USR)
|
||
|
: HashValue(llvm::SHA1::hash(toArrayRef(USR))) {}
|
||
|
|
||
|
SymbolSlab::const_iterator SymbolSlab::begin() const {
|
||
|
return Symbols.begin();
|
||
|
}
|
||
|
|
||
|
SymbolSlab::const_iterator SymbolSlab::end() const {
|
||
|
return Symbols.end();
|
||
|
}
|
||
|
|
||
|
SymbolSlab::const_iterator SymbolSlab::find(const SymbolID& SymID) const {
|
||
|
return Symbols.find(SymID);
|
||
|
}
|
||
|
|
||
|
void SymbolSlab::freeze() {
|
||
|
Frozen = true;
|
||
|
}
|
||
|
|
||
|
void SymbolSlab::insert(Symbol S) {
|
||
|
assert(!Frozen &&
|
||
|
"Can't insert a symbol after the slab has been frozen!");
|
||
|
Symbols[S.ID] = std::move(S);
|
||
|
}
|
||
|
|
||
|
} // namespace clangd
|
||
|
} // namespace clang
|