10621cb2eSAlp Toker //===--- RewriteTest.cpp - Rewriter playground ----------------------------===//
20621cb2eSAlp Toker //
30621cb2eSAlp Toker //                     The LLVM Compiler Infrastructure
40621cb2eSAlp Toker //
50621cb2eSAlp Toker // This file is distributed under the University of Illinois Open Source
60621cb2eSAlp Toker // License. See LICENSE.TXT for details.
70621cb2eSAlp Toker //
80621cb2eSAlp Toker //===----------------------------------------------------------------------===//
90621cb2eSAlp Toker //
100621cb2eSAlp Toker // This is a testbed.
110621cb2eSAlp Toker //
120621cb2eSAlp Toker //===----------------------------------------------------------------------===//
130621cb2eSAlp Toker 
140621cb2eSAlp Toker #include "clang/Lex/Preprocessor.h"
150621cb2eSAlp Toker #include "clang/Rewrite/Core/TokenRewriter.h"
16*9670f847SMehdi Amini #include "clang/Rewrite/Frontend/Rewriters.h"
170621cb2eSAlp Toker #include "llvm/Support/raw_ostream.h"
180621cb2eSAlp Toker 
190621cb2eSAlp Toker void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {
200621cb2eSAlp Toker   SourceManager &SM = PP.getSourceManager();
210621cb2eSAlp Toker   const LangOptions &LangOpts = PP.getLangOpts();
220621cb2eSAlp Toker 
230621cb2eSAlp Toker   TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);
240621cb2eSAlp Toker 
250621cb2eSAlp Toker   // Throw <i> </i> tags around comments.
260621cb2eSAlp Toker   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
270621cb2eSAlp Toker        E = Rewriter.token_end(); I != E; ++I) {
280621cb2eSAlp Toker     if (I->isNot(tok::comment)) continue;
290621cb2eSAlp Toker 
300621cb2eSAlp Toker     Rewriter.AddTokenBefore(I, "<i>");
310621cb2eSAlp Toker     Rewriter.AddTokenAfter(I, "</i>");
320621cb2eSAlp Toker   }
330621cb2eSAlp Toker 
340621cb2eSAlp Toker 
350621cb2eSAlp Toker   // Print out the output.
360621cb2eSAlp Toker   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
370621cb2eSAlp Toker        E = Rewriter.token_end(); I != E; ++I)
380621cb2eSAlp Toker     *OS << PP.getSpelling(*I);
390621cb2eSAlp Toker }
40