1 //===--- IndexDataConsumer.h - Abstract index data consumer ---------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_CLANG_INDEX_INDEXDATACONSUMER_H 11 #define LLVM_CLANG_INDEX_INDEXDATACONSUMER_H 12 13 #include "clang/Index/IndexSymbol.h" 14 15 namespace clang { 16 class ASTContext; 17 class DeclContext; 18 class Expr; 19 class FileID; 20 class IdentifierInfo; 21 class ImportDecl; 22 class MacroInfo; 23 24 namespace index { 25 26 class IndexDataConsumer { 27 public: 28 struct ASTNodeInfo { 29 const Expr *OrigE; 30 const Decl *OrigD; 31 const Decl *Parent; 32 const DeclContext *ContainerDC; 33 }; 34 35 virtual ~IndexDataConsumer() {} 36 37 virtual void initialize(ASTContext &Ctx) {} 38 39 /// \returns true to continue indexing, or false to abort. 40 virtual bool handleDeclOccurence(const Decl *D, SymbolRoleSet Roles, 41 ArrayRef<SymbolRelation> Relations, 42 FileID FID, unsigned Offset, 43 ASTNodeInfo ASTNode); 44 45 /// \returns true to continue indexing, or false to abort. 46 virtual bool handleMacroOccurence(const IdentifierInfo *Name, 47 const MacroInfo *MI, SymbolRoleSet Roles, 48 FileID FID, unsigned Offset); 49 50 /// \returns true to continue indexing, or false to abort. 51 virtual bool handleModuleOccurence(const ImportDecl *ImportD, 52 SymbolRoleSet Roles, 53 FileID FID, unsigned Offset); 54 55 virtual void finish() {} 56 57 private: 58 virtual void _anchor(); 59 }; 60 61 } // namespace index 62 } // namespace clang 63 64 #endif 65