vala r2142 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2142 - in trunk: . gobject
- Date: Sat, 13 Dec 2008 19:37:29 +0000 (UTC)
Author: juergbi
Date: Sat Dec 13 19:37:29 2008
New Revision: 2142
URL: http://svn.gnome.org/viewvc/vala?rev=2142&view=rev
Log:
2008-12-13 JÃrg Billeter <j bitron ch>
* gobject/valadbusmodule.vala:
Support reading and writing nullable GLib.Value values
Modified:
trunk/ChangeLog
trunk/gobject/valadbusmodule.vala
Modified: trunk/gobject/valadbusmodule.vala
==============================================================================
--- trunk/gobject/valadbusmodule.vala (original)
+++ trunk/gobject/valadbusmodule.vala Sat Dec 13 19:37:29 2008
@@ -361,6 +361,14 @@
} 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);
}
@@ -600,7 +608,11 @@
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);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]