brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 6ec49ca Raw
45 lines · cpp
1//===-- HeaderMapCoolector.h - find all symbols------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "HeaderMapCollector.h"10#include "llvm/Support/Regex.h"11 12namespace clang {13namespace find_all_symbols {14 15HeaderMapCollector::HeaderMapCollector(16    const RegexHeaderMap *RegexHeaderMappingTable) {17  assert(RegexHeaderMappingTable);18  this->RegexHeaderMappingTable.reserve(RegexHeaderMappingTable->size());19  for (const auto &Entry : *RegexHeaderMappingTable) {20    this->RegexHeaderMappingTable.emplace_back(llvm::Regex(Entry.first),21                                               Entry.second);22  }23}24 25llvm::StringRef26HeaderMapCollector::getMappedHeader(llvm::StringRef Header) const {27  auto Iter = HeaderMappingTable.find(Header);28  if (Iter != HeaderMappingTable.end())29    return Iter->second;30  // If there is no complete header name mapping for this header, check the31  // regex header mapping.32  for (auto &Entry : RegexHeaderMappingTable) {33#ifndef NDEBUG34    std::string Dummy;35    assert(Entry.first.isValid(Dummy) && "Regex should never be invalid!");36#endif37    if (Entry.first.match(Header))38      return Entry.second;39  }40  return Header;41}42 43} // namespace find_all_symbols44} // namespace clang45