Added delslice and delitem.

Renamed and, or to and_, or_.
Renamed all internal identifiers so as not to start with '__' (which is
a compiler privilege); remove AIX hack.
This commit is contained in:
Guido van Rossum 1996-08-21 17:40:51 +00:00
parent 16d27e3b14
commit c9fb47ef08
1 changed files with 47 additions and 32 deletions

View File

@ -110,40 +110,36 @@ used for special class methods; variants without leading and trailing\n\
if(-1 == (r=AOP(a1,a2))) return NULL; \
return PyInt_FromLong(r); }
#ifdef _AIX
#define __div __aix_div
#define __abs __aix_abs
#endif
spami(isCallable , PyCallable_Check)
spami(isNumberType , PyNumber_Check)
spami(truth , PyObject_IsTrue)
spam2(__add , PyNumber_Add)
spam2(__sub , PyNumber_Subtract)
spam2(__mul , PyNumber_Multiply)
spam2(__div , PyNumber_Divide)
spam2(__mod , PyNumber_Remainder)
spam1(__neg , PyNumber_Negative)
spam1(__pos , PyNumber_Positive)
spam1(__abs , PyNumber_Absolute)
spam1(__inv , PyNumber_Invert)
spam2(__lshift , PyNumber_Lshift)
spam2(__rshift , PyNumber_Rshift)
spam2(__and , PyNumber_And)
spam2(__xor , PyNumber_Xor)
spam2(__or , PyNumber_Or)
spam2(op_add , PyNumber_Add)
spam2(op_sub , PyNumber_Subtract)
spam2(op_mul , PyNumber_Multiply)
spam2(op_div , PyNumber_Divide)
spam2(op_mod , PyNumber_Remainder)
spam1(op_neg , PyNumber_Negative)
spam1(op_pos , PyNumber_Positive)
spam1(op_abs , PyNumber_Absolute)
spam1(op_inv , PyNumber_Invert)
spam2(op_lshift , PyNumber_Lshift)
spam2(op_rshift , PyNumber_Rshift)
spam2(op_and_ , PyNumber_And)
spam2(op_xor , PyNumber_Xor)
spam2(op_or_ , PyNumber_Or)
spami(isSequenceType , PySequence_Check)
spam2(__concat , PySequence_Concat)
spamoi(__repeat , PySequence_Repeat)
spam2(op_concat , PySequence_Concat)
spamoi(op_repeat , PySequence_Repeat)
spami2(sequenceIncludes, PySequence_In)
spami2(indexOf , PySequence_Index)
spami2(countOf , PySequence_Count)
spami(isMappingType , PyMapping_Check)
spam2(__getitem , PyObject_GetItem)
spam3n(__setitem , PyObject_SetItem)
spam2(op_getitem , PyObject_GetItem)
spam2n(op_delitem , PyObject_DelItem)
spam3n(op_setitem , PyObject_SetItem)
static PyObject*
__getslice(s,a)
op_getslice(s,a)
PyObject *s, *a;
{
PyObject *a1;
@ -155,7 +151,7 @@ __getslice(s,a)
}
static PyObject*
__setslice(s,a)
op_setslice(s,a)
PyObject *s, *a;
{
PyObject *a1, *a4;
@ -169,16 +165,31 @@ __setslice(s,a)
return Py_None;
}
static PyObject*
op_delslice(s,a)
PyObject *s, *a;
{
PyObject *a1, *a4;
long a2,a3;
if(! PyArg_ParseTuple(a,"Oii",&a1,&a2,&a3)) return NULL;
if(-1 == PySequence_DelSlice(a1,a2,a3)) return NULL;
Py_INCREF(Py_None);
return Py_None;
}
#undef spam1
#undef spam2
#ifdef HAVE_OLD_CPP
#define spam1(OP,DOC) {"OP", OP, 1, DOC},
#define spam2(OP,ALTOP,DOC) {"OP", __/**/OP, 1, DOC}, \
{"ALTOP", __/**/OP, 1, DOC},
#define spam2(OP,ALTOP,DOC) {"OP", op_/**/OP, 1, DOC}, \
{"ALTOP", op_/**/OP, 1, DOC},
#else
#define spam1(OP,DOC) {#OP, OP, 1, DOC},
#define spam2(OP,ALTOP,DOC) {#OP, __ ## OP, 1, DOC}, \
{#ALTOP, __ ## OP, 1, DOC},
#define spam2(OP,ALTOP,DOC) {#OP, op_##OP, 1, DOC}, \
{#ALTOP, op_##OP, 1, DOC},
#endif
static struct PyMethodDef operator_methods[] = {
@ -211,9 +222,9 @@ spam2(abs,__abs__, "abs(o) -- Return the absolute value of o.")
spam2(inv,__inv__, "inv(o) -- Return the inverse of o.")
spam2(lshift,__lshift__, "lshift(a, b) -- Return a shifted left by b.")
spam2(rshift,__rshift__, "rshift(a, b) -- Return a shifted right by b.")
spam2(and,__and__, "and(a, b) -- Return the bitwise and of a and b.")
spam2(and_,__and__, "and_(a, b) -- Return the bitwise and of a and b.")
spam2(xor,__xor__, "xor(a, b) -- Return the bitwise exclusive-or of a and b.")
spam2(or,__or__, "or(a, b) -- Return the bitwise or of a and b.")
spam2(or_,__or__, "or_(a, b) -- Return the bitwise or of a and b.")
spam2(concat,__concat__,
"concat(a, b) -- Return a + b, for a and b sequences.")
spam2(repeat,__repeat__,
@ -222,10 +233,14 @@ spam2(getitem,__getitem__,
"getitem(a, b) -- Return the value of a at index b.")
spam2(setitem,__setitem__,
"setitem(a, b, c) -- Set the value of a at b to c.")
spam2(delitem,__delitem__,
"delitem(a, b) -- Delete the value of a at b.")
spam2(getslice,__getslice__,
"getslice(a, b, c) -- Return the slice of a from b to c-1.")
spam2(setslice,__setslice__,
"setslice(a, b, c, v) -- Set the slice of a from b to c-1 to the sequence, v.")
"setslice(a, b, c, v) -- Set the slice of a from b to c-1 to the sequence v.")
spam2(delslice,__delslice__,
"delslice(a, b, c) -- Delete the slice of a from b to c-1.")
{NULL, NULL} /* sentinel */