brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 4948975 Raw
37 lines · cpp
1//===-- PragmaCommentHandler.cpp - find all symbols -----------------------===//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 "PragmaCommentHandler.h"10#include "FindAllSymbols.h"11#include "HeaderMapCollector.h"12#include "clang/Lex/Preprocessor.h"13#include "llvm/Support/Regex.h"14 15namespace clang {16namespace find_all_symbols {17namespace {18const char IWYUPragma[] = "// IWYU pragma: private, include ";19} // namespace20 21bool PragmaCommentHandler::HandleComment(Preprocessor &PP, SourceRange Range) {22  StringRef Text =23      Lexer::getSourceText(CharSourceRange::getCharRange(Range),24                           PP.getSourceManager(), PP.getLangOpts());25  size_t Pos = Text.find(IWYUPragma);26  if (Pos == StringRef::npos)27    return false;28  StringRef RemappingFilePath = Text.substr(Pos + std::strlen(IWYUPragma));29  Collector->addHeaderMapping(30      PP.getSourceManager().getFilename(Range.getBegin()),31      RemappingFilePath.trim("\"<>"));32  return false;33}34 35} // namespace find_all_symbols36} // namespace clang37