From 8fb7522a6f40a4dce0d7527046311e4d2e05702d Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Sun, 13 Apr 2008 12:30:03 +0000 Subject: [PATCH] don't use `weak' for value types used as type arguments 2008-04-13 Juerg Billeter * 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 | 13 +++++++++++ vala/valadatatype.vala | 2 +- vapi/gnome-keyring-1.vapi | 26 +++++++++++----------- .../gnome-keyring-1/gnome-keyring-1.metadata | 1 + vapigen/valagidlparser.vala | 14 ++++++++++++ 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 26c6784..707df96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2008-04-13 Jürg Billeter + * 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 + * vala/valaparser.vala: set correct source_reference for property accessors diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala index 66366c3..53a5548 100644 --- a/vala/valadatatype.vala +++ b/vala/valadatatype.vala @@ -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) { diff --git a/vapi/gnome-keyring-1.vapi b/vapi/gnome-keyring-1.vapi index 94f71c2..f6d95e8 100644 --- a/vapi/gnome-keyring-1.vapi +++ b/vapi/gnome-keyring-1.vapi @@ -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 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.metadata b/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata index e0f3a5c..cd302c2 100644 --- a/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata +++ b/vapi/packages/gnome-keyring-1/gnome-keyring-1.metadata @@ -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 diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 64b9f17..d2483fa 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -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); + } } } } -- 2.7.4