Kaydet (Commit) b8393da8 authored tarafından Guido van Rossum's avatar Guido van Rossum

Finally implement tuple*number. From now on all sequence types

must (pretend to) support all operations except assignments;
if you don't want to support an operation you have to provide
a dummy function that raises an exception...
üst 85e3b01f
......@@ -259,10 +259,42 @@ tupleconcat(a, bb)
#undef b
}
static object *
tuplerepeat(a, n)
tupleobject *a;
int n;
{
int i, j;
int size;
tupleobject *np;
object **p;
if (n < 0)
n = 0;
if (a->ob_size*n == a->ob_size) {
/* Since tuples are immutable, we can return a shared
copy in this case */
INCREF(a);
return (object *)a;
}
size = a->ob_size * n;
np = (tupleobject *) newtupleobject(size);
if (np == NULL)
return NULL;
p = np->ob_item;
for (i = 0; i < n; i++) {
for (j = 0; j < a->ob_size; j++) {
*p = a->ob_item[j];
INCREF(*p);
p++;
}
}
return (object *) np;
}
static sequence_methods tuple_as_sequence = {
tuplelength, /*sq_length*/
tupleconcat, /*sq_concat*/
0, /*sq_repeat*/
tuplerepeat, /*sq_repeat*/
tupleitem, /*sq_item*/
tupleslice, /*sq_slice*/
0, /*sq_ass_item*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment