xref: /openbsd-src/gnu/llvm/clang/include/clang-c/Rewrite.h (revision a9ac8606c53d55cee9c3a39778b249c51df111ef)
1*a9ac8606Spatrick /*===-- clang-c/Rewrite.h - C CXRewriter   --------------------------*- C -*-===*\
2*a9ac8606Spatrick |*                                                                            *|
3*a9ac8606Spatrick |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4*a9ac8606Spatrick |* Exceptions.                                                                *|
5*a9ac8606Spatrick |* See https://llvm.org/LICENSE.txt for license information.                  *|
6*a9ac8606Spatrick |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
7*a9ac8606Spatrick |*                                                                            *|
8*a9ac8606Spatrick |*===----------------------------------------------------------------------===*/
9*a9ac8606Spatrick 
10*a9ac8606Spatrick #ifndef LLVM_CLANG_C_REWRITE_H
11*a9ac8606Spatrick #define LLVM_CLANG_C_REWRITE_H
12*a9ac8606Spatrick 
13*a9ac8606Spatrick #include "clang-c/CXString.h"
14*a9ac8606Spatrick #include "clang-c/ExternC.h"
15*a9ac8606Spatrick #include "clang-c/Index.h"
16*a9ac8606Spatrick #include "clang-c/Platform.h"
17*a9ac8606Spatrick 
18*a9ac8606Spatrick LLVM_CLANG_C_EXTERN_C_BEGIN
19*a9ac8606Spatrick 
20*a9ac8606Spatrick typedef void *CXRewriter;
21*a9ac8606Spatrick 
22*a9ac8606Spatrick /**
23*a9ac8606Spatrick  * Create CXRewriter.
24*a9ac8606Spatrick  */
25*a9ac8606Spatrick CINDEX_LINKAGE CXRewriter clang_CXRewriter_create(CXTranslationUnit TU);
26*a9ac8606Spatrick 
27*a9ac8606Spatrick /**
28*a9ac8606Spatrick  * Insert the specified string at the specified location in the original buffer.
29*a9ac8606Spatrick  */
30*a9ac8606Spatrick CINDEX_LINKAGE void clang_CXRewriter_insertTextBefore(CXRewriter Rew, CXSourceLocation Loc,
31*a9ac8606Spatrick                                            const char *Insert);
32*a9ac8606Spatrick 
33*a9ac8606Spatrick /**
34*a9ac8606Spatrick  * Replace the specified range of characters in the input with the specified
35*a9ac8606Spatrick  * replacement.
36*a9ac8606Spatrick  */
37*a9ac8606Spatrick CINDEX_LINKAGE void clang_CXRewriter_replaceText(CXRewriter Rew, CXSourceRange ToBeReplaced,
38*a9ac8606Spatrick                                       const char *Replacement);
39*a9ac8606Spatrick 
40*a9ac8606Spatrick /**
41*a9ac8606Spatrick  * Remove the specified range.
42*a9ac8606Spatrick  */
43*a9ac8606Spatrick CINDEX_LINKAGE void clang_CXRewriter_removeText(CXRewriter Rew, CXSourceRange ToBeRemoved);
44*a9ac8606Spatrick 
45*a9ac8606Spatrick /**
46*a9ac8606Spatrick  * Save all changed files to disk.
47*a9ac8606Spatrick  * Returns 1 if any files were not saved successfully, returns 0 otherwise.
48*a9ac8606Spatrick  */
49*a9ac8606Spatrick CINDEX_LINKAGE int clang_CXRewriter_overwriteChangedFiles(CXRewriter Rew);
50*a9ac8606Spatrick 
51*a9ac8606Spatrick /**
52*a9ac8606Spatrick  * Write out rewritten version of the main file to stdout.
53*a9ac8606Spatrick  */
54*a9ac8606Spatrick CINDEX_LINKAGE void clang_CXRewriter_writeMainFileToStdOut(CXRewriter Rew);
55*a9ac8606Spatrick 
56*a9ac8606Spatrick /**
57*a9ac8606Spatrick  * Free the given CXRewriter.
58*a9ac8606Spatrick  */
59*a9ac8606Spatrick CINDEX_LINKAGE void clang_CXRewriter_dispose(CXRewriter Rew);
60*a9ac8606Spatrick 
61*a9ac8606Spatrick LLVM_CLANG_C_EXTERN_C_END
62*a9ac8606Spatrick 
63*a9ac8606Spatrick #endif
64