clang  10.0.0svn
RewriteTest.cpp
Go to the documentation of this file.
1 //===--- RewriteTest.cpp - Rewriter playground ----------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This is a testbed.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "clang/Lex/Preprocessor.h"
16 #include "llvm/Support/raw_ostream.h"
17 
18 void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {
20  const LangOptions &LangOpts = PP.getLangOpts();
21 
22  TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);
23 
24  // Throw <i> </i> tags around comments.
25  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
26  E = Rewriter.token_end(); I != E; ++I) {
27  if (I->isNot(tok::comment)) continue;
28 
29  Rewriter.AddTokenBefore(I, "<i>");
30  Rewriter.AddTokenAfter(I, "</i>");
31  }
32 
33 
34  // Print out the output.
35  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
36  E = Rewriter.token_end(); I != E; ++I)
37  *OS << PP.getSpelling(*I);
38 }
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Definition: LangOptions.h:49
const LangOptions & getLangOpts() const
Definition: Preprocessor.h:904
StringRef getSpelling(SourceLocation loc, SmallVectorImpl< char > &buffer, bool *invalid=nullptr) const
Return the &#39;spelling&#39; of the token at the given location; does not go up to the spelling location or ...
Defines the clang::Preprocessor interface.
const SourceManager & SM
Definition: Format.cpp:1667
SourceManager & getSourceManager() const
Definition: Preprocessor.h:908
std::list< Token >::const_iterator token_iterator
Definition: TokenRewriter.h:56
FileID getMainFileID() const
Returns the FileID of the main source file.
void DoRewriteTest(Preprocessor &PP, raw_ostream *OS)
DoRewriteTest - A simple test for the TokenRewriter class.
Definition: RewriteTest.cpp:18
Rewriter - This is the main interface to the rewrite buffers.
Definition: Rewriter.h:32
This class handles loading and caching of source files into memory.
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
Definition: Preprocessor.h:125