diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-12 07:56:42 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-12 07:56:42 +0000 |
commit | be6df088d69bca0e99c7845a6cd8c1ca85034f31 (patch) | |
tree | c43f73508ecc8ce36be7973df49961b691f8e0ff /Driver/RewriteTest.cpp | |
parent | ab4c4d5e5ececa77aae7e291fafcba3049319cdc (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.cpp | 35 |
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"; } |