Mercurial > hg > CbC > CbC_llvm
view clang-tools-extra/clang-include-fixer/IncludeFixerContext.h @ 227:21e6aa2e49ef
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 19 Jul 2021 06:57:16 +0900 |
parents | 0572611fdcc8 |
children |
line wrap: on
line source
//===-- IncludeFixerContext.h - Include fixer context -----------*- 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_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXERCONTEXT_H #define LLVM_CLANG_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXERCONTEXT_H #include "find-all-symbols/SymbolInfo.h" #include "clang/Tooling/Core/Replacement.h" #include <string> #include <vector> namespace clang { namespace include_fixer { /// A context for a file being processed. It includes all query /// information, e.g. symbols being queried in database, all header candidates. class IncludeFixerContext { public: struct HeaderInfo { /// The header where QualifiedName comes from. std::string Header; /// A symbol name with completed namespace qualifiers which will /// replace the original symbol. std::string QualifiedName; }; struct QuerySymbolInfo { /// The raw symbol name being queried in database. This name might /// miss some namespace qualifiers, and will be replaced by a fully /// qualified one. std::string RawIdentifier; /// The qualifiers of the scope in which SymbolIdentifier lookup /// occurs. It is represented as a sequence of names and scope resolution /// operators ::, ending with a scope resolution operator (e.g. a::b::). /// Empty if SymbolIdentifier is not in a specific scope. std::string ScopedQualifiers; /// The replacement range of RawIdentifier. tooling::Range Range; }; IncludeFixerContext() = default; IncludeFixerContext(StringRef FilePath, std::vector<QuerySymbolInfo> QuerySymbols, std::vector<find_all_symbols::SymbolInfo> Symbols); /// Get symbol name. llvm::StringRef getSymbolIdentifier() const { return QuerySymbolInfos.front().RawIdentifier; } /// Get replacement range of the symbol. tooling::Range getSymbolRange() const { return QuerySymbolInfos.front().Range; } /// Get the file path to the file being processed. StringRef getFilePath() const { return FilePath; } /// Get header information. const std::vector<HeaderInfo> &getHeaderInfos() const { return HeaderInfos; } /// Get information of symbols being querid. const std::vector<QuerySymbolInfo> &getQuerySymbolInfos() const { return QuerySymbolInfos; } private: friend struct llvm::yaml::MappingTraits<IncludeFixerContext>; /// The file path to the file being processed. std::string FilePath; /// All instances of an unidentified symbol being queried. std::vector<QuerySymbolInfo> QuerySymbolInfos; /// The symbol candidates which match SymbolIdentifier. The symbols are /// sorted in a descending order based on the popularity info in SymbolInfo. std::vector<find_all_symbols::SymbolInfo> MatchedSymbols; /// The header information. std::vector<HeaderInfo> HeaderInfos; }; } // namespace include_fixer } // namespace clang #endif // LLVM_CLANG_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXERCONTEXT_H