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