Viewing file: HeaderAnalysis.h (1.74 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===--- HeaderAnalysis.h -----------------------------------------*-C++-*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_TOOLING_INCLUSIONS_HEADER_ANALYSIS_H #define LLVM_CLANG_TOOLING_INCLUSIONS_HEADER_ANALYSIS_H
#include "clang/Basic/FileEntry.h" #include "llvm/ADT/StringRef.h" #include <optional>
namespace clang { class SourceManager; class HeaderSearch;
namespace tooling {
/// Returns true if the given physical file is a self-contained header. /// /// A header is considered self-contained if // - it has a proper header guard or has been #imported or contains #import(s) // - *and* it doesn't have a dont-include-me pattern. /// /// This function can be expensive as it may scan the source code to find out /// dont-include-me pattern heuristically. bool isSelfContainedHeader(FileEntryRef FE, const SourceManager &SM, const HeaderSearch &HeaderInfo);
/// This scans the given source code to see if it contains #import(s). bool codeContainsImports(llvm::StringRef Code);
/// If Text begins an Include-What-You-Use directive, returns it. /// Given "// IWYU pragma: keep", returns "keep". /// Input is a null-terminated char* as provided by SM.getCharacterData(). /// (This should not be StringRef as we do *not* want to scan for its length). /// For multi-line comments, we return only the first line. std::optional<llvm::StringRef> parseIWYUPragma(const char *Text);
} // namespace tooling } // namespace clang
#endif // LLVM_CLANG_TOOLING_INCLUSIONS_HEADER_ANALYSIS_H
|