1f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//===--- IndexingAction.h - Frontend index action -------------------------===//
2f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
3f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//                     The LLVM Compiler Infrastructure
4f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
5f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot// This file is distributed under the University of Illinois Open Source
6f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot// License. See LICENSE.TXT for details.
7f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//
8f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot//===----------------------------------------------------------------------===//
9f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
10f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#ifndef LLVM_CLANG_INDEX_INDEXINGACTION_H
11f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#define LLVM_CLANG_INDEX_INDEXINGACTION_H
12f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
13f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "clang/Basic/LLVM.h"
14f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include "llvm/ADT/ArrayRef.h"
15f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#include <memory>
16f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
17f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace clang {
18f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class ASTContext;
19f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class ASTReader;
20f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class ASTUnit;
21f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class Decl;
22f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class FrontendAction;
23f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
24f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace serialization {
25f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class ModuleFile;
26f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot}
27f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
28f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotnamespace index {
29f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  class IndexDataConsumer;
30f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
31f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstruct IndexingOptions {
32f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  enum class SystemSymbolFilterKind {
33f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    None,
34f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    DeclarationsOnly,
35f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    All,
36f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  };
37f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
38f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  SystemSymbolFilterKind SystemSymbolFilter
39f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot    = SystemSymbolFilterKind::DeclarationsOnly;
40f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot  bool IndexFunctionLocals = false;
41f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot};
42f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
43f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot/// \param WrappedAction another frontend action to wrap over or null.
44f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotstd::unique_ptr<FrontendAction>
45f3014761c955345d6e05491608e73228d014afbandroid-build-team RobotcreateIndexingAction(std::shared_ptr<IndexDataConsumer> DataConsumer,
46f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                     IndexingOptions Opts,
47f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                     std::unique_ptr<FrontendAction> WrappedAction);
48f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
49f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotvoid indexASTUnit(ASTUnit &Unit,
50f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                  std::shared_ptr<IndexDataConsumer> DataConsumer,
51f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                  IndexingOptions Opts);
52f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
53f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotvoid indexTopLevelDecls(ASTContext &Ctx, ArrayRef<const Decl *> Decls,
54f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                        std::shared_ptr<IndexDataConsumer> DataConsumer,
55f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                        IndexingOptions Opts);
56f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
57f3014761c955345d6e05491608e73228d014afbandroid-build-team Robotvoid indexModuleFile(serialization::ModuleFile &Mod, ASTReader &Reader,
58f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                     std::shared_ptr<IndexDataConsumer> DataConsumer,
59f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot                     IndexingOptions Opts);
60f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
61f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace index
62f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot} // namespace clang
63f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot
64f3014761c955345d6e05491608e73228d014afbandroid-build-team Robot#endif
65