]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Tooling/ArgumentsAdjusters.h
Update hostapd/wpa_supplicant to version 2.5.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / include / clang / Tooling / ArgumentsAdjusters.h
1 //===--- ArgumentsAdjusters.h - Command line arguments adjuster -*- C++ -*-===//
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 // This file declares typedef ArgumentsAdjuster and functions to create several
11 // useful argument adjusters.
12 // ArgumentsAdjusters modify command line arguments obtained from a compilation
13 // database before they are used to run a frontend action.
14 //
15 //===----------------------------------------------------------------------===//
16
17 #ifndef LLVM_CLANG_TOOLING_ARGUMENTSADJUSTERS_H
18 #define LLVM_CLANG_TOOLING_ARGUMENTSADJUSTERS_H
19
20 #include <functional>
21 #include <string>
22 #include <vector>
23
24 namespace clang {
25 namespace tooling {
26
27 /// \brief A sequence of command line arguments.
28 typedef std::vector<std::string> CommandLineArguments;
29
30 /// \brief A prototype of a command line adjuster.
31 ///
32 /// Command line argument adjuster is responsible for command line arguments
33 /// modification before the arguments are used to run a frontend action.
34 typedef std::function<CommandLineArguments(const CommandLineArguments &)>
35     ArgumentsAdjuster;
36
37 /// \brief Gets an argument adjuster that converts input command line arguments
38 /// to the "syntax check only" variant.
39 ArgumentsAdjuster getClangSyntaxOnlyAdjuster();
40
41 /// \brief Gets an argument adjuster which removes output-related command line
42 /// arguments.
43 ArgumentsAdjuster getClangStripOutputAdjuster();
44
45 enum class ArgumentInsertPosition { BEGIN, END };
46
47 /// \brief Gets an argument adjuster which inserts \p Extra arguments in the
48 /// specified position.
49 ArgumentsAdjuster getInsertArgumentAdjuster(const CommandLineArguments &Extra,
50                                             ArgumentInsertPosition Pos);
51
52 /// \brief Gets an argument adjuster which inserts an \p Extra argument in the
53 /// specified position.
54 ArgumentsAdjuster getInsertArgumentAdjuster(
55     const char *Extra,
56     ArgumentInsertPosition Pos = ArgumentInsertPosition::END);
57
58 /// \brief Gets an argument adjuster which adjusts the arguments in sequence
59 /// with the \p First adjuster and then with the \p Second one.
60 ArgumentsAdjuster combineAdjusters(ArgumentsAdjuster First,
61                                    ArgumentsAdjuster Second);
62
63 } // namespace tooling
64 } // namespace clang
65
66 #endif // LLVM_CLANG_TOOLING_ARGUMENTSADJUSTERS_H
67