[PATCH] Refactor MacroInfo for easier access in for-loops
Sebastian Edman
sebastian.edman at evidente.se
Fri May 22 05:30:27 PDT 2015
Hi alexfh, danielmarjamaki,
Added possibilty to extract the arguments in a MacroInfo as a container in order to use C++11 style for loops.
http://reviews.llvm.org/D9934
Files:
include/clang/Lex/MacroInfo.h
lib/Lex/PPMacroExpansion.cpp
lib/Serialization/ASTWriter.cpp
Index: include/clang/Lex/MacroInfo.h
===================================================================
--- include/clang/Lex/MacroInfo.h
+++ include/clang/Lex/MacroInfo.h
@@ -182,6 +182,9 @@
bool arg_empty() const { return NumArguments == 0; }
arg_iterator arg_begin() const { return ArgumentList; }
arg_iterator arg_end() const { return ArgumentList+NumArguments; }
+ ArrayRef<IdentifierInfo*> args() const {
+ return ArrayRef<IdentifierInfo*>(ArgumentList, NumArguments);
+ }
unsigned getNumArgs() const { return NumArguments; }
/// \brief Return the argument number of the specified identifier,
Index: lib/Serialization/ASTWriter.cpp
===================================================================
--- lib/Serialization/ASTWriter.cpp
+++ lib/Serialization/ASTWriter.cpp
@@ -2135,9 +2135,8 @@
Record.push_back(MI->isGNUVarargs());
Record.push_back(MI->hasCommaPasting());
Record.push_back(MI->getNumArgs());
- for (MacroInfo::arg_iterator I = MI->arg_begin(), E = MI->arg_end();
- I != E; ++I)
- AddIdentifierRef(*I, Record);
+ for (const auto &I : MI->args())
+ AddIdentifierRef(I, Record);
}
// If we have a detailed preprocessing record, record the macro definition
Index: lib/Lex/PPMacroExpansion.cpp
===================================================================
--- lib/Lex/PPMacroExpansion.cpp
+++ lib/Lex/PPMacroExpansion.cpp
@@ -362,9 +362,8 @@
// If this is a function-like macro invocation, it's safe to trivially expand
// as long as the identifier is not a macro argument.
- for (MacroInfo::arg_iterator I = MI->arg_begin(), E = MI->arg_end();
- I != E; ++I)
- if (*I == II)
+ for (const auto &I : MI->args())
+ if (I == II)
return false; // Identifier is a macro argument.
return true;
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D9934.26316.patch
Type: text/x-patch
Size: 1837 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150522/f711a78e/attachment.bin>
More information about the cfe-commits
mailing list