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