IndexingContext.h revision dd93c596cd95e1b96031ff47efe0a5095ff3d7f1
14e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis//===- IndexingContext.h - Higher level API functions ------------------------===// 24e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// 34e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// The LLVM Compiler Infrastructure 44e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// 54e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// This file is distributed under the University of Illinois Open Source 64e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// License. See LICENSE.TXT for details. 74e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis// 84e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis//===----------------------------------------------------------------------===// 94e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 104e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis#include "Index_Internal.h" 114e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis#include "CXCursor.h" 124e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 134e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis#include "clang/AST/Decl.h" 144e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis#include "clang/AST/DeclGroup.h" 154e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis#include "llvm/ADT/DenseMap.h" 164e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 174e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidisnamespace clang { 184e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis class FileEntry; 194e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis class ObjCPropertyDecl; 20dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis class ObjCClassDecl; 214e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 224e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidisnamespace cxindex { 234e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis class IndexingContext; 244e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 25dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidisstruct DeclInfo : public CXIdxDeclInfo { 26dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxEntityInfo CXEntInfo; 27dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis}; 28dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 29dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidisstruct TagDeclInfo : public DeclInfo { 30dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxTagDeclInfo CXTagDeclInfo; 31dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis}; 32dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 33dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidisstruct ObjCContainerDeclInfo : public DeclInfo { 34dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxObjCContainerDeclInfo CXObjCContDeclInfo; 35dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis}; 36dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 37dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidisstruct ObjCCategoryDeclInfo : public ObjCContainerDeclInfo { 38dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxObjCCategoryDeclInfo CXObjCCatDeclInfo; 39dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis}; 40dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 414e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidisclass IndexingContext { 424e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis ASTContext *Ctx; 434e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXClientData ClientData; 444e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis IndexerCallbacks &CB; 454e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis unsigned IndexOptions; 464e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXTranslationUnit CXTU; 474e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 48dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis typedef llvm::DenseMap<const FileEntry *, CXIdxClientFile> FileMapTy; 49dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis typedef llvm::DenseMap<const NamedDecl *, CXIdxClientEntity> EntityMapTy; 50dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis typedef llvm::DenseMap<const void *, CXIdxClientMacro> MacroMapTy; 51dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis typedef llvm::DenseMap<const DeclContext *, CXIdxClientContainer> ContainerMapTy; 524e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis FileMapTy FileMap; 534e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis EntityMapTy EntityMap; 544e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis MacroMapTy MacroMap; 554e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis ContainerMapTy ContainerMap; 564e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 574e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis SmallVector<DeclGroupRef, 8> TUDeclsInObjCContainer; 584e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 594e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis llvm::SmallString<256> StrScratch; 60dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis unsigned StrAdapterCount; 614e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 624e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis class StrAdapter { 634e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis llvm::SmallString<256> &Scratch; 64dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis IndexingContext &IdxCtx; 654e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 664e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis public: 67dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis StrAdapter(IndexingContext &indexCtx) 68dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis : Scratch(indexCtx.StrScratch), IdxCtx(indexCtx) { 69dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis ++IdxCtx.StrAdapterCount; 70dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis } 71dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 72dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis ~StrAdapter() { 73dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis --IdxCtx.StrAdapterCount; 74dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis if (IdxCtx.StrAdapterCount == 0) 75dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis Scratch.clear(); 76dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis } 774e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 784e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const char *toCStr(StringRef Str); 794e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 804e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis unsigned getCurSize() const { return Scratch.size(); } 814e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 824e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const char *getCStr(unsigned CharIndex) { 834e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis Scratch.push_back('\0'); 844e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis return Scratch.data() + CharIndex; 854e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis } 864e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 874e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis SmallVectorImpl<char> &getBuffer() { return Scratch; } 884e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis }; 894e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 904e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidispublic: 914e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis IndexingContext(CXClientData clientData, IndexerCallbacks &indexCallbacks, 924e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis unsigned indexOptions, CXTranslationUnit cxTU) 934e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis : Ctx(0), ClientData(clientData), CB(indexCallbacks), 94dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis IndexOptions(indexOptions), CXTU(cxTU), StrAdapterCount(0) { } 954e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 964e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis ASTContext &getASTContext() const { return *Ctx; } 974e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 984e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void setASTContext(ASTContext &ctx); 994e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 100dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void enteredMainFile(const FileEntry *File); 101dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 1024e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void ppIncludedFile(SourceLocation hashLoc, 1034e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis StringRef filename, const FileEntry *File, 1044e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis bool isImport, bool isAngled); 1054e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1064e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void ppMacroDefined(SourceLocation Loc, StringRef Name, 1074e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis SourceLocation DefBegin, unsigned Length, 1084e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const void *OpaqueMacro); 1094e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1104e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void ppMacroUndefined(SourceLocation Loc, StringRef Name, 1114e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const void *OpaqueMacro); 1124e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1134e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void ppMacroExpanded(SourceLocation Loc, StringRef Name, 1144e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const void *OpaqueMacro); 1154e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1164e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void invokeStartedTranslationUnit(); 1174e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1184e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void invokeFinishedTranslationUnit(); 1194e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1204e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexDecl(const Decl *D); 1214e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1224e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexTagDecl(const TagDecl *D); 1234e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1244e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexTypeSourceInfo(TypeSourceInfo *TInfo, const NamedDecl *Parent, 1254e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const DeclContext *DC = 0); 1264e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1274e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexTypeLoc(TypeLoc TL, const NamedDecl *Parent, 1284e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const DeclContext *DC); 1294e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1304e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexDeclContext(const DeclContext *DC); 1314e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1324e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexBody(const Stmt *S, const DeclContext *DC); 1334e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1344e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleDiagnostic(const StoredDiagnostic &StoredDiag); 1354e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1364e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleFunction(const FunctionDecl *FD); 1374e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1384e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleVar(const VarDecl *D); 1394e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1404e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleField(const FieldDecl *D); 1414e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1424e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleEnumerator(const EnumConstantDecl *D); 1434e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1444e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleTagDecl(const TagDecl *D); 1454e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1464e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleTypedef(const TypedefDecl *D); 1474e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 148dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleObjCClass(const ObjCClassDecl *D); 1494e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleObjCInterface(const ObjCInterfaceDecl *D); 150dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleObjCImplementation(const ObjCImplementationDecl *D); 1514e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1524e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void defineObjCInterface(const ObjCInterfaceDecl *D); 1534e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 154dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleObjCForwardProtocol(const ObjCProtocolDecl *D, 155dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis SourceLocation Loc, 156dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis bool isRedeclaration); 157dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 1584e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleObjCProtocol(const ObjCProtocolDecl *D); 1594e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1604e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleObjCCategory(const ObjCCategoryDecl *D); 161dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleObjCCategoryImpl(const ObjCCategoryImplDecl *D); 1624e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1634e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleObjCMethod(const ObjCMethodDecl *D); 1644e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1654e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleObjCProperty(const ObjCPropertyDecl *D); 1664e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1674e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void handleReference(const NamedDecl *D, SourceLocation Loc, 1684e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const NamedDecl *Parent, 1694e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const DeclContext *DC, 170aca19be8731fc31cff68702de0dc7f30ce908979Argyrios Kyrtzidis const Expr *E = 0, 171aca19be8731fc31cff68702de0dc7f30ce908979Argyrios Kyrtzidis CXIdxEntityRefKind Kind = CXIdxEntityRef_Direct); 1724e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 173dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void startContainer(const NamedDecl *D, bool isStmtBody = false, 174dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis const DeclContext *DC = 0); 1754e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 176dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void endContainer(const DeclContext *DC); 1774e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1784e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis bool isNotFromSourceFile(SourceLocation Loc) const; 1794e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1804e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexTUDeclsInObjCContainer(); 1814e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void indexDeclGroupRef(DeclGroupRef DG); 1824e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1834e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void addTUDeclInObjCContainer(DeclGroupRef DG) { 1844e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis TUDeclsInObjCContainer.push_back(DG); 1854e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis } 1864e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 187dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void translateLoc(SourceLocation Loc, CXIdxClientFile *indexFile, CXFile *file, 1884e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis unsigned *line, unsigned *column, unsigned *offset); 1894e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 1904e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidisprivate: 191dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleDecl(const NamedDecl *D, 192dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis SourceLocation Loc, CXCursor Cursor, 193dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis bool isRedeclaration, bool isDefinition, 194dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis DeclInfo &DInfo); 195dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 196dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void handleObjCContainer(const ObjCContainerDecl *D, 197dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis SourceLocation Loc, CXCursor Cursor, 198dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis bool isForwardRef, 199dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis bool isRedeclaration, 200dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis bool isImplementation, 201dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis ObjCContainerDeclInfo &ContDInfo); 2024e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 203dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void addEntityInMap(const NamedDecl *D, CXIdxClientEntity entity); 2044e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 205dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis void addContainerInMap(const DeclContext *DC, CXIdxClientContainer container); 206dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis 207dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxClientEntity getClientEntity(const NamedDecl *D); 2084e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2094e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const NamedDecl *getEntityDecl(const NamedDecl *D) const; 2104e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 211dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxClientContainer getIndexContainer(const NamedDecl *D) const { 2124e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis return getIndexContainerForDC(D->getDeclContext()); 2134e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis } 2144e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2154e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis const DeclContext *getScopedContext(const DeclContext *DC) const; 216dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxClientContainer getIndexContainerForDC(const DeclContext *DC) const; 2174e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 218dd93c596cd95e1b96031ff47efe0a5095ff3d7f1Argyrios Kyrtzidis CXIdxClientFile getIndexFile(const FileEntry *File); 2194e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2204e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXIdxLoc getIndexLoc(SourceLocation Loc) const; 2214e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2224e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis void getEntityInfo(const NamedDecl *D, 2234e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXIdxEntityInfo &EntityInfo, 2244e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis StrAdapter &SA); 2254e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2264e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXCursor getCursor(const NamedDecl *D) { 2274e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis return cxcursor::MakeCXCursor(const_cast<NamedDecl*>(D), CXTU); 2284e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis } 2294e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2304e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis CXCursor getRefCursor(const NamedDecl *D, SourceLocation Loc); 2314e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis}; 2324e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis 2334e7064fa7e344e8f87a5b8457e96dfdd252c4a9eArgyrios Kyrtzidis}} // end clang::cxindex 234