packages feed

hs-bindgen-1.0.0.0: test-artefacts/headers/golden/macros/macro_in_fundecl.h

// Reparsing function declarations

// clang -Xclang -ast-dump file.c

#define I int
#define C char
#define F float
#define L long
#define S short

// very basic
char quux(F x, char y) { return 0; }
C *wam(float x, C *y) { return 0; }

// basic
char* foo1(float x, int (*g)(int)) { return 0; }
char* foo2(F x, int (*g)(int)) { return 0; }
C* foo3(float x, int (*g)(int)) { return 0; }

// return function pointer
int (*bar1(long x))(short) { return 0; }
int (*bar2(L x))(short) { return 0; }
int (*bar3(long x))(S) { return 0; }
I (*bar4(long x))(short) { return 0; }

// return array
int (*baz1(const int i))[2][3] {
    static int arr[2][3] = {
        {1, 2, 3},
        {11, 12, 13}
    };
    arr[1][1] = i;
    return &arr;
}
int (*baz2(const I i))[2][3] {
    static int arr[2][3] = {
        {1, 2, 3},
        {11, 12, 13}
    };
    arr[1][1] = i;
    return &arr;
}
I (*baz3(const int i))[2][3] {
    static int arr[2][3] = {
        {1, 2, 3},
        {11, 12, 13}
    };
    arr[1][1] = i;
    return &arr;
}

// neither arguments nor keyword void
I no_args_no_void();