} else if (type is PointerType) {
write_indent ();
buffer.append_printf ("<type name=\"gpointer\" c:type=\"%s%s\"/>\n", get_ccode_name (type), direction == ParameterDirection.IN ? "" : "*");
+ } else if (type is DelegateType) {
+ var deleg_type = (DelegateType) type;
+ write_indent ();
+ buffer.append_printf ("<type name=\"%s\" c:type=\"%s%s\"/>\n", gi_type_name (deleg_type.delegate_symbol), get_ccode_name (type), direction == ParameterDirection.IN ? "" : "*");
} else if (type.type_symbol != null) {
write_indent ();
string type_name = gi_type_name (type.type_symbol);
write_indent ();
buffer.append_printf ("</%s>\n", is_array ? "array" : "type");
}
- } else if (type is DelegateType) {
- var deleg_type = (DelegateType) type;
- write_indent ();
- buffer.append_printf ("<type name=\"%s\" c:type=\"%s%s\"/>\n", gi_type_name (deleg_type.delegate_symbol), get_ccode_name (type), direction == ParameterDirection.IN ? "" : "*");
} else if (type is GenericType) {
// generic type parameters not supported in GIR
write_indent ();
</parameter>
</parameters>
</constructor>
+ <constructor name="typed" c:identifier="gir_test_generics_test_new_typed">
+ <return-value transfer-ownership="full">
+ <type name="GirTest.GenericsTest" c:type="GirTestGenericsTest*"/>
+ </return-value>
+ <parameters>
+ <parameter name="g_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="g_dup_func" transfer-ownership="none">
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </parameter>
+ <parameter name="g_destroy_func" transfer-ownership="none">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ <parameter name="t_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="t_dup_func" transfer-ownership="none">
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </parameter>
+ <parameter name="t_destroy_func" transfer-ownership="none">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ <parameter name="cb" transfer-ownership="none" closure="7" scope="notified" destroy="8">
+ <type name="GirTest.DelegateGenericsTest" c:type="GirTestDelegateGenericsTest"/>
+ </parameter>
+ <parameter name="cb_target" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="void*"/>
+ </parameter>
+ <parameter name="cb_target_destroy_notify" transfer-ownership="none" scope="call">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </constructor>
<method name="method" c:identifier="gir_test_generics_test_method">
<return-value transfer-ownership="full">
<type name="none"/>
</parameter>
</parameters>
</callback>
+ <callback name="DelegateGenericsTest" c:type="GirTestDelegateGenericsTest">
+ <return-value transfer-ownership="full">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="g_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="g_dup_func" transfer-ownership="none">
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </parameter>
+ <parameter name="g_destroy_func" transfer-ownership="none">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ <parameter name="t_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ <parameter name="t_dup_func" transfer-ownership="none">
+ <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+ </parameter>
+ <parameter name="t_destroy_func" transfer-ownership="none">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ <parameter name="g" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="t" transfer-ownership="none" allow-none="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none" closure="8">
+ <type name="gpointer" c:type="void*"/>
+ </parameter>
+ </parameters>
+ </callback>
<callback name="SkippedDelegate" c:type="GirTestSkippedDelegate" introspectable="0">
<return-value transfer-ownership="full">
<type name="none"/>
public class GenericsTest<G,T> {
public GenericsTest (owned GirTest.DelegateTest cb);
public void method (T param);
+ public GenericsTest.typed (owned GirTest.DelegateGenericsTest<G,T> cb);
}
[CCode (cheader_filename = "girtest.h")]
public class ImplementionTest : GLib.Object, GirTest.InterfaceTest {
FISHY
}
[CCode (cheader_filename = "girtest.h")]
+ public delegate bool DelegateGenericsTest<G,T> (G g, T t);
+ [CCode (cheader_filename = "girtest.h")]
public delegate bool DelegateTest (void* a, void* b);
[CCode (cheader_filename = "girtest.h")]
[GIR (visible = false)]