declarator

declarator:=
csyntax | pointer_type NAME
| pointer_type const NAME
| c_type ( NAME ) ( c_type_list )
| c_type ( * NAME ) ( c_type_list )
| c_type NAME ( c_type_list )

Top level const is supported by passing by val, otherwise we pass by var

Note that function pointer types are C function pointers A-->B.