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;