Home | History | Annotate | Download | only in BlocksRuntime
      1 //
      2 //                     The LLVM Compiler Infrastructure
      3 //
      4 // This file is distributed under the University of Illinois Open Source
      5 // License. See LICENSE.TXT for details.
      6 
      7 /*
      8  *  structmember.c
      9  *  testObjects
     10  *
     11  *  Created by Blaine Garst on 9/30/08.
     12  *  CONFIG
     13  */
     14 #include <Block.h>
     15 #include <Block_private.h>
     16 #include <stdio.h>
     17 
     18 // CONFIG
     19 
     20 int main(int argc, char *argv[]) {
     21     struct stuff {
     22         long int a;
     23         long int b;
     24         long int c;
     25     } localStuff = { 10, 20, 30 };
     26     int d;
     27 
     28     void (^a)(void) = ^ { printf("d is %d", d); };
     29     void (^b)(void) = ^ { printf("d is %d, localStuff.a is %lu", d, localStuff.a); };
     30 
     31     unsigned nominalsize = Block_size(b) - Block_size(a);
     32 #if __cplusplus__
     33     // need copy+dispose helper for C++ structures
     34     nominalsize += 2*sizeof(void*);
     35 #endif
     36     if ((Block_size(b) - Block_size(a)) != nominalsize) {
     37         printf("sizeof a is %ld, sizeof b is %ld, expected %d\n", Block_size(a), Block_size(b), nominalsize);
     38         printf("dump of b is %s\n", _Block_dump(b));
     39         return 1;
     40     }
     41     printf("%s: Success\n", argv[0]);
     42     return 0;
     43 }
     44 
     45 
     46