mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Merge back to main trunk
This commit is contained in:
parent
013142a95f
commit
1d5735e846
37 changed files with 681 additions and 831 deletions
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -38,16 +38,18 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
Table of primes suitable as keys, in ascending order.
|
||||
The first line are the largest primes less than some powers of two,
|
||||
the second line is the largest prime less than 6000,
|
||||
and the third line is a selection from Knuth, Vol. 3, Sec. 6.1, Table 1.
|
||||
The final value is a sentinel and should cause the memory allocation
|
||||
of that many entries to fail (if none of the earlier values cause such
|
||||
failure already).
|
||||
the third line is a selection from Knuth, Vol. 3, Sec. 6.1, Table 1,
|
||||
and the next three lines were suggested by Steve Kirsch.
|
||||
The final value is a sentinel.
|
||||
*/
|
||||
static unsigned int primes[] = {
|
||||
static long primes[] = {
|
||||
3, 7, 13, 31, 61, 127, 251, 509, 1021, 2017, 4093,
|
||||
5987,
|
||||
9551, 15683, 19609, 31397,
|
||||
0xffffffff /* All bits set -- truncation OK */
|
||||
65521L, 131071L, 262139L, 524287L, 1048573L, 2097143L,
|
||||
4194301L, 8388593L, 16777213L, 33554393L, 67108859L,
|
||||
134217689L, 268435399L, 536870909L, 1073741789L,
|
||||
0
|
||||
};
|
||||
|
||||
/* Object used as dummy key to fill deleted entries */
|
||||
|
@ -207,8 +209,18 @@ mappingresize(mp)
|
|||
register int i;
|
||||
newsize = mp->ma_size;
|
||||
for (i = 0; ; i++) {
|
||||
if (primes[i] <= 0) {
|
||||
/* Ran out of primes */
|
||||
err_nomem();
|
||||
return -1;
|
||||
}
|
||||
if (primes[i] > mp->ma_used*2) {
|
||||
newsize = primes[i];
|
||||
if (newsize != primes[i]) {
|
||||
/* Integer truncation */
|
||||
err_nomem();
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -406,15 +418,6 @@ mapping_print(mp, fp, flags)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
js(pv, w)
|
||||
object **pv;
|
||||
object *w;
|
||||
{
|
||||
joinstring(pv, w);
|
||||
XDECREF(w);
|
||||
}
|
||||
|
||||
static object *
|
||||
mapping_repr(mp)
|
||||
mappingobject *mp;
|
||||
|
@ -428,16 +431,16 @@ mapping_repr(mp)
|
|||
sepa = newstringobject(", ");
|
||||
colon = newstringobject(": ");
|
||||
any = 0;
|
||||
for (i = 0, ep = mp->ma_table; i < mp->ma_size; i++, ep++) {
|
||||
for (i = 0, ep = mp->ma_table; i < mp->ma_size && v; i++, ep++) {
|
||||
if (ep->me_value != NULL) {
|
||||
if (any++)
|
||||
joinstring(&v, sepa);
|
||||
js(&v, reprobject(ep->me_key));
|
||||
joinstring_decref(&v, reprobject(ep->me_key));
|
||||
joinstring(&v, colon);
|
||||
js(&v, reprobject(ep->me_value));
|
||||
joinstring_decref(&v, reprobject(ep->me_value));
|
||||
}
|
||||
}
|
||||
js(&v, newstringobject("}"));
|
||||
joinstring_decref(&v, newstringobject("}"));
|
||||
XDECREF(sepa);
|
||||
XDECREF(colon);
|
||||
return v;
|
||||
|
@ -483,9 +486,9 @@ mapping_ass_sub(mp, v, w)
|
|||
}
|
||||
|
||||
static mapping_methods mapping_as_mapping = {
|
||||
mapping_length, /*mp_length*/
|
||||
mapping_subscript, /*mp_subscript*/
|
||||
mapping_ass_sub, /*mp_ass_subscript*/
|
||||
(inquiry)mapping_length, /*mp_length*/
|
||||
(binaryfunc)mapping_subscript, /*mp_subscript*/
|
||||
(objobjargproc)mapping_ass_sub, /*mp_ass_subscript*/
|
||||
};
|
||||
|
||||
static object *
|
||||
|
@ -607,7 +610,7 @@ getmappingitems(mp)
|
|||
err_badcall();
|
||||
return NULL;
|
||||
}
|
||||
return mapping_values((mappingobject *)mp, (object *)NULL);
|
||||
return mapping_items((mappingobject *)mp, (object *)NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -702,10 +705,10 @@ mapping_has_key(mp, args)
|
|||
}
|
||||
|
||||
static struct methodlist mapp_methods[] = {
|
||||
{"has_key", mapping_has_key},
|
||||
{"items", mapping_items},
|
||||
{"keys", mapping_keys},
|
||||
{"values", mapping_values},
|
||||
{"has_key", (method)mapping_has_key},
|
||||
{"items", (method)mapping_items},
|
||||
{"keys", (method)mapping_keys},
|
||||
{"values", (method)mapping_values},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
@ -723,12 +726,12 @@ typeobject Mappingtype = {
|
|||
"dictionary",
|
||||
sizeof(mappingobject),
|
||||
0,
|
||||
mapping_dealloc, /*tp_dealloc*/
|
||||
mapping_print, /*tp_print*/
|
||||
mapping_getattr, /*tp_getattr*/
|
||||
(destructor)mapping_dealloc, /*tp_dealloc*/
|
||||
(printfunc)mapping_print, /*tp_print*/
|
||||
(getattrfunc)mapping_getattr, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
mapping_compare, /*tp_compare*/
|
||||
mapping_repr, /*tp_repr*/
|
||||
(cmpfunc)mapping_compare, /*tp_compare*/
|
||||
(reprfunc)mapping_repr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
&mapping_as_mapping, /*tp_as_mapping*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -34,15 +34,16 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#define OFF(x) offsetof(frameobject, x)
|
||||
|
||||
static struct memberlist frame_memberlist[] = {
|
||||
{"f_back", T_OBJECT, OFF(f_back)},
|
||||
{"f_code", T_OBJECT, OFF(f_code)},
|
||||
{"f_globals", T_OBJECT, OFF(f_globals)},
|
||||
{"f_locals", T_OBJECT, OFF(f_locals)},
|
||||
{"f_owner", T_OBJECT, OFF(f_owner)},
|
||||
/* {"f_fastlocals",T_OBJECT, OFF(f_fastlocals)}, /* XXX Unsafe */
|
||||
{"f_localmap", T_OBJECT, OFF(f_localmap)},
|
||||
{"f_lasti", T_INT, OFF(f_lasti)},
|
||||
{"f_lineno", T_INT, OFF(f_lineno)},
|
||||
{"f_back", T_OBJECT, OFF(f_back), RO},
|
||||
{"f_code", T_OBJECT, OFF(f_code), RO},
|
||||
{"f_globals", T_OBJECT, OFF(f_globals), RO},
|
||||
{"f_locals", T_OBJECT, OFF(f_locals), RO},
|
||||
{"f_owner", T_OBJECT, OFF(f_owner), RO},
|
||||
/* {"f_fastlocals",T_OBJECT, OFF(f_fastlocals),RO}, /* XXX Unsafe */
|
||||
{"f_localmap", T_OBJECT, OFF(f_localmap),RO},
|
||||
{"f_lasti", T_INT, OFF(f_lasti), RO},
|
||||
{"f_lineno", T_INT, OFF(f_lineno), RO},
|
||||
{"f_trace", T_OBJECT, OFF(f_trace)},
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
@ -51,9 +52,20 @@ frame_getattr(f, name)
|
|||
frameobject *f;
|
||||
char *name;
|
||||
{
|
||||
if (strcmp(name, "f_locals") == 0)
|
||||
fast_2_locals(f);
|
||||
return getmember((char *)f, frame_memberlist, name);
|
||||
}
|
||||
|
||||
static int
|
||||
frame_setattr(f, name, value)
|
||||
frameobject *f;
|
||||
char *name;
|
||||
object *value;
|
||||
{
|
||||
return setmember((char *)f, frame_memberlist, name, value);
|
||||
}
|
||||
|
||||
/* Stack frames are allocated and deallocated at a considerable rate.
|
||||
In an attempt to improve the speed of function calls, we maintain a
|
||||
separate free list of stack frames (just like integers are
|
||||
|
@ -88,6 +100,7 @@ frame_dealloc(f)
|
|||
XDECREF(f->f_owner);
|
||||
XDECREF(f->f_fastlocals);
|
||||
XDECREF(f->f_localmap);
|
||||
XDECREF(f->f_trace);
|
||||
f->f_back = free_list;
|
||||
free_list = f;
|
||||
}
|
||||
|
@ -98,10 +111,10 @@ typeobject Frametype = {
|
|||
"frame",
|
||||
sizeof(frameobject),
|
||||
0,
|
||||
frame_dealloc, /*tp_dealloc*/
|
||||
(destructor)frame_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
frame_getattr, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
(getattrfunc)frame_getattr, /*tp_getattr*/
|
||||
(setattrfunc)frame_setattr, /*tp_setattr*/
|
||||
0, /*tp_compare*/
|
||||
0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
|
@ -167,6 +180,7 @@ newframeobject(back, code, globals, locals, owner, nvalues, nblocks)
|
|||
f->f_iblock = 0;
|
||||
f->f_lasti = 0;
|
||||
f->f_lineno = -1;
|
||||
f->f_trace = NULL;
|
||||
if (f->f_valuestack == NULL || f->f_blockstack == NULL) {
|
||||
err_nomem();
|
||||
DECREF(f);
|
||||
|
@ -225,3 +239,74 @@ pop_block(f)
|
|||
b = &f->f_blockstack[--f->f_iblock];
|
||||
return b;
|
||||
}
|
||||
|
||||
/* Convert between "fast" version of locals and dictionary version */
|
||||
|
||||
void
|
||||
fast_2_locals(f)
|
||||
frameobject *f;
|
||||
{
|
||||
/* Merge f->f_fastlocals into f->f_locals */
|
||||
object *locals, *fast, *map;
|
||||
object *error_type, *error_value;
|
||||
int j;
|
||||
if (f == NULL)
|
||||
return;
|
||||
locals = f->f_locals;
|
||||
fast = f->f_fastlocals;
|
||||
map = f->f_localmap;
|
||||
if (locals == NULL || fast == NULL || map == NULL)
|
||||
return;
|
||||
if (!is_dictobject(locals) || !is_listobject(fast) ||
|
||||
!is_tupleobject(map))
|
||||
return;
|
||||
err_get(&error_type, &error_value);
|
||||
for (j = gettuplesize(map); --j >= 0; ) {
|
||||
object *key = gettupleitem(map, j);
|
||||
object *value = getlistitem(fast, j);
|
||||
if (value == NULL) {
|
||||
err_clear();
|
||||
if (dict2remove(locals, key) != 0)
|
||||
err_clear();
|
||||
}
|
||||
else {
|
||||
if (dict2insert(locals, key, value) != 0)
|
||||
err_clear();
|
||||
}
|
||||
}
|
||||
err_setval(error_type, error_value);
|
||||
}
|
||||
|
||||
void
|
||||
locals_2_fast(f, clear)
|
||||
frameobject *f;
|
||||
int clear;
|
||||
{
|
||||
/* Merge f->f_locals into f->f_fastlocals */
|
||||
object *locals, *fast, *map;
|
||||
object *error_type, *error_value;
|
||||
int j;
|
||||
if (f == NULL)
|
||||
return;
|
||||
locals = f->f_locals;
|
||||
fast = f->f_fastlocals;
|
||||
map = f->f_localmap;
|
||||
if (locals == NULL || fast == NULL || map == NULL)
|
||||
return;
|
||||
if (!is_dictobject(locals) || !is_listobject(fast) ||
|
||||
!is_tupleobject(map))
|
||||
return;
|
||||
err_get(&error_type, &error_value);
|
||||
for (j = gettuplesize(map); --j >= 0; ) {
|
||||
object *key = gettupleitem(map, j);
|
||||
object *value = dict2lookup(locals, key);
|
||||
if (value == NULL)
|
||||
err_clear();
|
||||
else
|
||||
INCREF(value);
|
||||
if (value != NULL || clear)
|
||||
if (setlistitem(fast, j, value) != 0)
|
||||
err_clear();
|
||||
}
|
||||
err_setval(error_type, error_value);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -41,6 +41,8 @@ newfuncobject(code, globals)
|
|||
op->func_globals = globals;
|
||||
op->func_name = ((codeobject*)(op->func_code))->co_name;
|
||||
INCREF(op->func_name);
|
||||
op->func_argcount = -1; /* Unknown */
|
||||
op->func_argdefs = NULL; /* No default arguments */
|
||||
}
|
||||
return (object *)op;
|
||||
}
|
||||
|
@ -67,6 +69,44 @@ getfuncglobals(op)
|
|||
return ((funcobject *) op) -> func_globals;
|
||||
}
|
||||
|
||||
object *
|
||||
getfuncargstuff(op, argcount_return)
|
||||
object *op;
|
||||
int *argcount_return;
|
||||
{
|
||||
if (!is_funcobject(op)) {
|
||||
err_badcall();
|
||||
return NULL;
|
||||
}
|
||||
*argcount_return = ((funcobject *) op) -> func_argcount;
|
||||
return ((funcobject *) op) -> func_argdefs;
|
||||
}
|
||||
|
||||
int
|
||||
setfuncargstuff(op, argcount, argdefs)
|
||||
object *op;
|
||||
int argcount;
|
||||
object *argdefs;
|
||||
{
|
||||
if (!is_funcobject(op) ||
|
||||
argdefs != NULL && !is_tupleobject(argdefs)) {
|
||||
err_badcall();
|
||||
return -1;
|
||||
}
|
||||
if (argdefs == None)
|
||||
argdefs = NULL;
|
||||
else if (is_tupleobject(argdefs))
|
||||
XINCREF(argdefs);
|
||||
else {
|
||||
err_setstr(SystemError, "non-tuple default args");
|
||||
return -1;
|
||||
}
|
||||
((funcobject *) op) -> func_argcount = argcount;
|
||||
XDECREF(((funcobject *) op) -> func_argdefs);
|
||||
((funcobject *) op) -> func_argdefs = argdefs;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Methods */
|
||||
|
||||
#define OFF(x) offsetof(funcobject, x)
|
||||
|
@ -75,6 +115,8 @@ static struct memberlist func_memberlist[] = {
|
|||
{"func_code", T_OBJECT, OFF(func_code), READONLY},
|
||||
{"func_globals",T_OBJECT, OFF(func_globals), READONLY},
|
||||
{"func_name", T_OBJECT, OFF(func_name), READONLY},
|
||||
{"func_argcount",T_INT, OFF(func_argcount), READONLY},
|
||||
{"func_argdefs",T_OBJECT, OFF(func_argdefs), READONLY},
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
@ -92,6 +134,7 @@ func_dealloc(op)
|
|||
{
|
||||
DECREF(op->func_code);
|
||||
DECREF(op->func_globals);
|
||||
XDECREF(op->func_argdefs);
|
||||
DEL(op);
|
||||
}
|
||||
|
||||
|
@ -113,8 +156,15 @@ static int
|
|||
func_compare(f, g)
|
||||
funcobject *f, *g;
|
||||
{
|
||||
int c;
|
||||
if (f->func_globals != g->func_globals)
|
||||
return (f->func_globals < g->func_globals) ? -1 : 1;
|
||||
c = f->func_argcount < g->func_argcount;
|
||||
if (c != 0)
|
||||
return c < 0 ? -1 : 1;
|
||||
c = cmpobject(f->func_argdefs, g->func_argdefs);
|
||||
if (c != 0)
|
||||
return c;
|
||||
return cmpobject(f->func_code, g->func_code);
|
||||
}
|
||||
|
||||
|
@ -136,14 +186,14 @@ typeobject Functype = {
|
|||
"function",
|
||||
sizeof(funcobject),
|
||||
0,
|
||||
func_dealloc, /*tp_dealloc*/
|
||||
(destructor)func_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
func_getattr, /*tp_getattr*/
|
||||
(getattrfunc)func_getattr, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
func_compare, /*tp_compare*/
|
||||
func_repr, /*tp_repr*/
|
||||
(cmpfunc)func_compare, /*tp_compare*/
|
||||
(reprfunc)func_repr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
func_hash, /*tp_hash*/
|
||||
(hashfunc)func_hash, /*tp_hash*/
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -38,16 +38,18 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
Table of primes suitable as keys, in ascending order.
|
||||
The first line are the largest primes less than some powers of two,
|
||||
the second line is the largest prime less than 6000,
|
||||
and the third line is a selection from Knuth, Vol. 3, Sec. 6.1, Table 1.
|
||||
The final value is a sentinel and should cause the memory allocation
|
||||
of that many entries to fail (if none of the earlier values cause such
|
||||
failure already).
|
||||
the third line is a selection from Knuth, Vol. 3, Sec. 6.1, Table 1,
|
||||
and the next three lines were suggested by Steve Kirsch.
|
||||
The final value is a sentinel.
|
||||
*/
|
||||
static unsigned int primes[] = {
|
||||
static long primes[] = {
|
||||
3, 7, 13, 31, 61, 127, 251, 509, 1021, 2017, 4093,
|
||||
5987,
|
||||
9551, 15683, 19609, 31397,
|
||||
0xffffffff /* All bits set -- truncation OK */
|
||||
65521L, 131071L, 262139L, 524287L, 1048573L, 2097143L,
|
||||
4194301L, 8388593L, 16777213L, 33554393L, 67108859L,
|
||||
134217689L, 268435399L, 536870909L, 1073741789L,
|
||||
0
|
||||
};
|
||||
|
||||
/* Object used as dummy key to fill deleted entries */
|
||||
|
@ -207,8 +209,18 @@ mappingresize(mp)
|
|||
register int i;
|
||||
newsize = mp->ma_size;
|
||||
for (i = 0; ; i++) {
|
||||
if (primes[i] <= 0) {
|
||||
/* Ran out of primes */
|
||||
err_nomem();
|
||||
return -1;
|
||||
}
|
||||
if (primes[i] > mp->ma_used*2) {
|
||||
newsize = primes[i];
|
||||
if (newsize != primes[i]) {
|
||||
/* Integer truncation */
|
||||
err_nomem();
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -406,15 +418,6 @@ mapping_print(mp, fp, flags)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
js(pv, w)
|
||||
object **pv;
|
||||
object *w;
|
||||
{
|
||||
joinstring(pv, w);
|
||||
XDECREF(w);
|
||||
}
|
||||
|
||||
static object *
|
||||
mapping_repr(mp)
|
||||
mappingobject *mp;
|
||||
|
@ -428,16 +431,16 @@ mapping_repr(mp)
|
|||
sepa = newstringobject(", ");
|
||||
colon = newstringobject(": ");
|
||||
any = 0;
|
||||
for (i = 0, ep = mp->ma_table; i < mp->ma_size; i++, ep++) {
|
||||
for (i = 0, ep = mp->ma_table; i < mp->ma_size && v; i++, ep++) {
|
||||
if (ep->me_value != NULL) {
|
||||
if (any++)
|
||||
joinstring(&v, sepa);
|
||||
js(&v, reprobject(ep->me_key));
|
||||
joinstring_decref(&v, reprobject(ep->me_key));
|
||||
joinstring(&v, colon);
|
||||
js(&v, reprobject(ep->me_value));
|
||||
joinstring_decref(&v, reprobject(ep->me_value));
|
||||
}
|
||||
}
|
||||
js(&v, newstringobject("}"));
|
||||
joinstring_decref(&v, newstringobject("}"));
|
||||
XDECREF(sepa);
|
||||
XDECREF(colon);
|
||||
return v;
|
||||
|
@ -483,9 +486,9 @@ mapping_ass_sub(mp, v, w)
|
|||
}
|
||||
|
||||
static mapping_methods mapping_as_mapping = {
|
||||
mapping_length, /*mp_length*/
|
||||
mapping_subscript, /*mp_subscript*/
|
||||
mapping_ass_sub, /*mp_ass_subscript*/
|
||||
(inquiry)mapping_length, /*mp_length*/
|
||||
(binaryfunc)mapping_subscript, /*mp_subscript*/
|
||||
(objobjargproc)mapping_ass_sub, /*mp_ass_subscript*/
|
||||
};
|
||||
|
||||
static object *
|
||||
|
@ -607,7 +610,7 @@ getmappingitems(mp)
|
|||
err_badcall();
|
||||
return NULL;
|
||||
}
|
||||
return mapping_values((mappingobject *)mp, (object *)NULL);
|
||||
return mapping_items((mappingobject *)mp, (object *)NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -702,10 +705,10 @@ mapping_has_key(mp, args)
|
|||
}
|
||||
|
||||
static struct methodlist mapp_methods[] = {
|
||||
{"has_key", mapping_has_key},
|
||||
{"items", mapping_items},
|
||||
{"keys", mapping_keys},
|
||||
{"values", mapping_values},
|
||||
{"has_key", (method)mapping_has_key},
|
||||
{"items", (method)mapping_items},
|
||||
{"keys", (method)mapping_keys},
|
||||
{"values", (method)mapping_values},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
@ -723,12 +726,12 @@ typeobject Mappingtype = {
|
|||
"dictionary",
|
||||
sizeof(mappingobject),
|
||||
0,
|
||||
mapping_dealloc, /*tp_dealloc*/
|
||||
mapping_print, /*tp_print*/
|
||||
mapping_getattr, /*tp_getattr*/
|
||||
(destructor)mapping_dealloc, /*tp_dealloc*/
|
||||
(printfunc)mapping_print, /*tp_print*/
|
||||
(getattrfunc)mapping_getattr, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
mapping_compare, /*tp_compare*/
|
||||
mapping_repr, /*tp_repr*/
|
||||
(cmpfunc)mapping_compare, /*tp_compare*/
|
||||
(reprfunc)mapping_repr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
&mapping_as_mapping, /*tp_as_mapping*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -149,16 +149,16 @@ typeobject Methodtype = {
|
|||
"builtin_function_or_method",
|
||||
sizeof(methodobject),
|
||||
0,
|
||||
meth_dealloc, /*tp_dealloc*/
|
||||
(destructor)meth_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
meth_compare, /*tp_compare*/
|
||||
meth_repr, /*tp_repr*/
|
||||
(cmpfunc)meth_compare, /*tp_compare*/
|
||||
(reprfunc)meth_repr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
meth_hash, /*tp_hash*/
|
||||
(hashfunc)meth_hash, /*tp_hash*/
|
||||
};
|
||||
|
||||
static object *listmethods PROTO((struct methodlist *)); /* Forward */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -162,10 +162,10 @@ typeobject Moduletype = {
|
|||
"module", /*tp_name*/
|
||||
sizeof(moduleobject), /*tp_size*/
|
||||
0, /*tp_itemsize*/
|
||||
module_dealloc, /*tp_dealloc*/
|
||||
(destructor)module_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
module_getattr, /*tp_getattr*/
|
||||
module_setattr, /*tp_setattr*/
|
||||
(getattrfunc)module_getattr, /*tp_getattr*/
|
||||
(setattrfunc)module_setattr, /*tp_setattr*/
|
||||
0, /*tp_compare*/
|
||||
module_repr, /*tp_repr*/
|
||||
(reprfunc)module_repr, /*tp_repr*/
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -107,10 +107,8 @@ printobject(op, fp, flags)
|
|||
int flags;
|
||||
{
|
||||
int ret = 0;
|
||||
if (intrcheck()) {
|
||||
err_set(KeyboardInterrupt);
|
||||
if (sigcheck())
|
||||
return -1;
|
||||
}
|
||||
if (op == NULL) {
|
||||
fprintf(fp, "<nil>");
|
||||
}
|
||||
|
@ -159,10 +157,8 @@ object *
|
|||
reprobject(v)
|
||||
object *v;
|
||||
{
|
||||
if (intrcheck()) {
|
||||
err_set(KeyboardInterrupt);
|
||||
if (sigcheck())
|
||||
return NULL;
|
||||
}
|
||||
if (v == NULL)
|
||||
return newstringobject("<NULL>");
|
||||
else if (v->ob_type->tp_repr == NULL) {
|
||||
|
@ -349,7 +345,7 @@ static typeobject Notype = {
|
|||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
0, /*tp_compare*/
|
||||
none_repr, /*tp_repr*/
|
||||
(reprfunc)none_repr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -180,26 +180,19 @@ static object *
|
|||
tuplerepr(v)
|
||||
tupleobject *v;
|
||||
{
|
||||
object *s, *t, *comma;
|
||||
object *s, *comma;
|
||||
int i;
|
||||
s = newstringobject("(");
|
||||
comma = newstringobject(", ");
|
||||
for (i = 0; i < v->ob_size && s != NULL; i++) {
|
||||
if (i > 0)
|
||||
joinstring(&s, comma);
|
||||
t = reprobject(v->ob_item[i]);
|
||||
joinstring(&s, t);
|
||||
XDECREF(t);
|
||||
joinstring_decref(&s, reprobject(v->ob_item[i]));
|
||||
}
|
||||
DECREF(comma);
|
||||
if (v->ob_size == 1) {
|
||||
t = newstringobject(",");
|
||||
joinstring(&s, t);
|
||||
DECREF(t);
|
||||
}
|
||||
t = newstringobject(")");
|
||||
joinstring(&s, t);
|
||||
DECREF(t);
|
||||
if (v->ob_size == 1)
|
||||
joinstring_decref(&s, newstringobject(","));
|
||||
joinstring_decref(&s, newstringobject(")"));
|
||||
return s;
|
||||
}
|
||||
|
||||
|
@ -365,11 +358,11 @@ tuplerepeat(a, n)
|
|||
}
|
||||
|
||||
static sequence_methods tuple_as_sequence = {
|
||||
tuplelength, /*sq_length*/
|
||||
tupleconcat, /*sq_concat*/
|
||||
tuplerepeat, /*sq_repeat*/
|
||||
tupleitem, /*sq_item*/
|
||||
tupleslice, /*sq_slice*/
|
||||
(inquiry)tuplelength, /*sq_length*/
|
||||
(binaryfunc)tupleconcat, /*sq_concat*/
|
||||
(intargfunc)tuplerepeat, /*sq_repeat*/
|
||||
(intargfunc)tupleitem, /*sq_item*/
|
||||
(intintargfunc)tupleslice, /*sq_slice*/
|
||||
0, /*sq_ass_item*/
|
||||
0, /*sq_ass_slice*/
|
||||
};
|
||||
|
@ -380,16 +373,16 @@ typeobject Tupletype = {
|
|||
"tuple",
|
||||
sizeof(tupleobject) - sizeof(object *),
|
||||
sizeof(object *),
|
||||
tupledealloc, /*tp_dealloc*/
|
||||
tupleprint, /*tp_print*/
|
||||
(destructor)tupledealloc, /*tp_dealloc*/
|
||||
(printfunc)tupleprint, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
tuplecompare, /*tp_compare*/
|
||||
tuplerepr, /*tp_repr*/
|
||||
(cmpfunc)tuplecompare, /*tp_compare*/
|
||||
(reprfunc)tuplerepr, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
&tuple_as_sequence, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
tuplehash, /*tp_hash*/
|
||||
(hashfunc)tuplehash, /*tp_hash*/
|
||||
};
|
||||
|
||||
/* The following function breaks the notion that tuples are immutable:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -48,5 +48,5 @@ typeobject Typetype = {
|
|||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
0, /*tp_compare*/
|
||||
type_repr, /*tp_repr*/
|
||||
(reprfunc)type_repr, /*tp_repr*/
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue