GIRWriter ignores CCode attributes of parameters
From vala code
[CCode (has_target = false)]
public delegate int ExecCallback (
[CCode (array_length_cname = "val_length", array_length_pos = 0.5)] string[] values,
[CCode (array_length_cname = "cn_length", array_length_pos = 1.5)] string[] column_names);
valac with --gir option generates this code C and *.gir:
typedef gint (*GSpaceExecCallback) (int val_length, gchar** values, int cn_length, gchar** column_names);
<callback name="ExecCallback" c:type="GSpaceExecCallback">
<return-value transfer-ownership="full">
<type name="gint" c:type="gint"/>
</return-value>
<parameters>
<parameter name="values" transfer-ownership="none">
<array length="1" c:type="gchar**">
<type name="utf8" c:type="gchar*"/>
</array>
</parameter>
<parameter name="values_length1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="column_names" transfer-ownership="none">
<array length="3" c:type="gchar**">
<type name="utf8" c:type="gchar*"/>
</array>
</parameter>
<parameter name="column_names_length1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
</callback>
Args names and positions in *.gir do not match those in C code. If I generate code C and process it by g-ir-scanner all will be OK. See test code, detail in readme.txtvalac-gir-option.zip
Edited by Rico Tzschichholz