]> granicus.if.org Git - clang/commitdiff
ObjCCategoryImplDecl and ObjCImplementation do not derive directly from DeclContext...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 17 Jul 2009 01:19:49 +0000 (01:19 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 17 Jul 2009 01:19:49 +0000 (01:19 +0000)
Reflect this change on the "DeclContext hierarchy".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76137 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclBase.h
include/clang/AST/DeclNodes.def
include/clang/AST/DeclObjC.h

index 019a0fe965b90c560d0c04d7d994bc56df584dbf..2d056c479b62b02019ce0aed70d7112565691bcf 100644 (file)
@@ -37,6 +37,7 @@ class ObjCCategoryDecl;
 class ObjCProtocolDecl;
 class ObjCImplementationDecl;
 class ObjCCategoryImplDecl;
+class ObjCImplDecl;
 class LinkageSpecDecl;
 class BlockDecl;
 class DeclarationName;
@@ -393,8 +394,7 @@ public:
 ///   TagDecl
 ///   ObjCMethodDecl
 ///   ObjCContainerDecl
-///   ObjCCategoryImplDecl
-///   ObjCImplementationDecl
+///   ObjCImpl
 ///   LinkageSpecDecl
 ///   BlockDecl
 ///
index 1e4440357b655c11338d3e44f0bbc2b5c9889cae..fd89d8845dade279ab761e6c9afc4f8a41a85d3a 100644 (file)
@@ -132,8 +132,7 @@ DECL_CONTEXT(TranslationUnit)
 DECL_CONTEXT(Namespace)
 DECL_CONTEXT(LinkageSpec)
 DECL_CONTEXT(ObjCMethod)
-DECL_CONTEXT(ObjCCategoryImpl)
-DECL_CONTEXT(ObjCImplementation)
+DECL_CONTEXT_BASE(ObjCImpl)
 DECL_CONTEXT_BASE(Tag)
 DECL_CONTEXT_BASE(Function)
 DECL_CONTEXT_BASE(ObjCContainer)
index 2fcdaa3e2959d58f7886dc3c23d73a979761cd13..c6b7910c7d7ce2bcc9a9539a6a287a2a7fa40d71 100644 (file)
@@ -883,6 +883,17 @@ public:
   SourceLocation getLocStart() const { return getLocation(); }
   SourceLocation getLocEnd() const { return EndLoc; }
   void setLocEnd(SourceLocation LE) { EndLoc = LE; };
+
+  static bool classof(const Decl *D) {
+    return D->getKind() >= ObjCImplFirst && D->getKind() <= ObjCImplLast;
+  }
+  static bool classof(const ObjCImplDecl *D) { return true; }
+  static DeclContext *castToDeclContext(const ObjCImplDecl *D) {
+    return static_cast<DeclContext *>(const_cast<ObjCImplDecl*>(D));
+  }
+  static ObjCImplDecl *castFromDeclContext(const DeclContext *DC) {
+    return static_cast<ObjCImplDecl *>(const_cast<DeclContext*>(DC));
+  }
 };
   
 /// ObjCCategoryImplDecl - An object of this class encapsulates a category 
@@ -931,12 +942,6 @@ public:
   
   static bool classof(const Decl *D) { return D->getKind() == ObjCCategoryImpl;}
   static bool classof(const ObjCCategoryImplDecl *D) { return true; }
-  static DeclContext *castToDeclContext(const ObjCCategoryImplDecl *D) {
-    return static_cast<DeclContext *>(const_cast<ObjCCategoryImplDecl*>(D));
-  }
-  static ObjCCategoryImplDecl *castFromDeclContext(const DeclContext *DC) {
-    return static_cast<ObjCCategoryImplDecl *>(const_cast<DeclContext*>(DC));
-  }
 };
 
 /// ObjCImplementationDecl - Represents a class definition - this is where
@@ -1010,12 +1015,6 @@ public:
     return D->getKind() == ObjCImplementation;
   }
   static bool classof(const ObjCImplementationDecl *D) { return true; }
-  static DeclContext *castToDeclContext(const ObjCImplementationDecl *D) {
-    return static_cast<DeclContext *>(const_cast<ObjCImplementationDecl*>(D));
-  }
-  static ObjCImplementationDecl *castFromDeclContext(const DeclContext *DC) {
-    return static_cast<ObjCImplementationDecl *>(const_cast<DeclContext*>(DC));
-  }
 };
 
 /// ObjCCompatibleAliasDecl - Represents alias of a class. This alias is