Home | History | Annotate | Download | only in Index
      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