+2008-12-13 Jürg Billeter <j@bitron.ch>
+
+ * gobject/valadbusmodule.vala:
+
+ Support reading and writing nullable GLib.Value values
+
2008-12-13 Jürg Billeter <j@bitron.ch>
* vapi/gsl.vapi:
} else if (type.data_type is Struct) {
if (type.data_type.get_full_name () == "GLib.Value") {
result = read_value (fragment, iter_expr);
+ if (type.nullable) {
+ var csizeof = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
+ csizeof.add_argument (new CCodeIdentifier ("GValue"));
+ var cdup = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+ cdup.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, result));
+ cdup.add_argument (csizeof);
+ result = cdup;
+ }
} else {
result = read_struct (fragment, (Struct) type.data_type, iter_expr);
}
write_array (fragment, (ArrayType) type, iter_expr, expr);
} else if (type.data_type is Struct) {
if (type.data_type.get_full_name () == "GLib.Value") {
- write_value (fragment, iter_expr, expr);
+ if (type.nullable) {
+ write_value (fragment, iter_expr, new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, expr));
+ } else {
+ write_value (fragment, iter_expr, expr);
+ }
} else {
write_struct (fragment, (Struct) type.data_type, iter_expr, expr);
}