ObjC AST cleanups/simplifications (phase 1).
Add ObjCContainerDecl class and have ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl inherit from it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61866 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp
index a14e3ba..2bfad5a 100644
--- a/lib/AST/DeclObjC.cpp
+++ b/lib/AST/DeclObjC.cpp
@@ -60,10 +60,13 @@
                                      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() {
-  delete [] InstanceMethods;
-  delete [] ClassMethods;
   delete [] PropertyDecl;
 }
 
@@ -384,7 +385,7 @@
 /// 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 @@
   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.
 ///