xref: /llvm-project/clang-tools-extra/clang-include-fixer/InMemorySymbolIndex.cpp (revision b7ee03ffb8696c4d81a5a97c61cb2149c17e6573)
143356f56SNico Weber //===-- InMemorySymbolIndex.cpp--------------------------------------------===//
243356f56SNico Weber //
343356f56SNico Weber // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
443356f56SNico Weber // See https://llvm.org/LICENSE.txt for license information.
543356f56SNico Weber // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
643356f56SNico Weber //
743356f56SNico Weber //===----------------------------------------------------------------------===//
843356f56SNico Weber 
943356f56SNico Weber #include "InMemorySymbolIndex.h"
1043356f56SNico Weber 
1143356f56SNico Weber using clang::find_all_symbols::SymbolAndSignals;
1243356f56SNico Weber 
1343356f56SNico Weber namespace clang {
1443356f56SNico Weber namespace include_fixer {
1543356f56SNico Weber 
1643356f56SNico Weber InMemorySymbolIndex::InMemorySymbolIndex(
1743356f56SNico Weber     const std::vector<SymbolAndSignals> &Symbols) {
1843356f56SNico Weber   for (const auto &Symbol : Symbols)
19adcd0268SBenjamin Kramer     LookupTable[std::string(Symbol.Symbol.getName())].push_back(Symbol);
2043356f56SNico Weber }
2143356f56SNico Weber 
2243356f56SNico Weber std::vector<SymbolAndSignals>
2343356f56SNico Weber InMemorySymbolIndex::search(llvm::StringRef Identifier) {
24*b7ee03ffSKazu Hirata   auto I = LookupTable.find(Identifier);
2543356f56SNico Weber   if (I != LookupTable.end())
2643356f56SNico Weber     return I->second;
2743356f56SNico Weber   return {};
2843356f56SNico Weber }
2943356f56SNico Weber 
3043356f56SNico Weber } // namespace include_fixer
3143356f56SNico Weber } // namespace clang
32