186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// 286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// The LLVM Compiler Infrastructure 386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// 486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// This file is distributed under the University of Illinois Open Source 586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// License. See LICENSE.TXT for details. 686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst/* 886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst * blockimport.c 986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst * testObjects 1086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst * 1186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst * Created by Blaine Garst on 10/13/08. 1286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst * 1386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst */ 1486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 1586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 1686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// 1786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// pure C nothing more needed 1886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// CONFIG rdar://6289344 1986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 2086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#include <stdio.h> 2186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#include <Block.h> 2286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#include <Block_private.h> 2386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 2486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 2586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 2686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 2786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garstint main(int argc, char *argv[]) { 2886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst int i = 1; 2986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst int (^intblock)(void) = ^{ return i*10; }; 3086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 3186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst void (^vv)(void) = ^{ 3286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst if (argc > 0) { 3386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("intblock returns %d\n", intblock()); 3486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst } 3586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst }; 3686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst 3786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#if 0 3886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst //printf("Block dump %s\n", _Block_dump(vv)); 3986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst { 4086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst struct Block_layout *layout = (struct Block_layout *)(void *)vv; 4186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("isa %p\n", layout->isa); 4286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("flags %x\n", layout->flags); 4386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("descriptor %p\n", layout->descriptor); 4486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("descriptor->size %d\n", layout->descriptor->size); 4586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst } 4686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#endif 4786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst void (^vvcopy)(void) = Block_copy(vv); 4886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst Block_release(vvcopy); 4986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst printf("%s: success\n", argv[0]); 5086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst return 0; 5186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst} 52