Lines Matching full:header
36 llvm::SmallVector<Hinted<Header>>
37 applyHints(llvm::SmallVector<Hinted<Header>> Headers, Hints H) {
38 for (auto &Header : Headers)
39 Header.Hint |= H;
43 llvm::SmallVector<Header> ranked(llvm::SmallVector<Hinted<Header>> Headers) {
45 [](const Hinted<Header> &LHS, const Hinted<Header> &RHS) {
48 return llvm::SmallVector<Header>(Headers.begin(), Headers.end());
51 // Return the basename from a verbatim header spelling, leaves only the file
53 llvm::StringRef basename(llvm::StringRef Header) {
54 Header = Header.trim("<>\"");
55 Header = llvm::sys::path::filename(Header);
59 Header = Header.substr(0, Header.find('.'));
60 return Header;
64 bool nameMatch(llvm::StringRef DeclName, Header H) {
66 case Header::Physical:
68 case Header::Standard:
70 case Header::Verbatim:
73 llvm_unreachable("unhandled Header kind!");
97 llvm::SmallVector<Hinted<Header>>
98 hintedHeadersForStdHeaders(llvm::ArrayRef<tooling::stdlib::Header> Headers,
100 llvm::SmallVector<Hinted<Header>> Results;
106 Results.emplace_back(Header(Export), isPublicHeader(Export, *PI));
115 // Symbol to header mapping for std::move and std::remove, based on number of
117 std::optional<tooling::stdlib::Header>
130 return tooling::stdlib::Header::named("<utility>");
135 return tooling::stdlib::Header::named("<algorithm>");
139 return tooling::stdlib::Header::named("<cstdio>");
142 return tooling::stdlib::Header::named("<algorithm>");
149 std::optional<llvm::SmallVector<Hinted<Header>>>
165 // header names for those.
166 if (auto Header = headerForAmbiguousStdSymbol(ND)) {
167 return applyHints(hintedHeadersForStdHeaders({*Header}, SM, PI),
177 return llvm::SmallVector<Hinted<Header>>{};
178 // FIXME: Use the header mapping for builtins with a known header.
185 llvm::SmallVector<Hinted<Header>> findHeaders(const SymbolLocation &Loc,
188 llvm::SmallVector<Hinted<Header>> Results;
222 // being exported in this header.
242 llvm::SmallVector<Header> headersForSymbol(const Symbol &S,
246 // Get headers for all the locations providing Symbol. Same header can be
248 // Header by merging their hints.
249 llvm::SmallVector<Hinted<Header>> Headers;
259 Headers, [](const Hinted<Header> &LHS, const Hinted<Header> &RHS) {
260 return static_cast<Header>(LHS) < static_cast<Header>(RHS);
266 static_cast<Header>(*Write) == static_cast<Header>(*Read)) {
278 if (H.kind() == Header::Standard)
281 // names similar to the original header, e.g. foo_wrapper/foo.h vs
290 // FIXME: Introduce a MainFile header kind or signal and boost it.