I should mention for the specific case of Vala, I think you can write something like this:
```vala // some gobject in vala, to save typing namespace Foo { public class Plugin : Object { [CCode(instance_pos=1.1)] bool init(Geany.Plugin p) { return true; } [CCode(instance_pos=1.1)] void cleanup(Geany.Plugin p) {} } } ```
It might work directly in this case.