%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;