]> granicus.if.org Git - clang/commitdiff
stub out some printing of objc decls.
authorChris Lattner <sabre@nondot.org>
Sat, 6 Oct 2007 18:52:10 +0000 (18:52 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 6 Oct 2007 18:52:10 +0000 (18:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42703 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/ASTStreamers.cpp
include/clang/AST/DeclObjC.h

index 61490d3401165d3459ae8a1aed54e34ea618e3be..7f3b7155705b6c4c72ff504777a87dd8f0ba59a2 100644 (file)
@@ -92,10 +92,27 @@ namespace {
         }
       } else if (TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
         PrintTypeDefDecl(TD);
-      } else if (ObjcInterfaceDecl *OID = dyn_cast<ObjcInterfaceDecl>(D)) {
-        PrintObjcInterfaceDecl(OID);
       } else if (ScopedDecl *SD = dyn_cast<ScopedDecl>(D)) {
         fprintf(stderr, "Read top-level variable decl: '%s'\n", SD->getName());
+      } else if (ObjcInterfaceDecl *OID = dyn_cast<ObjcInterfaceDecl>(D)) {
+        PrintObjcInterfaceDecl(OID);
+      } else if (ObjcForwardProtocolDecl *OFPD = 
+                     dyn_cast<ObjcForwardProtocolDecl>(D)) {
+        fprintf(stderr, "@protocol ");
+        for (unsigned i = 0, e = OFPD->getNumForwardDecls(); i != e; ++i) {
+          const ObjcProtocolDecl *D = OFPD->getForwardProtocolDecl(i);
+          if (i) fprintf(stderr, ", ");
+          fprintf(stderr, "%s", D->getName());
+        }
+        fprintf(stderr, "\n");
+      } else if (ObjcImplementationDecl *OID = 
+                   dyn_cast<ObjcImplementationDecl>(D)) {
+        fprintf(stderr, "@implementation %s  [printing todo]\n",
+                OID->getName());
+      } else if (isa<ObjcClassDecl>(D)) {
+        fprintf(stderr, "@class [printing todo]\n");
+      } else {
+        assert(0 && "Unknown decl type!");
       }
     }
   };
@@ -124,6 +141,12 @@ namespace {
         PrintTypeDefDecl(TD);
       } else if (ScopedDecl *SD = dyn_cast<ScopedDecl>(D)) {
         fprintf(stderr, "Read top-level variable decl: '%s'\n", SD->getName());
+      } else if (ObjcInterfaceDecl *OID = dyn_cast<ObjcInterfaceDecl>(D)) {
+        fprintf(stderr, "Read objc interface '%s'\n", OID->getName());
+      } else if (isa<ObjcForwardProtocolDecl>(D)) {
+        fprintf(stderr, "Read objc fwd protocol decl\n");
+      } else {
+        assert(0 && "Unknown decl type!");
       }
     }
   };
index ec132cc7e423f81c78bd374d4263210b266af7d8..0d1bc7fb6d08f03c1a45ac166a9c61418df7d069 100644 (file)
@@ -378,8 +378,8 @@ public:
 /// @protocol NSTextInput, NSChangeSpelling, NSDraggingInfo;
 /// 
 class ObjcForwardProtocolDecl : public TypeDecl {
-  ObjcProtocolDecl **ReferencedProtocols;   // Null if not defined.
-  int NumReferencedProtocols;               // -1 if not defined.
+  ObjcProtocolDecl **ReferencedProtocols;
+  unsigned NumReferencedProtocols;
 public:
   ObjcForwardProtocolDecl(SourceLocation L, unsigned nElts)
   : TypeDecl(ObjcForwardProtocol, L, 0, 0) { 
@@ -387,12 +387,27 @@ public:
       ReferencedProtocols = new ObjcProtocolDecl*[nElts];
       memset(ReferencedProtocols, '\0', nElts*sizeof(ObjcProtocolDecl*));
       NumReferencedProtocols = nElts;
+    } else {
+      ReferencedProtocols = 0;
     }
   }
-  void setForwardProtocolDecl(int idx, ObjcProtocolDecl *OID) {
-    assert((idx < NumReferencedProtocols) && "index out of range");
+  void setForwardProtocolDecl(unsigned idx, ObjcProtocolDecl *OID) {
+    assert(idx < NumReferencedProtocols && "index out of range");
     ReferencedProtocols[idx] = OID;
   }
+  
+  unsigned getNumForwardDecls() const { return NumReferencedProtocols; }
+  
+  ObjcProtocolDecl *getForwardProtocolDecl(unsigned idx) {
+    assert(idx < NumReferencedProtocols && "index out of range");
+    return ReferencedProtocols[idx];
+  }
+  const ObjcProtocolDecl *getForwardProtocolDecl(unsigned idx) const {
+    assert(idx < NumReferencedProtocols && "index out of range");
+    return ReferencedProtocols[idx];
+  }
+  
+  
   static bool classof(const Decl *D) {
     return D->getKind() == ObjcForwardProtocol;
   }
@@ -581,7 +596,7 @@ class ObjcImplementationDecl : public TypeDecl {
   ObjcMethodDecl **ClassMethods;  // Null if not defined
   int NumClassMethods;  // -1 if not defined
     
-  public:
+public:
   ObjcImplementationDecl(SourceLocation L, IdentifierInfo *Id,
                          ObjcInterfaceDecl* superDecl)
     : TypeDecl(ObjcImplementation, L, Id, 0),