1674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen//
2674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen//                     The LLVM Compiler Infrastructure
3674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen//
4674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen// This file is distributed under the University of Illinois Open Source
5674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen// License. See LICENSE.TXT for details.
6674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
7674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen#include <stdio.h>
8674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen#include <Block.h>
9674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
10674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen// CONFIG
11674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
12674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenvoid callsomething(const char *format, int argument) {
13674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen}
14674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
15674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenvoid
16674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogendispatch_call_Block_with_release2(void *block)
17674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen{
18674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        void (^b)(void) = (void (^)(void))block;
19674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        b();
20674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        Block_release(b);
21674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen}
22674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
23674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenint main(int argc, char *argv[]) {
24674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     void (^b1)(void) = ^{ callsomething("argc is %d\n", argc); };
25674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     void (^b2)(void) = ^{ callsomething("hellow world\n", 0); }; // global block now
26674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
27674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     dispatch_call_Block_with_release2(Block_copy(b1));
28674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     dispatch_call_Block_with_release2(Block_copy(b2));
29674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     printf("%s: Success\n", argv[0]);
30674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen     return 0;
31674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen}
32674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen