cvsuser 04/12/30 03:46:39
Modified: dynclasses pybuiltin.pmc pyconsts.h pylist.pmc pystring.pmc
src call_list.txt
Log:
Progress towards passing t/pie/b0.t
Revision Changes Path
1.38 +7 -1 parrot/dynclasses/pybuiltin.pmc
Index: pybuiltin.pmc
===================================================================
RCS file: /cvs/public/parrot/dynclasses/pybuiltin.pmc,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- pybuiltin.pmc 28 Dec 2004 00:41:25 -0000 1.37
+++ pybuiltin.pmc 30 Dec 2004 11:46:38 -0000 1.38
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: pybuiltin.pmc,v 1.37 2004/12/28 00:41:25 rubys Exp $
+$Id: pybuiltin.pmc,v 1.38 2004/12/30 11:46:38 rubys Exp $
=head1 NAME
@@ -287,6 +287,12 @@
scratchpad_store_by_name(INTERP, pad, 0, key, item);
PyBuiltin_PyStaticMeth_class = item;
+ key = const_string(INTERP, "str");
+ item = make_type(INTERP, PyBuiltin_PyString, key);
+ VTABLE_setprop(INTERP, item, PyString_bases, parent);
+ scratchpad_store_by_name(INTERP, pad, 0, key, item);
+ PyBuiltin_PyString_class = item;
+
key = const_string(INTERP, "xrange");
item = make_type(INTERP, PyBuiltin_PySlice, key);
VTABLE_setprop(INTERP, item, PyString_bases, parent);
1.5 +49 -48 parrot/dynclasses/pyconsts.h
Index: pyconsts.h
===================================================================
RCS file: /cvs/public/parrot/dynclasses/pyconsts.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- pyconsts.h 28 Dec 2004 00:41:25 -0000 1.4
+++ pyconsts.h 30 Dec 2004 11:46:38 -0000 1.5
@@ -1,63 +1,64 @@
#if defined(INSIDE_PYBUILTIN)
-# define VAR_SCOPE
+# define PYVAR_SCOPE
#else
-# define VAR_SCOPE extern
+# define PYVAR_SCOPE extern
#endif /* INSIDE_PYBUILTIN */
/* Python class types */
-VAR_SCOPE INTVAL PyBuiltin_PyObject;
-VAR_SCOPE INTVAL PyBuiltin_PyBoolean;
-VAR_SCOPE INTVAL PyBuiltin_PyClass;
-VAR_SCOPE INTVAL PyBuiltin_PyComplex;
-VAR_SCOPE INTVAL PyBuiltin_PyDict;
-VAR_SCOPE INTVAL PyBuiltin_PyException;
-VAR_SCOPE INTVAL PyBuiltin_PyInt;
-VAR_SCOPE INTVAL PyBuiltin_PyIter;
-VAR_SCOPE INTVAL PyBuiltin_PyFloat;
-VAR_SCOPE INTVAL PyBuiltin_PyList;
-VAR_SCOPE INTVAL PyBuiltin_PyLong;
-VAR_SCOPE INTVAL PyBuiltin_PyNCI;
-VAR_SCOPE INTVAL PyBuiltin_PyNone;
-VAR_SCOPE INTVAL PyBuiltin_PyProxyClass;
-VAR_SCOPE INTVAL PyBuiltin_PyProxyType;
-VAR_SCOPE INTVAL PyBuiltin_PySlice;
-VAR_SCOPE INTVAL PyBuiltin_PyStaticMeth;
-VAR_SCOPE INTVAL PyBuiltin_PyString;
-VAR_SCOPE INTVAL PyBuiltin_PyTuple;
-VAR_SCOPE INTVAL PyBuiltin_PyType;
+PYVAR_SCOPE INTVAL PyBuiltin_PyObject;
+PYVAR_SCOPE INTVAL PyBuiltin_PyBoolean;
+PYVAR_SCOPE INTVAL PyBuiltin_PyClass;
+PYVAR_SCOPE INTVAL PyBuiltin_PyComplex;
+PYVAR_SCOPE INTVAL PyBuiltin_PyDict;
+PYVAR_SCOPE INTVAL PyBuiltin_PyException;
+PYVAR_SCOPE INTVAL PyBuiltin_PyInt;
+PYVAR_SCOPE INTVAL PyBuiltin_PyIter;
+PYVAR_SCOPE INTVAL PyBuiltin_PyFloat;
+PYVAR_SCOPE INTVAL PyBuiltin_PyList;
+PYVAR_SCOPE INTVAL PyBuiltin_PyLong;
+PYVAR_SCOPE INTVAL PyBuiltin_PyNCI;
+PYVAR_SCOPE INTVAL PyBuiltin_PyNone;
+PYVAR_SCOPE INTVAL PyBuiltin_PyProxyClass;
+PYVAR_SCOPE INTVAL PyBuiltin_PyProxyType;
+PYVAR_SCOPE INTVAL PyBuiltin_PySlice;
+PYVAR_SCOPE INTVAL PyBuiltin_PyStaticMeth;
+PYVAR_SCOPE INTVAL PyBuiltin_PyString;
+PYVAR_SCOPE INTVAL PyBuiltin_PyTuple;
+PYVAR_SCOPE INTVAL PyBuiltin_PyType;
/* Python class objects */
-VAR_SCOPE PMC *PyBuiltin_PyBoolean_class;
-VAR_SCOPE PMC *PyBuiltin_PyComplex_class;
-VAR_SCOPE PMC *PyBuiltin_PyDict_class;
-VAR_SCOPE PMC *PyBuiltin_PyException_class;
-VAR_SCOPE PMC *PyBuiltin_PyInt_class;
-VAR_SCOPE PMC *PyBuiltin_PyFloat_class;
-VAR_SCOPE PMC *PyBuiltin_PyList_class;
-VAR_SCOPE PMC *PyBuiltin_PyLong_class;
-VAR_SCOPE PMC *PyBuiltin_PySlice_class;
-VAR_SCOPE PMC *PyBuiltin_PyStaticMeth_class;
-VAR_SCOPE PMC *PyBuiltin_PyTuple_class;
-VAR_SCOPE PMC *PyBuiltin_PyType_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyBoolean_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyComplex_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyDict_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyException_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyInt_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyFloat_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyList_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyLong_class;
+PYVAR_SCOPE PMC *PyBuiltin_PySlice_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyStaticMeth_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyString_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyTuple_class;
+PYVAR_SCOPE PMC *PyBuiltin_PyType_class;
/* constant strings */
-VAR_SCOPE STRING *PyString_bases;
-VAR_SCOPE STRING *PyString_call;
-VAR_SCOPE STRING *PyString_class;
-VAR_SCOPE STRING *PyString_cmp;
-VAR_SCOPE STRING *PyString_hex;
-VAR_SCOPE STRING *PyString_init;
-VAR_SCOPE STRING *PyString_int;
-VAR_SCOPE STRING *PyString_iter;
-VAR_SCOPE STRING *PyString_name;
-VAR_SCOPE STRING *PyString_new;
-VAR_SCOPE STRING *PyString_oct;
-VAR_SCOPE STRING *PyString_proxy;
-VAR_SCOPE STRING *PyString_repr;
-VAR_SCOPE STRING *PyString_str;
+PYVAR_SCOPE STRING *PyString_bases;
+PYVAR_SCOPE STRING *PyString_call;
+PYVAR_SCOPE STRING *PyString_class;
+PYVAR_SCOPE STRING *PyString_cmp;
+PYVAR_SCOPE STRING *PyString_hex;
+PYVAR_SCOPE STRING *PyString_init;
+PYVAR_SCOPE STRING *PyString_int;
+PYVAR_SCOPE STRING *PyString_iter;
+PYVAR_SCOPE STRING *PyString_name;
+PYVAR_SCOPE STRING *PyString_new;
+PYVAR_SCOPE STRING *PyString_oct;
+PYVAR_SCOPE STRING *PyString_proxy;
+PYVAR_SCOPE STRING *PyString_repr;
+PYVAR_SCOPE STRING *PyString_str;
/* utility functions */
1.18 +29 -1 parrot/dynclasses/pylist.pmc
Index: pylist.pmc
===================================================================
RCS file: /cvs/public/parrot/dynclasses/pylist.pmc,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- pylist.pmc 23 Dec 2004 23:49:32 -0000 1.17
+++ pylist.pmc 30 Dec 2004 11:46:38 -0000 1.18
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: pylist.pmc,v 1.17 2004/12/23 23:49:32 rubys Exp $
+$Id: pylist.pmc,v 1.18 2004/12/30 11:46:38 rubys Exp $
=head1 NAME
@@ -136,6 +136,34 @@
/*
+=item C<PMC* "__getitem__"(PMC *self, PMC *index)>
+
+Returns the PMC value of the element at index C<key>.
+
+=cut
+
+*/
+
+ METHOD PMC* __getitem__(PMC *self, PMC *index) {
+ return VTABLE_get_pmc_keyed(INTERP, self, index);
+ }
+
+/*
+
+=item C<PMC* "__setitem__"(PMC *self, PMC *index, PMC *value)>
+
+Sets the PMC at element C<index> to C<*value>.
+
+=cut
+
+*/
+
+ METHOD void __setitem__(PMC *self, PMC *index, PMC *value) {
+ VTABLE_set_pmc_keyed(INTERP, self, index, value);
+ }
+
+/*
+
=item C<void "append" (PMC* self, PMC* value)>
Extends the array by adding an element of value C<*value> to the end of
1.15 +66 -1 parrot/dynclasses/pystring.pmc
Index: pystring.pmc
===================================================================
RCS file: /cvs/public/parrot/dynclasses/pystring.pmc,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- pystring.pmc 23 Dec 2004 23:49:33 -0000 1.14
+++ pystring.pmc 30 Dec 2004 11:46:38 -0000 1.15
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: pystring.pmc,v 1.14 2004/12/23 23:49:33 rubys Exp $
+$Id: pystring.pmc,v 1.15 2004/12/30 11:46:38 rubys Exp $
=head1 NAME
@@ -25,6 +25,57 @@
/*
+=item C<PMC* "__getitem__"(PMC *self, PMC *index)>
+
+Returns the PMC value of the element at index C<key>.
+
+=cut
+
+*/
+
+ METHOD PMC* __getitem__(PMC *self, PMC *index) {
+ return VTABLE_get_pmc_keyed(INTERP, self, index);
+ }
+
+/*
+
+=item C<PMC* "__setitem__"(PMC *self, PMC *index, PMC *value)>
+
+Sets the PMC at element C<index> to C<*value>.
+
+=cut
+
+*/
+
+ METHOD void __setitem__(PMC *self, PMC *index, PMC *value) {
+ VTABLE_set_pmc_keyed(INTERP, self, index, value);
+ }
+
+/*
+
+=item C<PMC* "__new__"(PMC *class, PMC *source)>
+
+Create a new string
+
+=cut
+
+*/
+
+ METHOD PMC* __new__(PMC *class, PMC *source) {
+ INTVAL argc = REG_INT(3);
+
+ PMC * ret = pmc_new(INTERP, PyBuiltin_PyInt);
+
+ if (argc > 1) {
+ STRING *svalue = VTABLE_get_string(INTERP, source);
+ VTABLE_set_string_native(INTERP, ret, svalue);
+ }
+
+ return ret;
+ }
+
+/*
+
=item C<void add(PMC *value, PMC *dest)>
Concatenates C<*value> to the string and returns the result in C<*dest>.
@@ -114,6 +165,20 @@
/*
+=item C<PMC *get_class()>
+
+Return the class of this object.
+
+=cut
+
+*/
+
+ PMC* get_class() {
+ return PyBuiltin_PyString_class;
+ }
+
+/*
+
=item C<PMC* get_iter (PMC *key)>
Return a new iterator for this string.
1.54 +1 -0 parrot/src/call_list.txt
Index: call_list.txt
===================================================================
RCS file: /cvs/public/parrot/src/call_list.txt,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- call_list.txt 28 Dec 2004 10:21:14 -0000 1.53
+++ call_list.txt 30 Dec 2004 11:46:39 -0000 1.54
@@ -256,6 +256,7 @@
P IOPP
P IOPPP
v IOPP
+v IOPPP
P IOPPPP
P IOPPPPP