From 6e19636b022f7ecd6cadda48a518870249ae7de4 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Sun, 13 Apr 2008 12:38:46 +0000 Subject: [PATCH] support takes_ownership metadata attribute for method parameters 2008-04-13 Juerg Billeter * 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 | 10 +++++++ vapi/gnome-keyring-1.vapi | 31 +++++++++++++--------- .../gnome-keyring-1/gnome-keyring-1-custom.vala | 10 +++++++ .../gnome-keyring-1/gnome-keyring-1.metadata | 5 +++- vapigen/valagidlparser.vala | 4 +++ 5 files changed, 46 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 707df96..159bbf9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2008-04-13 Jürg Billeter + * 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 + * vala/valadatatype.vala: don't use `weak' for value types used as type arguments diff --git a/vapi/gnome-keyring-1.vapi b/vapi/gnome-keyring-1.vapi index f6d95e8..bda3802 100644 --- a/vapi/gnome-keyring-1.vapi +++ b/vapi/gnome-keyring-1.vapi @@ -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 ids); + public static GnomeKeyring.Result list_item_ids_sync (string keyring, out GLib.List 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")] diff --git a/vapi/packages/gnome-keyring-1/gnome-keyring-1-custom.vala b/vapi/packages/gnome-keyring-1/gnome-keyring-1-custom.vala index d3fe38a..9a8f728 100644 --- a/vapi/packages/gnome-keyring-1/gnome-keyring-1-custom.vala +++ b/vapi/packages/gnome-keyring-1/gnome-keyring-1-custom.vala @@ -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; + } } diff --git a/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata b/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata index cd302c2..de16eda 100644 --- a/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata +++ b/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata @@ -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" diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index d2483fa..9a941a1 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -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; -- 2.7.4