- //===--- 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 "llvm/ADT/StringRef.h" 
- #include <optional> 
-   
- namespace clang { 
- class FileEntry; 
- 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(const FileEntry *FE, const SourceManager &SM, 
-                            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 
-