Add support for ownership transfer with properties using the HASH (#)
authorRaffaele Sandrini <raffaele@sandrini.ch>
Thu, 20 Sep 2007 13:02:59 +0000 (13:02 +0000)
committerRaffaele Sandrini <rasa@src.gnome.org>
Thu, 20 Sep 2007 13:02:59 +0000 (13:02 +0000)
2007-09-20  Raffaele Sandrini  <raffaele@sandrini.ch>

* vala/parser.y: Add support for ownership transfer with properties
using the HASH (#) modifier e.g. public string!# foo { get; set; }

svn path=/trunk/; revision=623

ChangeLog
vala/parser.y

index 3dde9f1..e4e7694 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-09-20  Raffaele Sandrini  <raffaele@sandrini.ch>
 
+       * vala/parser.y: Add support for ownership transfer with properties
+       using the HASH (#) modifier. e.g. public string!# foo { get; set; }
+
+2007-09-20  Raffaele Sandrini  <raffaele@sandrini.ch>
+
        * vapi/glib-2.0.vala: add G.HashTable.size ()
 
 2007-09-20  Jürg Billeter  <j@bitron.ch>
index 4bc417d..c8ed310 100644 (file)
@@ -3066,6 +3066,13 @@ property_declaration
          {
                ValaSourceReference *src;
 
+               /* HASH in property type context has the meaning of transferring
+                * ownership instead of taking it */
+               if (vala_type_reference_get_takes_ownership ($5)) {
+                       vala_type_reference_set_transfers_ownership ($5, TRUE);
+                       vala_type_reference_set_takes_ownership ($5, FALSE);
+               }
+
                if (!vala_type_reference_get_is_weak ($5)) {
                        vala_type_reference_set_takes_ownership ($5, TRUE);
                }
@@ -3099,6 +3106,13 @@ property_declaration
          {
                ValaSourceReference *src;
 
+               /* HASH in property type context has the meaning of transferring
+                * ownership instead of taking it */
+               if (vala_type_reference_get_takes_ownership ($5)) {
+                       vala_type_reference_set_transfers_ownership ($5, TRUE);
+                       vala_type_reference_set_takes_ownership ($5, FALSE);
+               }
+
                if (!vala_type_reference_get_is_weak ($5)) {
                        vala_type_reference_set_takes_ownership ($5, TRUE);
                }