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.