[PING][PATCH] Refactoring, update MacroInfo interface so a for range can be used to iterate through the tokens

Richard Smith richard at metafoo.co.uk
Mon Apr 27 09:24:14 PDT 2015


On 27 Apr 2015 6:41 am, "Daniel Marjamäki" <Daniel.Marjamaki at evidente.se>
wrote:
>
>
> Please review this refactoring.
>
> http://reviews.llvm.org/D9079
>
>
..................................................................................................................
> Daniel Marjamäki Senior Engineer
> Evidente ES East AB  Warfvinges väg 34  SE-112 51 Stockholm  Sweden
>
> Mobile:                 +46 (0)709 12 42 62
> E-mail:                 Daniel.Marjamaki at evidente.se
>
> www.evidente.se
>
> ________________________________________
> Från: Daniel Marjamäki [daniel.marjamaki at evidente.se]
> Skickat: den 20 april 2015 13:06
> Till: Daniel Marjamäki; alexfh at google.com
> Cc: cfe-commits at cs.uiuc.edu
> Ämne: Re: [PATCH] Refactoring, update MacroInfo interface so a for range
can be used to iterate through the tokens
>
> good comments. I have taken care of those.
>
>
> http://reviews.llvm.org/D9079
>
> Files:
>   include/clang/Lex/MacroInfo.h
>   lib/Frontend/PrintPreprocessedOutput.cpp
>   tools/extra/modularize/PreprocessorTracker.cpp
>
> Index: include/clang/Lex/MacroInfo.h
> ===================================================================
> --- include/clang/Lex/MacroInfo.h
> +++ include/clang/Lex/MacroInfo.h
> @@ -241,6 +241,7 @@
>    tokens_iterator tokens_begin() const { return
ReplacementTokens.begin(); }
>    tokens_iterator tokens_end() const { return ReplacementTokens.end(); }
>    bool tokens_empty() const { return ReplacementTokens.empty(); }
> +  const SmallVectorImpl<Token> &tokens() const { return
ReplacementTokens; }

Please use ArrayRef or iterator_range here.

>
>    /// \brief Add the specified token to the replacement text for the
macro.
>    void AddTokenToBody(const Token &Tok) {
> Index: lib/Frontend/PrintPreprocessedOutput.cpp
> ===================================================================
> --- lib/Frontend/PrintPreprocessedOutput.cpp
> +++ lib/Frontend/PrintPreprocessedOutput.cpp
> @@ -64,12 +64,11 @@
>      OS << ' ';
>
>    SmallString<128> SpellingBuffer;
> -  for (MacroInfo::tokens_iterator I = MI.tokens_begin(), E =
MI.tokens_end();
> -       I != E; ++I) {
> -    if (I->hasLeadingSpace())
> +  for (const Token &T : MI.tokens()) {
> +    if (T.hasLeadingSpace())
>        OS << ' ';
>
> -    OS << PP.getSpelling(*I, SpellingBuffer);
> +    OS << PP.getSpelling(T, SpellingBuffer);
>    }
>  }
>
> Index: tools/extra/modularize/PreprocessorTracker.cpp
> ===================================================================
> --- tools/extra/modularize/PreprocessorTracker.cpp
> +++ tools/extra/modularize/PreprocessorTracker.cpp
> @@ -405,14 +405,13 @@
>                                            const clang::MacroArgs *Args) {
>    std::string Expanded;
>    // Walk over the macro Tokens.
> -  typedef clang::MacroInfo::tokens_iterator Iter;
> -  for (Iter I = MI->tokens_begin(), E = MI->tokens_end(); I != E; ++I) {
> -    clang::IdentifierInfo *II = I->getIdentifierInfo();
> +  for (const clang::Token &T : MI->tokens()) {
> +    clang::IdentifierInfo *II = T.getIdentifierInfo();
>      int ArgNo = (II && Args ? MI->getArgumentNum(II) : -1);
>      if (ArgNo == -1) {
>        // This isn't an argument, just add it.
>        if (II == nullptr)
> -        Expanded += PP.getSpelling((*I)); // Not an identifier.
> +        Expanded += PP.getSpelling(T); // Not an identifier.
>        else {
>          // Token is for an identifier.
>          std::string Name = II->getName().str();
>
> EMAIL PREFERENCES
>   http://reviews.llvm.org/settings/panel/emailpreferences/
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150427/c31d07dd/attachment.html>


More information about the cfe-commits mailing list