%module grouping

%inline %{

typedef int Integer;

int (test1)(int x) {
   return x;
}

int *(test2)(int x) {
    static int y;
    y = x;
    return &y;
}

int test3 = 37;

typedef Integer (UnaryOp)(Integer);

Integer do_unary(Integer x, UnaryOp *f) {
   return (*f)(x);
}

int negate(int x) {
   return -x;
}

%}

%constant UnaryOp *NEGATE = negate;
