• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
~IndexDataConsumer()35   virtual ~IndexDataConsumer() {}
36 
initialize(ASTContext & Ctx)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 
finish()55   virtual void finish() {}
56 
57 private:
58   virtual void _anchor();
59 };
60 
61 } // namespace index
62 } // namespace clang
63 
64 #endif
65