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