1 //===--- IndexingAction.h - Frontend index action -------------------------===// 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_INDEXINGACTION_H 11 #define LLVM_CLANG_INDEX_INDEXINGACTION_H 12 13 #include "clang/Basic/LLVM.h" 14 #include "llvm/ADT/ArrayRef.h" 15 #include <memory> 16 17 namespace clang { 18 class ASTContext; 19 class ASTReader; 20 class ASTUnit; 21 class Decl; 22 class FrontendAction; 23 24 namespace serialization { 25 class ModuleFile; 26 } 27 28 namespace index { 29 class IndexDataConsumer; 30 31 struct IndexingOptions { 32 enum class SystemSymbolFilterKind { 33 None, 34 DeclarationsOnly, 35 All, 36 }; 37 38 SystemSymbolFilterKind SystemSymbolFilter 39 = SystemSymbolFilterKind::DeclarationsOnly; 40 bool IndexFunctionLocals = false; 41 }; 42 43 /// \param WrappedAction another frontend action to wrap over or null. 44 std::unique_ptr<FrontendAction> 45 createIndexingAction(std::shared_ptr<IndexDataConsumer> DataConsumer, 46 IndexingOptions Opts, 47 std::unique_ptr<FrontendAction> WrappedAction); 48 49 void indexASTUnit(ASTUnit &Unit, 50 std::shared_ptr<IndexDataConsumer> DataConsumer, 51 IndexingOptions Opts); 52 53 void indexTopLevelDecls(ASTContext &Ctx, ArrayRef<const Decl *> Decls, 54 std::shared_ptr<IndexDataConsumer> DataConsumer, 55 IndexingOptions Opts); 56 57 void indexModuleFile(serialization::ModuleFile &Mod, ASTReader &Reader, 58 std::shared_ptr<IndexDataConsumer> DataConsumer, 59 IndexingOptions Opts); 60 61 } // namespace index 62 } // namespace clang 63 64 #endif 65