}
}
+ if (constructor && ret_is_struct) {
+ // struct constructor has its result as first parameter
+ write_param_or_return (return_type, "parameter", ref index, false, "result", return_comment, ParameterDirection.OUT, constructor, true);
+ }
+
if (type_params != null) {
foreach (var p in type_params) {
write_type_parameter (p, "parameter");
write_implicit_params (param.variable_type, ref index, get_ccode_array_length (param), get_ccode_name (param), param.direction);
}
- if (ret_is_struct) {
+ if (!constructor && ret_is_struct) {
// struct returns are converted to parameters
write_param_or_return (return_type, "parameter", ref index, false, "result", return_comment, ParameterDirection.OUT, constructor, true);
- } else {
+ } else if (!constructor) {
write_implicit_params (return_type, ref index, return_array_length, "result", ParameterDirection.OUT);
}
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <parameter name="result" direction="out" transfer-ownership="full" caller-allocates="1">
+ <type name="GirTest.BoxedStruct" c:type="GirTestBoxedStruct*"/>
+ </parameter>
<parameter name="param1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="param2" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
- <parameter name="result" direction="out" transfer-ownership="full" caller-allocates="1">
- <type name="GirTest.BoxedStruct" c:type="GirTestBoxedStruct*"/>
- </parameter>
</parameters>
</function>
<method name="inv" c:identifier="gir_test_boxed_struct_inv">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <parameter name="result" direction="out" transfer-ownership="full" caller-allocates="1">
+ <type name="GirTest.Struct" c:type="GirTestStruct*"/>
+ </parameter>
<parameter name="param1" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="param2" transfer-ownership="none">
<type name="gint" c:type="gint"/>
</parameter>
- <parameter name="result" direction="out" transfer-ownership="full" caller-allocates="1">
- <type name="GirTest.Struct" c:type="GirTestStruct*"/>
- </parameter>
</parameters>
</function>
<method name="inv" c:identifier="gir_test_struct_inv">
public int field_name;
public int internal_field_name;
[CCode (cname = "gir_test_boxed_struct_init_foo")]
- public static GirTest.BoxedStruct foo (int param1, int param2);
+ public void foo (int param1, int param2);
public static GirTest.BoxedStruct init ();
public void inv ();
}
public int field_name;
public int internal_field_name;
[CCode (cname = "gir_test_struct_init_foo")]
- public static GirTest.Struct foo (int param1, int param2);
+ public void foo (int param1, int param2);
public static GirTest.Struct init ();
public void inv ();
}