clang  7.0.0svn
IndexDataConsumer.h
Go to the documentation of this file.
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 
14 #include "clang/Lex/Preprocessor.h"
15 
16 namespace clang {
17  class ASTContext;
18  class DeclContext;
19  class Expr;
20  class FileID;
21  class IdentifierInfo;
22  class ImportDecl;
23  class MacroInfo;
24 
25 namespace index {
26 
28 public:
29  struct ASTNodeInfo {
30  const Expr *OrigE;
31  const Decl *OrigD;
32  const Decl *Parent;
34  };
35 
36  virtual ~IndexDataConsumer() {}
37 
38  virtual void initialize(ASTContext &Ctx) {}
39 
40  virtual void setPreprocessor(std::shared_ptr<Preprocessor> PP) {}
41 
42  /// \returns true to continue indexing, or false to abort.
43  virtual bool handleDeclOccurence(const Decl *D, SymbolRoleSet Roles,
44  ArrayRef<SymbolRelation> Relations,
45  SourceLocation Loc, ASTNodeInfo ASTNode);
46 
47  /// \returns true to continue indexing, or false to abort.
48  virtual bool handleMacroOccurence(const IdentifierInfo *Name,
49  const MacroInfo *MI, SymbolRoleSet Roles,
50  SourceLocation Loc);
51 
52  /// \returns true to continue indexing, or false to abort.
53  virtual bool handleModuleOccurence(const ImportDecl *ImportD,
54  SymbolRoleSet Roles, SourceLocation Loc);
55 
56  virtual void finish() {}
57 
58 private:
59  virtual void _anchor();
60 };
61 
62 } // namespace index
63 } // namespace clang
64 
65 #endif
virtual void setPreprocessor(std::shared_ptr< Preprocessor > PP)
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:86
virtual bool handleDeclOccurence(const Decl *D, SymbolRoleSet Roles, ArrayRef< SymbolRelation > Relations, SourceLocation Loc, ASTNodeInfo ASTNode)
virtual bool handleModuleOccurence(const ImportDecl *ImportD, SymbolRoleSet Roles, SourceLocation Loc)
One of these records is kept for each identifier that is lexed.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition: ASTContext.h:150
unsigned SymbolRoleSet
Definition: IndexSymbol.h:118
Expr - This represents one expression.
Definition: Expr.h:106
Defines the clang::Preprocessor interface.
virtual void initialize(ASTContext &Ctx)
Encodes a location in the source.
Describes a module import declaration, which makes the contents of the named module visible in the cu...
Definition: Decl.h:4120
Dataflow Directional Tag Classes.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
Definition: DeclBase.h:1262
virtual bool handleMacroOccurence(const IdentifierInfo *Name, const MacroInfo *MI, SymbolRoleSet Roles, SourceLocation Loc)
Encapsulates the data about a macro definition (e.g.
Definition: MacroInfo.h:40