gir/async-sync-out.test \
gir/class.test \
gir/delegate-alias-without-target.test \
+ gir/delegate-array-length-type.test \
gir/delegate-closure-destroy-index-conflict.test \
gir/enum.test \
gir/errordomain.test \
+ gir/method-array-length-type.test \
+ gir/parameter-array-length-type.test \
gir/parameter-nullable-out-simple-type.test \
gir/property-non-readable.test \
annotations/deprecated.vala \
--- /dev/null
+GIR
+
+Input:
+
+<callback name="Foo" c:type="TestFoo">
+ <return-value transfer-ownership="full">
+ <array length="0" c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="result_length" direction="out" transfer-ownership="none">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ <parameter name="user_data"
+ transfer-ownership="none"
+ nullable="1"
+ allow-none="1"
+ closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+</callback>
+
+Output:
+
+[CCode (array_length_pos = 0.1, array_length_type = "gsize", cheader_filename = "test.h", instance_pos = 0.9)]
+public delegate string[] Foo ();
--- /dev/null
+GIR
+
+Input:
+
+<function name="function" c:identifier="test_function">
+ <return-value transfer-ownership="full">
+ <array length="0" c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="result_length" direction="out" transfer-ownership="none">
+ <type name="gsize" c:type="gsize*"/>
+ </parameter>
+ </parameters>
+</function>
+
+Output:
+
+[CCode (array_length_pos = 0.1, array_length_type = "gsize", cheader_filename = "test.h")]
+public static string[] function ();
--- /dev/null
+GIR
+
+Input:
+
+<function name="function" c:identifier="test_function">
+ <return-value transfer-ownership="none">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="foo" transfer-ownership="none">
+ <array length="1" c:type="gchar**">
+ <type name="utf8"/>
+ </array>
+ </parameter>
+ <parameter name="foo_length" transfer-ownership="none">
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+</function>
+
+Output:
+
+[CCode (cheader_filename = "test.h")]
+public static void function ([CCode (array_length_cname = "foo_length", array_length_pos = 1.1, array_length_type = "gsize")] string[] foo);
if (type_name != "int") {
var st = root.lookup (type_name);
if (st != null) {
- if (sym is Method) {
- var m = (Method) sym;
- m.set_attribute_string ("CCode", "array_length_type", st.get_cname ());
- } else {
- var param = (Parameter) sym;
- param.set_attribute_string ("CCode", "array_length_type", st.get_cname ());
+ if (sym is Callable || sym is Parameter) {
+ sym.set_attribute_string ("CCode", "array_length_type", st.get_cname ());
}
}
}