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