]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
libosso: fix struct Rpc bindings
authorPhilipp Zabel <philipp.zabel@gmail.com>
Tue, 20 Oct 2009 14:15:02 +0000 (16:15 +0200)
committerEvan Nemerson <evan@coeus-group.com>
Sat, 7 Nov 2009 19:38:19 +0000 (11:38 -0800)
osso_rpc_free_val should be destroy_function instead of unref_function.
The value union contained in osso_rpc_t is not a GLib.Value

Fixes bug 599052.

vapi/libosso.vapi

index 1eaa7dc3a950d00abf388f6ef18337a93cb4ecaf..d1bb35a3037e3ee2ed9c245cd8ccd5485c9cde6f 100644 (file)
@@ -224,10 +224,34 @@ namespace Osso {
         public DevMode sig_device_mode_ind;
     }
 
-    [CCode (unref_function = "osso_rpc_free_val", cname = "osso_rpc_t")]
+    [CCode (destroy_function = "osso_rpc_free_val", cname = "osso_rpc_t")]
     public struct Rpc {
         public int type;
-        public GLib.Value value;
+        [CCode (cname = "value.u")]
+        private uint32 u;
+        [CCode (cname = "value.i")]
+        private int32 i;
+        [CCode (cname = "value.b")]
+        private bool b;
+        [CCode (cname = "value.d")]
+        private double d;
+       [CCode (cname = "value.s")]
+        private string s;
+       public uint32 to_uint32 () requires (type == 'u') {
+            return u;
+       }
+       public int32 to_int32 () requires (type == 'i') {
+            return i;
+       }
+       public bool to_bool () requires (type == 'b') {
+            return b;
+       }
+       public double to_double () requires (type == 'd') {
+            return d;
+       }
+        public unowned string to_string () requires (type == 's') {
+            return s;
+        }
     }
 
     /* Enums */