]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Index/IndexDataConsumer.h
MFV r315791: ntp 4.2.8p10.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / include / clang / Index / IndexDataConsumer.h
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