+2008-12-12 Owen Taylor <otaylor@redhat.com>
+
+ Disable array auto-detection for out-annotated parameters (#563934)
+
+ If we have a parameter annotated as (out), then having a ctype of
+ 'char **' (or similar) doesn't necessarily indicate an array.
+
+ * giscanner/transformer.py: Skip array-detection logic for
+ (out)-annotated parameters.
+ * tests/scanner/annotation.h tests/scanner/annotation.c
+ tests/scanner/annotation-1.0-expected.gir
+ tests/scanner/annotation-1.0-expected.tgir: Add a test for
+ an (out) string parameter.
+
2008-12-12 Johan Dahlin <jdahlin@async.com.br>
* giscanner/dumper.py (DumpCompiler._link): Pass in
rettype = Map(derefed_name,
ctype,
key_type, value_type)
- elif ((is_param and canonical_ctype in default_array_types)
+ elif ((is_param and canonical_ctype in default_array_types
+ and not 'out' in options)
or ('array' in options)):
if canonical_ctype[-1] == '*':
derefed_name = canonical_ctype[:-1]
</parameter>
</parameters>
</method>
+ <method name="string_out" c:identifier="annotation_object_string_out">
+ <return-value transfer-ownership="none">
+ <type name="boolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="str_out" direction="out" transfer-ownership="full">
+ <type name="utf8" c:type="char**"/>
+ </parameter>
+ </parameters>
+ </method>
<method name="do_not_use"
c:identifier="annotation_object_do_not_use"
deprecated="Use annotation_object_create_object() instead."
</parameter>
</parameters>
</method>
+ <method name="string_out" c:identifier="annotation_object_string_out">
+ <return-value transfer-ownership="none">
+ <type name="boolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="str_out" transfer-ownership="full" direction="out">
+ <type name="utf8"/>
+ </parameter>
+ </parameters>
+ </method>
<method name="do_not_use" c:identifier="annotation_object_do_not_use" deprecated="1">
<return-value transfer-ownership="full">
<type name="GObject.Object"/>
}
+/**
+ * annotation_object_string_out:
+ * @object: a #AnnotationObject
+ * @str_out: (out) (transfer full): string return value
+ *
+ * Test returning a string as an out parameter
+ *
+ * Returns: some boolean
+ **/
+gboolean
+annotation_object_string_out(AnnotationObject *object,
+ char **str_out)
+{
+
+}
+
/**
* annotation_object_allow_none:
* @object: a #GObject
void annotation_object_parse_args (AnnotationObject *object,
int *argc,
char ***argv);
+gboolean annotation_object_string_out (AnnotationObject *object,
+ char **str_out);
GObject* annotation_object_do_not_use (AnnotationObject *object);