1 //===-- HeaderMapCoolector.h - find all symbols------------------*- C++ -*-===//
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-exception
7 //===----------------------------------------------------------------------===//
9 #include "HeaderMapCollector.h"
10 #include "llvm/Support/Regex.h"
13 namespace find_all_symbols
{
15 HeaderMapCollector::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
),
26 HeaderMapCollector::getMappedHeader(llvm::StringRef Header
) const {
27 auto Iter
= HeaderMappingTable
.find(Header
);
28 if (Iter
!= HeaderMappingTable
.end())
30 // If there is no complete header name mapping for this header, check the
31 // regex header mapping.
32 for (auto &Entry
: RegexHeaderMappingTable
) {
35 assert(Entry
.first
.isValid(Dummy
) && "Regex should never be invalid!");
37 if (Entry
.first
.match(Header
))
43 } // namespace find_all_symbols