support takes_ownership metadata attribute for method parameters
authorJuerg Billeter <j@bitron.ch>
Sun, 13 Apr 2008 12:38:46 +0000 (12:38 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 13 Apr 2008 12:38:46 +0000 (12:38 +0000)
2008-04-13  Juerg Billeter  <j@bitron.ch>

* vapigen/valagidlparser.vala: support takes_ownership metadata
  attribute for method parameters

* vapi/packages/gnome-keyring-1/: AttributeList fixes,
  patch by Ross Burton, fixes bug 527522

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

svn path=/trunk/; revision=1204

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

index 707df96..159bbf9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2008-04-13  Jürg Billeter  <j@bitron.ch>
 
+       * vapigen/valagidlparser.vala: support takes_ownership metadata
+         attribute for method parameters
+
+       * vapi/packages/gnome-keyring-1/: AttributeList fixes,
+         patch by Ross Burton, fixes bug 527522
+
+       * vapi/gnome-keyring-1.vapi: regenerated
+
+2008-04-13  Jürg Billeter  <j@bitron.ch>
+
        * vala/valadatatype.vala: don't use `weak' for value types used as
          type arguments
 
index f6d95e8..bda3802 100644 (file)
@@ -46,6 +46,17 @@ namespace GnomeKeyring {
                KEYRING_ALREADY_EXISTS,
                NO_MATCH
        }
+       [CCode (copy_function = "gnome_keyring_attribute_list_copy", cheader_filename = "gnome-keyring.h")]
+       public class AttributeList {
+               [NoArrayLength]
+               public GnomeKeyring.Attribute[] data;
+               public uint len;
+               public GnomeKeyring.Attribute index (int i);
+               public AttributeList ();
+               public void append_string (string name, string value);
+               public void append_uint32 (string name, uint value);
+               public weak GnomeKeyring.AttributeList copy ();
+       }
        [CCode (copy_function = "gnome_keyring_access_control_copy", cheader_filename = "gnome-keyring.h")]
        public class AccessControl {
                public weak GnomeKeyring.AccessControl copy ();
@@ -57,18 +68,6 @@ namespace GnomeKeyring {
                public ApplicationRef ();
        }
        [CCode (cheader_filename = "gnome-keyring.h")]
-       public class Attribute {
-               public weak string name;
-               public GnomeKeyring.AttributeType type;
-               public pointer value;
-       }
-       [CCode (copy_function = "gnome_keyring_attribute_list_copy", cheader_filename = "gnome-keyring.h")]
-       public class AttributeList {
-               public void append_string (string name, string value);
-               public void append_uint32 (string name, uint value);
-               public weak GnomeKeyring.AttributeList copy ();
-       }
-       [CCode (cheader_filename = "gnome-keyring.h")]
        public class Found {
                public weak string keyring;
                public uint item_id;
@@ -122,6 +121,12 @@ namespace GnomeKeyring {
                public pointer reserved3;
        }
        [CCode (cheader_filename = "gnome-keyring.h")]
+       public struct Attribute {
+               public weak string name;
+               public GnomeKeyring.AttributeType type;
+               public pointer value;
+       }
+       [CCode (cheader_filename = "gnome-keyring.h")]
        public delegate void OperationDoneCallback (GnomeKeyring.Result result);
        [CCode (cheader_filename = "gnome-keyring.h")]
        public delegate void OperationGetAttributesCallback (GnomeKeyring.Result result, GnomeKeyring.AttributeList attributes);
@@ -250,7 +255,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<uint> ids);
+       public static GnomeKeyring.Result list_item_ids_sync (string keyring, out 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 d3fe38a..9a8f728 100644 (file)
@@ -2,4 +2,14 @@ namespace GnomeKeyring
 {
        public const string DEFAULT;
        public const weak GnomeKeyring.PasswordSchema NETWORK_PASSWORD;
+
+       [CCode (free_function = "gnome_keyring_attribute_list_free")]
+       public class AttributeList {
+               [Import]
+               public Attribute index (int i);
+               
+               [NoArrayLength]
+               public Attribute[] data;
+               public uint len;
+       }
 }
index cd302c2..de16eda 100644 (file)
@@ -1,3 +1,5 @@
+GnomeKeyring cheader_filename="gnome-keyring.h"
+
 #Simple password api
 gnome_keyring_store_password ellipsis="1"
 gnome_keyring_store_password.data hidden="1"
@@ -22,7 +24,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_item_ids_sync.ids type_arguments="uint" is_out="1" takes_ownership="1"
 gnome_keyring_list_keyring_names.data hidden="1"
 
 #find item api
@@ -36,6 +38,7 @@ gnome_keyring_set_network_password.data hidden="1"
 gnome_keyring_find_network_password.data hidden="1"
 
 #item api
+GnomeKeyringAttribute is_value_type="1"
 gnome_keyring_item_create.data hidden="1"
 gnome_keyring_item_delete.data hidden="1"
 gnome_keyring_item_get_acl.data hidden="1"
index d2483fa..9a941a1 100644 (file)
@@ -1342,6 +1342,10 @@ public class Vala.GIdlParser : CodeVisitor {
                                                if (eval (nv[1]) == "1") {
                                                        param_type.transfers_ownership = true;
                                                }
+                                       } else if (nv[0] == "takes_ownership") {
+                                               if (eval (nv[1]) == "1") {
+                                                       param_type.takes_ownership = true;
+                                               }
                                        } else if (nv[0] == "hidden") {
                                                if (eval (nv[1]) == "1") {
                                                        hide_param = true;