1*0621cb2eSAlp Toker //===--- RewriteTest.cpp - Rewriter playground ----------------------------===// 2*0621cb2eSAlp Toker // 3*0621cb2eSAlp Toker // The LLVM Compiler Infrastructure 4*0621cb2eSAlp Toker // 5*0621cb2eSAlp Toker // This file is distributed under the University of Illinois Open Source 6*0621cb2eSAlp Toker // License. See LICENSE.TXT for details. 7*0621cb2eSAlp Toker // 8*0621cb2eSAlp Toker //===----------------------------------------------------------------------===// 9*0621cb2eSAlp Toker // 10*0621cb2eSAlp Toker // This is a testbed. 11*0621cb2eSAlp Toker // 12*0621cb2eSAlp Toker //===----------------------------------------------------------------------===// 13*0621cb2eSAlp Toker 14*0621cb2eSAlp Toker #include "clang/Rewrite/Frontend/Rewriters.h" 15*0621cb2eSAlp Toker #include "clang/Lex/Preprocessor.h" 16*0621cb2eSAlp Toker #include "clang/Rewrite/Core/TokenRewriter.h" 17*0621cb2eSAlp Toker #include "llvm/Support/raw_ostream.h" 18*0621cb2eSAlp Toker 19*0621cb2eSAlp Toker void clang::DoRewriteTest(Preprocessor &PP, raw_ostream* OS) { 20*0621cb2eSAlp Toker SourceManager &SM = PP.getSourceManager(); 21*0621cb2eSAlp Toker const LangOptions &LangOpts = PP.getLangOpts(); 22*0621cb2eSAlp Toker 23*0621cb2eSAlp Toker TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts); 24*0621cb2eSAlp Toker 25*0621cb2eSAlp Toker // Throw <i> </i> tags around comments. 26*0621cb2eSAlp Toker for (TokenRewriter::token_iterator I = Rewriter.token_begin(), 27*0621cb2eSAlp Toker E = Rewriter.token_end(); I != E; ++I) { 28*0621cb2eSAlp Toker if (I->isNot(tok::comment)) continue; 29*0621cb2eSAlp Toker 30*0621cb2eSAlp Toker Rewriter.AddTokenBefore(I, "<i>"); 31*0621cb2eSAlp Toker Rewriter.AddTokenAfter(I, "</i>"); 32*0621cb2eSAlp Toker } 33*0621cb2eSAlp Toker 34*0621cb2eSAlp Toker 35*0621cb2eSAlp Toker // Print out the output. 36*0621cb2eSAlp Toker for (TokenRewriter::token_iterator I = Rewriter.token_begin(), 37*0621cb2eSAlp Toker E = Rewriter.token_end(); I != E; ++I) 38*0621cb2eSAlp Toker *OS << PP.getSpelling(*I); 39*0621cb2eSAlp Toker } 40