diff options
author | Steve Naroff <snaroff@apple.com> | 2009-01-07 17:57:40 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-01-07 17:57:40 +0000 |
commit | 639de9ccd9bc6859d2978af88df7b15d139af686 (patch) | |
tree | 1fa8081a84272bb4b7160eab1a1000f812f10880 /clang/lib/AST/DeclObjC.cpp | |
parent | e955880357af90d74eff9d4b270da2a820a8dcee (diff) | |
download | bcm5719-llvm-639de9ccd9bc6859d2978af88df7b15d139af686.tar.gz bcm5719-llvm-639de9ccd9bc6859d2978af88df7b15d139af686.zip |
ObjC AST cleanups/simplifications (phase 1).
Add ObjCContainerDecl class and have ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl inherit from it.
llvm-svn: 61866
Diffstat (limited to 'clang/lib/AST/DeclObjC.cpp')
-rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 55 |
1 files changed, 6 insertions, 49 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index a14e3ba068c..2bfad5a7be6 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -60,10 +60,13 @@ ObjCInterfaceDecl *ObjCInterfaceDecl::Create(ASTContext &C, isInternal); } -ObjCInterfaceDecl::~ObjCInterfaceDecl() { - delete [] Ivars; +ObjCContainerDecl::~ObjCContainerDecl() { delete [] InstanceMethods; delete [] ClassMethods; +} + +ObjCInterfaceDecl::~ObjCInterfaceDecl() { + delete [] Ivars; delete [] PropertyDecl; // FIXME: CategoryList? } @@ -114,8 +117,6 @@ ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, } ObjCProtocolDecl::~ObjCProtocolDecl() { - delete [] InstanceMethods; - delete [] ClassMethods; delete [] PropertyDecl; } @@ -384,7 +385,7 @@ void ObjCImplementationDecl::ObjCAddInstanceVariablesToClassImpl( /// addMethods - Insert instance and methods declarations into /// ObjCInterfaceDecl's InsMethods and ClsMethods fields. /// -void ObjCInterfaceDecl::addMethods(ObjCMethodDecl **insMethods, +void ObjCContainerDecl::addMethods(ObjCMethodDecl **insMethods, unsigned numInsMembers, ObjCMethodDecl **clsMethods, unsigned numClsMembers, @@ -607,50 +608,6 @@ void ObjCCategoryDecl::addProperties(ObjCPropertyDecl **Properties, memcpy(PropertyDecl, Properties, NumProperties*sizeof(ObjCPropertyDecl*)); } -/// addMethods - Insert instance and methods declarations into -/// ObjCProtocolDecl's ProtoInsMethods and ProtoClsMethods fields. -/// -void ObjCProtocolDecl::addMethods(ObjCMethodDecl **insMethods, - unsigned numInsMembers, - ObjCMethodDecl **clsMethods, - unsigned numClsMembers, - SourceLocation endLoc) { - NumInstanceMethods = numInsMembers; - if (numInsMembers) { - InstanceMethods = new ObjCMethodDecl*[numInsMembers]; - memcpy(InstanceMethods, insMethods, numInsMembers*sizeof(ObjCMethodDecl*)); - } - NumClassMethods = numClsMembers; - if (numClsMembers) { - ClassMethods = new ObjCMethodDecl*[numClsMembers]; - memcpy(ClassMethods, clsMethods, numClsMembers*sizeof(ObjCMethodDecl*)); - } - AtEndLoc = endLoc; -} - - - -/// addMethods - Insert instance and methods declarations into -/// ObjCCategoryDecl's CatInsMethods and CatClsMethods fields. -/// -void ObjCCategoryDecl::addMethods(ObjCMethodDecl **insMethods, - unsigned numInsMembers, - ObjCMethodDecl **clsMethods, - unsigned numClsMembers, - SourceLocation endLoc) { - NumInstanceMethods = numInsMembers; - if (numInsMembers) { - InstanceMethods = new ObjCMethodDecl*[numInsMembers]; - memcpy(InstanceMethods, insMethods, numInsMembers*sizeof(ObjCMethodDecl*)); - } - NumClassMethods = numClsMembers; - if (numClsMembers) { - ClassMethods = new ObjCMethodDecl*[numClsMembers]; - memcpy(ClassMethods, clsMethods, numClsMembers*sizeof(ObjCMethodDecl*)); - } - AtEndLoc = endLoc; -} - /// FindPropertyDeclaration - Finds declaration of the property given its name /// in 'PropertyId' and returns it. It returns 0, if not found. /// |