aboutsummaryrefslogtreecommitdiff
path: root/Driver/RewriteTest.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-12-12 07:56:42 +0000
committerChris Lattner <sabre@nondot.org>2007-12-12 07:56:42 +0000
commitbe6df088d69bca0e99c7845a6cd8c1ca85034f31 (patch)
treec43f73508ecc8ce36be7973df49961b691f8e0ff /Driver/RewriteTest.cpp
parentab4c4d5e5ececa77aae7e291fafcba3049319cdc (diff)
more cleanups changing things like getInstanceVariables to iterators.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44930 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/RewriteTest.cpp')
-rw-r--r--Driver/RewriteTest.cpp35
1 files changed, 20 insertions, 15 deletions
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index c8c8f9dd3e..6edfcb17d7 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -2090,10 +2090,6 @@ void RewriteTest::RewriteObjcClassMetaData(ObjcImplementationDecl *IDecl,
std::string &Result) {
ObjcInterfaceDecl *CDecl = IDecl->getClassInterface();
- // Build _objc_ivar_list metadata for classes ivars if needed
- int NumIvars = IDecl->getImplDeclNumIvars() > 0
- ? IDecl->getImplDeclNumIvars()
- : (CDecl ? CDecl->getNumInstanceVariables() : 0);
// Explictly declared @interface's are already synthesized.
if (CDecl->ImplicitInterfaceDecl()) {
// FIXME: Implementation of a class with no @interface (legacy) doese not
@@ -2101,6 +2097,10 @@ void RewriteTest::RewriteObjcClassMetaData(ObjcImplementationDecl *IDecl,
SynthesizeObjcInternalStruct(CDecl, Result);
}
+ // Build _objc_ivar_list metadata for classes ivars if needed
+ int NumIvars = IDecl->getImplDeclNumIvars() > 0
+ ? IDecl->getImplDeclNumIvars()
+ : (CDecl ? CDecl->getNumInstanceVariables() : 0);
if (NumIvars > 0) {
static bool objc_ivar = false;
if (!objc_ivar) {
@@ -2133,28 +2133,33 @@ void RewriteTest::RewriteObjcClassMetaData(ObjcImplementationDecl *IDecl,
"{\n\t";
Result += utostr(NumIvars);
Result += "\n";
-
- ObjcIvarDecl **Ivars = IDecl->getImplDeclIVars()
- ? IDecl->getImplDeclIVars()
- : CDecl->getInstanceVariables();
+
+ ObjcInterfaceDecl::ivar_iterator IVI, IVE;
+ if (IDecl->getImplDeclNumIvars() > 0) {
+ IVI = IDecl->ivar_begin();
+ IVE = IDecl->ivar_end();
+ } else {
+ IVI = CDecl->ivar_begin();
+ IVE = CDecl->ivar_end();
+ }
Result += "\t,{{\"";
- Result += Ivars[0]->getName();
+ Result += (*IVI)->getName();
Result += "\", \"";
std::string StrEncoding;
- Context->getObjcEncodingForType(Ivars[0]->getType(), StrEncoding);
+ Context->getObjcEncodingForType((*IVI)->getType(), StrEncoding);
Result += StrEncoding;
Result += "\", ";
- SynthesizeIvarOffsetComputation(IDecl, Ivars[0], Result);
+ SynthesizeIvarOffsetComputation(IDecl, *IVI, Result);
Result += "}\n";
- for (int i = 1; i < NumIvars; i++) {
+ for (++IVI; IVI != IVE; ++IVI) {
Result += "\t ,{\"";
- Result += Ivars[i]->getName();
+ Result += (*IVI)->getName();
Result += "\", \"";
std::string StrEncoding;
- Context->getObjcEncodingForType(Ivars[i]->getType(), StrEncoding);
+ Context->getObjcEncodingForType((*IVI)->getType(), StrEncoding);
Result += StrEncoding;
Result += "\", ";
- SynthesizeIvarOffsetComputation(IDecl, Ivars[i], Result);
+ SynthesizeIvarOffsetComputation(IDecl, (*IVI), Result);
Result += "}\n";
}