don't use `weak' for value types used as type arguments
authorJuerg Billeter <j@bitron.ch>
Sun, 13 Apr 2008 12:30:03 +0000 (12:30 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 13 Apr 2008 12:30:03 +0000 (12:30 +0000)
2008-04-13  Juerg Billeter  <j@bitron.ch>

* vala/valadatatype.vala: don't use `weak' for value types used as
  type arguments

* vapigen/valagidlparser.vala: add metadata attribute to specify
  type arguments

* vapi/packages/gnome-keyring-1/: fix
  gnome_keyring_list_item_ids_sync binding, fixes bug 527230

* vapi/gnome-keyring-1.vapi: regenerated

svn path=/trunk/; revision=1203

ChangeLog
vala/valadatatype.vala
vapi/gnome-keyring-1.vapi
vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata
vapigen/valagidlparser.vala

index 26c6784..707df96 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2008-04-13  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valadatatype.vala: don't use `weak' for value types used as
+         type arguments
+
+       * vapigen/valagidlparser.vala: add metadata attribute to specify
+         type arguments
+
+       * vapi/packages/gnome-keyring-1/: fix
+         gnome_keyring_list_item_ids_sync binding, fixes bug 527230
+
+       * vapi/gnome-keyring-1.vapi: regenerated
+
+2008-04-13  Jürg Billeter  <j@bitron.ch>
+
        * vala/valaparser.vala: set correct source_reference for property
          accessors
 
index 66366c3..53a5548 100644 (file)
@@ -208,7 +208,7 @@ public abstract class Vala.DataType : CodeNode {
                                } else {
                                        first = false;
                                }
-                               if (!type_arg.takes_ownership) {
+                               if (type_arg.is_reference_type_or_type_parameter () && !type_arg.takes_ownership) {
                                        s += "weak ";
                                }
                                if (type_arg.data_type != null) {
index 94f71c2..f6d95e8 100644 (file)
@@ -2,38 +2,38 @@
 
 [CCode (cprefix = "GnomeKeyring", lower_case_cprefix = "gnome_keyring_")]
 namespace GnomeKeyring {
-       [CCode (cprefix = "GNOME_KEYRING_ACCESS_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_ACCESS_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum AccessRestriction {
                ASK,
                DENY,
-               ALLOW,
+               ALLOW
        }
-       [CCode (cprefix = "GNOME_KEYRING_ACCESS_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_ACCESS_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum AccessType {
                READ,
                WRITE,
-               REMOVE,
+               REMOVE
        }
-       [CCode (cprefix = "GNOME_KEYRING_ATTRIBUTE_TYPE_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_ATTRIBUTE_TYPE_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum AttributeType {
                STRING,
-               UINT32,
+               UINT32
        }
-       [CCode (cprefix = "GNOME_KEYRING_ITEM_INFO_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_ITEM_INFO_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum ItemInfoFlags {
                BASICS,
-               SECRET,
+               SECRET
        }
-       [CCode (cprefix = "GNOME_KEYRING_ITEM_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_ITEM_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum ItemType {
                GENERIC_SECRET,
                NETWORK_PASSWORD,
                NOTE,
                CHAINED_KEYRING_PASSWORD,
                ENCRYPTION_KEY_PASSWORD,
-               LAST_TYPE,
+               LAST_TYPE
        }
-       [CCode (cprefix = "GNOME_KEYRING_RESULT_", cheader_filename = "gnome-keyring.h")]
+       [CCode (cprefix = "GNOME_KEYRING_RESULT_", has_type_id = "0", cheader_filename = "gnome-keyring.h")]
        public enum Result {
                OK,
                DENIED,
@@ -44,7 +44,7 @@ namespace GnomeKeyring {
                IO_ERROR,
                CANCELLED,
                KEYRING_ALREADY_EXISTS,
-               NO_MATCH,
+               NO_MATCH
        }
        [CCode (copy_function = "gnome_keyring_access_control_copy", cheader_filename = "gnome-keyring.h")]
        public class AccessControl {
@@ -250,7 +250,7 @@ namespace GnomeKeyring {
        [CCode (cheader_filename = "gnome-keyring.h")]
        public static pointer list_item_ids (string keyring, GnomeKeyring.OperationGetListCallback callback, GLib.DestroyNotify destroy_data);
        [CCode (cheader_filename = "gnome-keyring.h")]
-       public static GnomeKeyring.Result list_item_ids_sync (string keyring, GLib.List ids);
+       public static GnomeKeyring.Result list_item_ids_sync (string keyring, GLib.List<uint> ids);
        [CCode (cheader_filename = "gnome-keyring.h")]
        public static pointer list_keyring_names (GnomeKeyring.OperationGetListCallback callback, GLib.DestroyNotify destroy_data);
        [CCode (cheader_filename = "gnome-keyring.h")]
index e0f3a5c..cd302c2 100644 (file)
@@ -22,6 +22,7 @@ gnome_keyring_change_password.data hidden="1"
 gnome_keyring_create.data hidden="1"
 gnome_keyring_@delete.data hidden="1"
 gnome_keyring_list_item_ids.data hidden="1"
+gnome_keyring_list_item_ids_sync.ids type_arguments="uint"
 gnome_keyring_list_keyring_names.data hidden="1"
 
 #find item api
index 64b9f17..d2483fa 100644 (file)
@@ -1262,6 +1262,13 @@ public class Vala.GIdlParser : CodeVisitor {
                                        }
                                } else if (nv[0] == "type_name") {
                                        return_type.unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1]));
+                               } else if (nv[0] == "type_arguments") {
+                                       var type_args = eval (nv[1]).split (",");
+                                       foreach (string type_arg in type_args) {
+                                               var arg_type = new UnresolvedType.from_symbol (new UnresolvedSymbol (null, type_arg));
+                                               arg_type.takes_ownership = true;
+                                               return_type.add_type_argument (arg_type);
+                                       }
                                }
                        }
                }
@@ -1346,6 +1353,13 @@ public class Vala.GIdlParser : CodeVisitor {
                                                array_length_pos = eval (nv[1]).to_double ();
                                        } else if (nv[0] == "type_name") {
                                                param_type.unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1]));
+                                       } else if (nv[0] == "type_arguments") {
+                                               var type_args = eval (nv[1]).split (",");
+                                               foreach (string type_arg in type_args) {
+                                                       var arg_type = new UnresolvedType.from_symbol (new UnresolvedSymbol (null, type_arg));
+                                                       arg_type.takes_ownership = true;
+                                                       param_type.add_type_argument (arg_type);
+                                               }
                                        }
                                }
                        }