]> granicus.if.org Git - clang/commitdiff
Couple of minor changes. 1) Metaclass metadata also has a reference to
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 24 Oct 2007 20:54:23 +0000 (20:54 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 24 Oct 2007 20:54:23 +0000 (20:54 +0000)
protocol meta-data (unlike what documentation says). 2) Include objc.h so,
we can compile the generated metadata with both gcc and clang.

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

Driver/RewriteTest.cpp

index 1cf58957212b8b78bcb66556b81118eca2d23b4b..3904d86be71535104e14a3fa05aa66d8addedbe7 100644 (file)
@@ -686,7 +686,11 @@ void RewriteTest::RewriteObjcClassMetaData(ObjcImplementationDecl *IDecl) {
            CDecl->getName());
   else
     printf(", 0\n");
-  printf("\t,0,0,0,0\n");
+  if (CDecl->getNumIntfRefProtocols() > 0)
+    printf("\t,0,(struct _objc_protocol_list*)&_OBJC_CLASS_PROTOCOLS_%s,0,0\n", 
+           CDecl->getName());
+  else
+    printf("\t,0,0,0,0\n");
   printf("};\n");
   
   // class metadata generation.
@@ -724,6 +728,10 @@ void RewriteTest::WriteObjcMetaData() {
   if (ClsDefCount == 0 && CatDefCount == 0)
     return;
   
+  // TODO: This is temporary until we decide how to access objc types in a
+  // c program
+  printf("\n#include <Objc/objc.h>\n");
+  
   // For each implemented class, write out all its meta data.
   for (int i = 0; i < ClsDefCount; i++)
     RewriteObjcClassMetaData(ClassImplementation[i]);