Author: chromatic
Date: Sat Jul 26 11:35:10 2008
New Revision: 29768

Modified:
   trunk/src/pmc/env.pmc
   trunk/src/pmc/fixedpmcarray.pmc
   trunk/src/pmc/fixedstringarray.pmc
   trunk/src/pmc/iterator.pmc
   trunk/src/pmc/string.pmc

Log:
[PMC] Made every PMC which stores a Key in an Iterator use the latter's set_key
method.  Encapsulation++.

Modified: trunk/src/pmc/env.pmc
==============================================================================
--- trunk/src/pmc/env.pmc       (original)
+++ trunk/src/pmc/env.pmc       Sat Jul 26 11:35:10 2008
@@ -73,9 +73,11 @@
 */
 
     VTABLE PMC *get_iter() {
-        PMC *iter            = pmc_new_init(interp, enum_class_Iterator, SELF);
-        PMC *key             = pmc_new(interp, enum_class_Key);
-        PMC_struct_val(iter) = key;
+        STRING *name         = CONST_STRING(interp, "set_key");
+        PMC    *iter         = pmc_new_init(interp, enum_class_Iterator, SELF);
+        PMC    *key          = pmc_new(interp, enum_class_Key);
+
+        Parrot_PCCINVOKE(interp, iter, name, "P->", key);
         PObj_get_FLAGS(key) |= KEY_integer_FLAG;
         PMC_int_val(key)     = 0;
 

Modified: trunk/src/pmc/fixedpmcarray.pmc
==============================================================================
--- trunk/src/pmc/fixedpmcarray.pmc     (original)
+++ trunk/src/pmc/fixedpmcarray.pmc     Sat Jul 26 11:35:10 2008
@@ -646,8 +646,9 @@
 
     VTABLE PMC *slice(PMC *key, INTVAL f) {
         if (f == 0) {
+            STRING     *name = CONST_STRING(interp, "set_key");
             PMC * const iter = pmc_new_init(INTERP, enum_class_Iterator, SELF);
-            PMC_struct_val(iter) = key;
+            Parrot_PCCINVOKE(interp, iter, name, "P->", key);
             return iter;
         }
 
@@ -655,9 +656,11 @@
     }
 
     VTABLE PMC *get_iter() {
+        STRING     *name     = CONST_STRING(interp, "set_key");
         PMC * const iter     = pmc_new_init(INTERP, enum_class_Iterator, SELF);
         PMC * const key      = pmc_new(INTERP, enum_class_Key);
-        PMC_struct_val(iter) = key;
+
+        Parrot_PCCINVOKE(interp, iter, name, "P->", key);
         PObj_get_FLAGS(key) |= KEY_integer_FLAG;
         PMC_int_val(key)     = 0;
 

Modified: trunk/src/pmc/fixedstringarray.pmc
==============================================================================
--- trunk/src/pmc/fixedstringarray.pmc  (original)
+++ trunk/src/pmc/fixedstringarray.pmc  Sat Jul 26 11:35:10 2008
@@ -138,9 +138,11 @@
 
 */
     VTABLE PMC *get_iter() {
+        STRING     *name     = CONST_STRING(interp, "set_key");
         PMC * const iter     = pmc_new_init(INTERP, enum_class_Iterator, SELF);
         PMC * const key      = pmc_new(INTERP, enum_class_Key);
-        PMC_struct_val(iter) = key;
+
+        Parrot_PCCINVOKE(interp, iter, name, "P->", key);
         PObj_get_FLAGS(key) |= KEY_integer_FLAG;
         VTABLE_set_integer_native(INTERP, key,
                 VTABLE_get_bool(INTERP, SELF) ? 0 : -1);

Modified: trunk/src/pmc/iterator.pmc
==============================================================================
--- trunk/src/pmc/iterator.pmc  (original)
+++ trunk/src/pmc/iterator.pmc  Sat Jul 26 11:35:10 2008
@@ -140,10 +140,11 @@
 */
 
     VTABLE PMC *clone() {
+        STRING     *name    = CONST_STRING(interp, "set_key");
         PMC * const key     = (PMC *)PMC_struct_val(SELF);
         PMC * const res     = pmc_new_init(INTERP, SELF->vtable->base_type,
                                            PMC_pmc_val(SELF));
-        PMC_struct_val(res) = VTABLE_clone(interp, key);
+        Parrot_PCCINVOKE(interp, res, name, "P->", VTABLE_clone(interp, key));
         return res;
     }
 

Modified: trunk/src/pmc/string.pmc
==============================================================================
--- trunk/src/pmc/string.pmc    (original)
+++ trunk/src/pmc/string.pmc    Sat Jul 26 11:35:10 2008
@@ -767,8 +767,9 @@
 
     VTABLE PMC *slice(PMC *key, INTVAL f) {
         if (f == 0) {
+            STRING     *name = CONST_STRING(interp, "set_key");
             PMC * const iter = pmc_new_init(INTERP, enum_class_Iterator, SELF);
-            PMC_struct_val(iter) = key;
+            Parrot_PCCINVOKE(interp, iter, name, "P->", key);
             return iter;
         }
 
@@ -776,9 +777,11 @@
     }
 
     VTABLE PMC *get_iter() {
+        STRING     *name     = CONST_STRING(interp, "set_key");
         PMC * const iter     = pmc_new_init(INTERP, enum_class_Iterator, SELF);
-        PMC * const key      =  pmc_new(INTERP, enum_class_Key);
-        PMC_struct_val(iter) = key;
+        PMC * const key      = pmc_new(INTERP, enum_class_Key);
+
+        Parrot_PCCINVOKE(interp, iter, name, "P->", key);
         PObj_get_FLAGS(key) |= KEY_integer_FLAG;
         PMC_int_val(key)     = 0;
 

Reply via email to