[CCode (cprefix = "Test", gir_namespace = "Test", gir_version = "1.0", lower_case_cprefix = "test_")] namespace Test { [CCode (cheader_filename = "test.h", type_id = "test_foo_get_type ()")] public class Bar : Test.Foo { [CCode (has_construct_function = false)] protected Bar (); } [CCode (cheader_filename = "test.h", type_id = "test_foo_get_type ()")] public class Foo : GLib.Object, Test.IFoo { [CCode (has_construct_function = false)] public Foo (); [CCode (cname = "test_foo_new_bar", has_construct_function = false)] public Foo.bar (); public string get_prop (); public async void method_async (string input, out string output) throws GLib.Error; public virtual void method_virtual () throws GLib.Error; public void set_prop (string value); public string prop { owned get; set construct; } public signal void sig (string arg); } [CCode (cheader_filename = "test.h")] public interface IBar : Test.IFoo, GLib.Object { } [CCode (cheader_filename = "test.h", type_id = "test_ifoo_get_type ()")] public interface IFoo : GLib.Object { public abstract void method () throws GLib.Error; } }