Author: chromatic
Date: Wed Feb 20 21:50:24 2008
New Revision: 25916
Modified:
branches/pdd17pmc/src/pmc/capture.pmc
Log:
[PMC] Converted Capture PMC to PDD17 for PMC attributes.
Modified: branches/pdd17pmc/src/pmc/capture.pmc
==============================================================================
--- branches/pdd17pmc/src/pmc/capture.pmc (original)
+++ branches/pdd17pmc/src/pmc/capture.pmc Wed Feb 20 21:50:24 2008
@@ -20,21 +20,16 @@
#include "parrot/parrot.h"
-typedef struct Capture_data {
- PMC *array; /* array component */
- PMC *hash; /* hash component */
-} Capture_data;
#define CAPTURE_DATA_SIZE 2
-#define CAPTURE_array(obj) (((Capture_data*)PMC_data(obj))->array)
-#define CAPTURE_hash(obj) (((Capture_data*)PMC_data(obj))->hash)
#define CAPTURE_array_CREATE(i, obj) \
- if (!CAPTURE_array(obj)) CAPTURE_array(obj) = pmc_new(i,
enum_class_ResizablePMCArray);
+ if (!PARROT_CAPTURE(obj)->array) PARROT_CAPTURE(obj)->array = pmc_new(i,
enum_class_ResizablePMCArray);
#define CAPTURE_hash_CREATE(i, obj) \
- if (!CAPTURE_hash(obj)) CAPTURE_hash(obj) = pmc_new(i, enum_class_Hash);
-
+ if (!PARROT_CAPTURE(obj)->hash) PARROT_CAPTURE(obj)->hash = pmc_new(i,
enum_class_Hash);
pmclass Capture need_ext provides array provides hash {
+ ATTR PMC *array;
+ ATTR PMC *hash;
/*
@@ -51,17 +46,18 @@
*/
VTABLE void init() {
- PMC_data(SELF) = mem_allocate_typed(Capture_data);
- CAPTURE_array(SELF) = NULL;
- CAPTURE_hash(SELF) = NULL;
- PMC_int_val(SELF) = CAPTURE_DATA_SIZE;
+ Parrot_Capture *capture = mem_allocate_typed(Parrot_Capture);
+ PMC_data(SELF) = capture;
+ capture->array = NULL;
+ capture->hash = NULL;
+ PMC_int_val(SELF) = CAPTURE_DATA_SIZE;
PObj_active_destroy_SET(SELF);
PObj_data_is_PMC_array_SET(SELF);
}
VTABLE void destroy() {
- if (PMC_data(SELF)) {
- mem_sys_free(PMC_data(SELF));
+ if (PARROT_CAPTURE(SELF)) {
+ mem_sys_free(PARROT_CAPTURE(SELF));
PMC_data(SELF) = NULL;
}
@@ -86,22 +82,26 @@
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_set_number_keyed_int(INTERP, CAPTURE_array(SELF), key, value);
+ VTABLE_set_number_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key, value);
}
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_set_integer_keyed_int(INTERP, CAPTURE_array(SELF), key, value);
+ VTABLE_set_integer_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key, value);
}
VTABLE void set_pmc_keyed_int(INTVAL key, PMC *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_set_pmc_keyed_int(INTERP, CAPTURE_array(SELF), key, value);
+ VTABLE_set_pmc_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key, value);
}
VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_set_string_keyed_int(INTERP, CAPTURE_array(SELF), key, value);
+ VTABLE_set_string_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key, value);
}
/*
@@ -122,22 +122,26 @@
VTABLE FLOATVAL get_number_keyed_int(INTVAL key) {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_get_number_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ return VTABLE_get_number_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key);
}
VTABLE INTVAL get_integer_keyed_int(INTVAL key) {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_get_integer_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ return VTABLE_get_integer_keyed_int(INTERP,
PARROT_CAPTURE(SELF)->array,
+ key);
}
VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_get_pmc_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ return VTABLE_get_pmc_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key);
}
VTABLE STRING *get_string_keyed_int(INTVAL key) {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_get_string_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ return VTABLE_get_string_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key);
}
/*
@@ -168,42 +172,42 @@
VTABLE void push_float(FLOATVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_push_float(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_push_float(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
VTABLE void push_integer(INTVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_push_integer(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_push_integer(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
void push_pmc(PMC *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_push_pmc(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_push_pmc(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
VTABLE void push_string(STRING *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_push_string(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_push_string(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
VTABLE void unshift_float(FLOATVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_unshift_float(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_unshift_float(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
VTABLE void unshift_integer(INTVAL value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_unshift_integer(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_unshift_integer(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
void unshift_pmc(PMC *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_unshift_pmc(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_unshift_pmc(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
VTABLE void unshift_string(STRING *value) {
CAPTURE_array_CREATE(INTERP, SELF);
- VTABLE_unshift_string(INTERP, CAPTURE_array(SELF), value);
+ VTABLE_unshift_string(INTERP, PARROT_CAPTURE(SELF)->array, value);
}
/*
@@ -234,42 +238,42 @@
VTABLE FLOATVAL pop_float() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_pop_float(INTERP, CAPTURE_array(SELF));
+ return VTABLE_pop_float(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE INTVAL pop_integer() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_pop_integer(INTERP, CAPTURE_array(SELF));
+ return VTABLE_pop_integer(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE PMC *pop_pmc() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_pop_pmc(INTERP, CAPTURE_array(SELF));
+ return VTABLE_pop_pmc(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE STRING *pop_string() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_pop_string(INTERP, CAPTURE_array(SELF));
+ return VTABLE_pop_string(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE FLOATVAL shift_float() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_shift_float(INTERP, CAPTURE_array(SELF));
+ return VTABLE_shift_float(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE INTVAL shift_integer() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_shift_integer(INTERP, CAPTURE_array(SELF));
+ return VTABLE_shift_integer(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE PMC *shift_pmc() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_shift_pmc(INTERP, CAPTURE_array(SELF));
+ return VTABLE_shift_pmc(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE STRING *shift_string() {
CAPTURE_array_CREATE(INTERP, SELF);
- return VTABLE_shift_string(INTERP, CAPTURE_array(SELF));
+ return VTABLE_shift_string(INTERP, PARROT_CAPTURE(SELF)->array);
}
/*
@@ -295,24 +299,29 @@
*/
VTABLE INTVAL elements() {
- if (!CAPTURE_array(SELF)) return 0;
- return VTABLE_elements(INTERP, CAPTURE_array(SELF));
+ if (!PARROT_CAPTURE(SELF)->array) return 0;
+ return VTABLE_elements(INTERP, PARROT_CAPTURE(SELF)->array);
}
VTABLE INTVAL defined_keyed_int(INTVAL key) {
- if (!CAPTURE_array(SELF)) return 0;
- return VTABLE_defined_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ if (!PARROT_CAPTURE(SELF)->array)
+ return 0;
+
+ return VTABLE_defined_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key);
}
VTABLE INTVAL exists_keyed_int(INTVAL key) {
- if (!CAPTURE_array(SELF)) return 0;
- return VTABLE_exists_keyed_int(INTERP, CAPTURE_array(SELF), key);
+ if (!PARROT_CAPTURE(SELF)->array)
+ return 0;
+
+ return VTABLE_exists_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array,
+ key);
}
VTABLE void delete_keyed_int(INTVAL key) {
- if (CAPTURE_array(SELF)) {
- VTABLE_delete_keyed_int(INTERP, CAPTURE_array(SELF), key);
- }
+ if (PARROT_CAPTURE(SELF)->array)
+ VTABLE_delete_keyed_int(INTERP, PARROT_CAPTURE(SELF)->array, key);
}
/*
@@ -333,22 +342,23 @@
VTABLE void set_number_keyed(PMC *key, FLOATVAL value) {
CAPTURE_hash_CREATE(INTERP, SELF);
- VTABLE_set_number_keyed(INTERP, CAPTURE_hash(SELF), key, value);
+ VTABLE_set_number_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key,
value);
}
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
CAPTURE_hash_CREATE(INTERP, SELF);
- VTABLE_set_integer_keyed(INTERP, CAPTURE_hash(SELF), key, value);
+ VTABLE_set_integer_keyed(INTERP, PARROT_CAPTURE(SELF)->hash,
+ key, value);
}
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
CAPTURE_hash_CREATE(INTERP, SELF);
- VTABLE_set_pmc_keyed(INTERP, CAPTURE_hash(SELF), key, value);
+ VTABLE_set_pmc_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key, value);
}
VTABLE void set_string_keyed(PMC *key, STRING *value) {
CAPTURE_hash_CREATE(INTERP, SELF);
- VTABLE_set_string_keyed(INTERP, CAPTURE_hash(SELF), key, value);
+ VTABLE_set_string_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key,
value);
}
/*
@@ -369,22 +379,23 @@
VTABLE FLOATVAL get_number_keyed(PMC *key) {
CAPTURE_hash_CREATE(INTERP, SELF);
- return VTABLE_get_number_keyed(INTERP, CAPTURE_hash(SELF), key);
+ return VTABLE_get_number_keyed(INTERP, PARROT_CAPTURE(SELF)->hash,
key);
}
VTABLE INTVAL get_integer_keyed(PMC *key) {
CAPTURE_hash_CREATE(INTERP, SELF);
- return VTABLE_get_integer_keyed(INTERP, CAPTURE_hash(SELF), key);
+ return VTABLE_get_integer_keyed(INTERP, PARROT_CAPTURE(SELF)->hash,
+ key);
}
VTABLE PMC *get_pmc_keyed(PMC *key) {
CAPTURE_hash_CREATE(INTERP, SELF);
- return VTABLE_get_pmc_keyed(INTERP, CAPTURE_hash(SELF), key);
+ return VTABLE_get_pmc_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key);
}
VTABLE STRING *get_string_keyed(PMC *key) {
CAPTURE_hash_CREATE(INTERP, SELF);
- return VTABLE_get_string_keyed(INTERP, CAPTURE_hash(SELF), key);
+ return VTABLE_get_string_keyed(INTERP, PARROT_CAPTURE(SELF)->hash,
key);
}
/*
@@ -406,18 +417,18 @@
*/
VTABLE INTVAL defined_keyed(PMC *key) {
- if (!CAPTURE_array(SELF)) return 0;
- return VTABLE_defined_keyed(INTERP, CAPTURE_hash(SELF), key);
+ if (!PARROT_CAPTURE(SELF)->hash) return 0;
+ return VTABLE_defined_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key);
}
VTABLE INTVAL exists_keyed(PMC *key) {
- if (!CAPTURE_array(SELF)) return 0;
- return VTABLE_exists_keyed(INTERP, CAPTURE_hash(SELF), key);
+ if (!PARROT_CAPTURE(SELF)->hash) return 0;
+ return VTABLE_exists_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key);
}
VTABLE void delete_keyed(PMC *key) {
- if (CAPTURE_array(SELF))
- VTABLE_delete_keyed(INTERP, CAPTURE_hash(SELF), key);
+ if (PARROT_CAPTURE(SELF)->hash)
+ VTABLE_delete_keyed(INTERP, PARROT_CAPTURE(SELF)->hash, key);
}
/*
@@ -436,12 +447,14 @@
/* XXX: This workaround is for when we get here as
part of a subclass of Capture */
if (PObj_is_object_TEST(SELF)) {
- STRING * classname = CONST_STRING(INTERP, "Capture");
- PMC * classobj = Parrot_oo_get_class_str(INTERP, classname);
- capt = VTABLE_get_attr_keyed(interp, SELF, classobj,
CONST_STRING(interp, "proxy"));
+ STRING *classname = CONST_STRING(INTERP, "Capture");
+ PMC *classobj = Parrot_oo_get_class_str(INTERP, classname);
+ capt = VTABLE_get_attr_keyed(interp, SELF, classobj,
+ CONST_STRING(interp, "proxy"));
}
+
CAPTURE_array_CREATE(INTERP, capt);
- capt_array = CAPTURE_array(capt);
+ capt_array = PARROT_CAPTURE(capt)->array;
PCCRETURN(PMC *capt_array);
}
@@ -452,12 +465,13 @@
/* XXX: This workaround is for when we get here as
part of a subclass of Capture */
if (PObj_is_object_TEST(SELF)) {
- STRING * classname = CONST_STRING(INTERP, "Capture");
- PMC * classobj = Parrot_oo_get_class_str(INTERP, classname);
- capt = VTABLE_get_attr_keyed(interp, SELF, classobj,
CONST_STRING(interp, "proxy"));
+ STRING *classname = CONST_STRING(INTERP, "Capture");
+ PMC *classobj = Parrot_oo_get_class_str(INTERP, classname);
+ capt = VTABLE_get_attr_keyed(interp, SELF, classobj,
+ CONST_STRING(interp, "proxy"));
}
CAPTURE_hash_CREATE(INTERP, capt);
- capt_hash = CAPTURE_hash(capt);
+ capt_hash = PARROT_CAPTURE(capt)->hash;
PCCRETURN(PMC *capt_hash);
}
@@ -481,4 +495,3 @@
* End:
* vim: expandtab shiftwidth=4:
*/
-