clang: lib/Tooling/Execution.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
12
14
16namespace tooling {
17
18llvm:🆑:optstd::string
19 ExecutorName("executor", llvm:🆑:desc("The name of the executor to use."),
20 llvm:🆑:init("standalone"));
21
23 KVResults.push_back({Strings.save(Key), Strings.save(Value)});
24}
25
26std::vector<std::pair<llvm::StringRef, llvm::StringRef>>
28 return KVResults;
29}
30
32 llvm::function_ref<void(StringRef Key, StringRef Value)> Callback) {
33 for (const auto &KV : KVResults) {
34 Callback(KV.first, KV.second);
35 }
36}
37
40}
41
42llvm::Error
45}
46
49 std::vector<
50 std::pair<std::unique_ptr, ArgumentsAdjuster>>
51 Actions;
52 Actions.emplace_back(std::move(Action), std::move(Adjuster));
54}
55
56namespace internal {
59 llvm:🆑:OptionCategory &Category,
60 const char *Overview) {
61 auto OptionsParser =
63 Overview);
64 if (!OptionsParser)
65 return OptionsParser.takeError();
66 for (const auto &TEPlugin : ToolExecutorPluginRegistry::entries()) {
68 continue;
69 }
70 std::unique_ptr Plugin(TEPlugin.instantiate());
72 Plugin->create(*OptionsParser);
73 if (!Executor) {
74 return llvm::make_errorllvm::StringError(
75 llvm::Twine("Failed to create '") + TEPlugin.getName() +
76 "': " + llvm::toString(Executor.takeError()) + "\n",
77 llvm::inconvertibleErrorCode());
78 }
79 return std::move(*Executor);
80 }
81 return llvm::make_errorllvm::StringError(
82 llvm::Twine("Executor \"") + ExecutorName + "\" is not registered.",
83 llvm::inconvertibleErrorCode());
84}
85}
86
89 llvm:🆑:OptionCategory &Category,
90 const char *Overview) {
92 Overview);
93}
94
95
96
103
104}
105}
void reportResult(StringRef Key, StringRef Value)
Adds a KV pair to the result container of this execution.
The JSON file list parser is used to communicate input to InstallAPI.