]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add GValue support for interfaces with non-GObject class prerequisite
authorLuca Bruno <lethalman88@gmail.com>
Mon, 26 Apr 2010 12:51:58 +0000 (14:51 +0200)
committerJürg Billeter <j@bitron.ch>
Tue, 27 Apr 2010 11:00:27 +0000 (13:00 +0200)
Fixes bug 615904.

vala/valainterface.vala

index 54890cf339e61cd5a9cea386436d0a2e42e3a3d7..e88d44fc667fdbc2d344f2465c65f4cb8eabfa28 100644 (file)
@@ -508,19 +508,43 @@ public class Vala.Interface : ObjectTypeSymbol {
        }
 
        public override string? get_marshaller_type_name () {
-               return "OBJECT";
+               foreach (DataType prerequisite in prerequisites) {
+                       string type_name = prerequisite.data_type.get_marshaller_type_name ();
+                       if (type_name != null) {
+                               return type_name;
+                       }
+               }
+               return null;
        }
 
        public override string? get_get_value_function () {
-               return "g_value_get_object";
+               foreach (DataType prerequisite in prerequisites) {
+                       string get_value_func = prerequisite.data_type.get_get_value_function ();
+                       if (get_value_func != null) {
+                               return get_value_func;
+                       }
+               }
+               return null;
        }
        
        public override string? get_set_value_function () {
-               return "g_value_set_object";
+               foreach (DataType prerequisite in prerequisites) {
+                       string set_value_func = prerequisite.data_type.get_set_value_function ();
+                       if (set_value_func != null) {
+                               return set_value_func;
+                       }
+               }
+               return null;
        }
 
        public override string? get_take_value_function () {
-               return "g_value_take_object";
+               foreach (DataType prerequisite in prerequisites) {
+                       string take_value_func = prerequisite.data_type.get_take_value_function ();
+                       if (take_value_func != null) {
+                               return take_value_func;
+                       }
+               }
+               return null;
        }
 
        public override string? get_type_id () {