clang  8.0.0svn
IndexDataConsumer.h
Go to the documentation of this file.
1 //===--- IndexDataConsumer.h - Abstract index data consumer -----*- C++ -*-===//
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  ///
54  /// This will be called for each module reference in an import decl.
55  /// For "@import MyMod.SubMod", there will be a call for 'MyMod' with the
56  /// 'reference' role, and a call for 'SubMod' with the 'declaration' role.
57  virtual bool handleModuleOccurence(const ImportDecl *ImportD,
58  const Module *Mod,
59  SymbolRoleSet Roles, SourceLocation Loc);
60 
61  virtual void finish() {}
62 };
63 
64 } // namespace index
65 } // namespace clang
66 
67 #endif
virtual void setPreprocessor(std::shared_ptr< Preprocessor > PP)
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:87
virtual bool handleDeclOccurence(const Decl *D, SymbolRoleSet Roles, ArrayRef< SymbolRelation > Relations, SourceLocation Loc, ASTNodeInfo ASTNode)
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:154
Describes a module or submodule.
Definition: Module.h:65
unsigned SymbolRoleSet
Definition: IndexSymbol.h:124
This represents one expression.
Definition: Expr.h:105
Defines the clang::Preprocessor interface.
virtual void initialize(ASTContext &Ctx)
Encodes a location in the source.
virtual bool handleModuleOccurence(const ImportDecl *ImportD, const Module *Mod, SymbolRoleSet Roles, SourceLocation Loc)
Describes a module import declaration, which makes the contents of the named module visible in the cu...
Definition: Decl.h:4118
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