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