ilya-biryukov created this revision. ilya-biryukov added reviewers: sammccall, ioeric. Herald added a subscriber: kadircet.
Used in clangd. Repository: rC Clang https://reviews.llvm.org/D52275 Files: include/clang/Index/USRGeneration.h lib/Index/USRGeneration.cpp Index: lib/Index/USRGeneration.cpp =================================================================== --- lib/Index/USRGeneration.cpp +++ lib/Index/USRGeneration.cpp @@ -1094,3 +1094,13 @@ Out << MacroName; return false; } + +bool clang::index::generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl<char> &Buf) { + if (T.isNull()) + return true; + T = T.getCanonicalType(); + + USRGenerator UG(&Ctx, Buf); + UG.VisitType(T); + return UG.ignoreResults(); +} Index: include/clang/Index/USRGeneration.h =================================================================== --- include/clang/Index/USRGeneration.h +++ include/clang/Index/USRGeneration.h @@ -14,10 +14,12 @@ #include "llvm/ADT/StringRef.h" namespace clang { +class ASTContext; class Decl; class MacroDefinitionRecord; class SourceLocation; class SourceManager; +class QualType; namespace index { @@ -70,6 +72,12 @@ bool generateUSRForMacro(StringRef MacroName, SourceLocation Loc, const SourceManager &SM, SmallVectorImpl<char> &Buf); + +/// Generates a USR for a type. +/// +/// \return true on error, false on success. +bool generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl<char> &Buf); + } // namespace index } // namespace clang
Index: lib/Index/USRGeneration.cpp =================================================================== --- lib/Index/USRGeneration.cpp +++ lib/Index/USRGeneration.cpp @@ -1094,3 +1094,13 @@ Out << MacroName; return false; } + +bool clang::index::generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl<char> &Buf) { + if (T.isNull()) + return true; + T = T.getCanonicalType(); + + USRGenerator UG(&Ctx, Buf); + UG.VisitType(T); + return UG.ignoreResults(); +} Index: include/clang/Index/USRGeneration.h =================================================================== --- include/clang/Index/USRGeneration.h +++ include/clang/Index/USRGeneration.h @@ -14,10 +14,12 @@ #include "llvm/ADT/StringRef.h" namespace clang { +class ASTContext; class Decl; class MacroDefinitionRecord; class SourceLocation; class SourceManager; +class QualType; namespace index { @@ -70,6 +72,12 @@ bool generateUSRForMacro(StringRef MacroName, SourceLocation Loc, const SourceManager &SM, SmallVectorImpl<char> &Buf); + +/// Generates a USR for a type. +/// +/// \return true on error, false on success. +bool generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl<char> &Buf); + } // namespace index } // namespace clang
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits