Added PyObject_DelItem and PySequence_Del{Item,Slice}.
This commit is contained in:
parent
c9fb47ef08
commit
6cdc6f4146
|
@ -410,6 +410,13 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
statement: o[key]=v.
|
statement: o[key]=v.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int PyObject_DelItem Py_PROTO((PyObject *o, PyObject *key));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Delete the mapping for key from *o. Returns -1 on failure.
|
||||||
|
This is the equivalent of the Python statement: del o[key].
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* Number Protocol:*/
|
/* Number Protocol:*/
|
||||||
|
|
||||||
|
@ -672,6 +679,14 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int PySequence_DelItem Py_PROTO((PyObject *o, int i));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Delete the ith element of object v. Returns
|
||||||
|
-1 on failure. This is the equivalent of the Python
|
||||||
|
statement: del o[i].
|
||||||
|
*/
|
||||||
|
|
||||||
int PySequence_SetSlice Py_PROTO((PyObject *o, int i1, int i2, PyObject *v));
|
int PySequence_SetSlice Py_PROTO((PyObject *o, int i1, int i2, PyObject *v));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -680,6 +695,14 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
equivalent of the Python statement: o[i1:i2]=v.
|
equivalent of the Python statement: o[i1:i2]=v.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int PySequence_DelSlice Py_PROTO((PyObject *o, int i1, int i2));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Delete the slice in sequence object, o, from i1 to i2.
|
||||||
|
Returns -1 on failure. This is the equivalent of the Python
|
||||||
|
statement: del o[i1:i2].
|
||||||
|
*/
|
||||||
|
|
||||||
PyObject *PySequence_Tuple Py_PROTO((PyObject *o));
|
PyObject *PySequence_Tuple Py_PROTO((PyObject *o));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -155,6 +155,24 @@ PyObject_SetItem(o, key, value)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
PyObject_DelItem(o, key)
|
||||||
|
PyObject *o;
|
||||||
|
PyObject *key;
|
||||||
|
{
|
||||||
|
PyMappingMethods *m;
|
||||||
|
|
||||||
|
if(! o || ! key) return Py_ReturnNullError(),-1;
|
||||||
|
if((m=o->ob_type->tp_as_mapping) && m->mp_ass_subscript)
|
||||||
|
return m->mp_ass_subscript(o,key,(PyObject*)NULL);
|
||||||
|
|
||||||
|
if(PyInt_Check(key))
|
||||||
|
return PySequence_SetItem(o,PyInt_AsLong(key),(PyObject*)NULL);
|
||||||
|
|
||||||
|
PyErr_SetString(PyExc_TypeError,"expeced integer index");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
PyNumber_Check(o)
|
PyNumber_Check(o)
|
||||||
PyObject *o;
|
PyObject *o;
|
||||||
|
@ -695,6 +713,27 @@ PySequence_SetItem(s, i, o)
|
||||||
return m->sq_ass_item(s,i,o);
|
return m->sq_ass_item(s,i,o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
PySequence_DelItem(s, i)
|
||||||
|
PyObject *s;
|
||||||
|
int i;
|
||||||
|
{
|
||||||
|
PySequenceMethods *m;
|
||||||
|
int l;
|
||||||
|
if(! s) return Py_ReturnNullError(),-1;
|
||||||
|
|
||||||
|
if(! ((m=s->ob_type->tp_as_sequence) && m->sq_length && m->sq_ass_item))
|
||||||
|
return Py_ReturnMethodError("__delitem__"),-1;
|
||||||
|
|
||||||
|
if(i < 0)
|
||||||
|
{
|
||||||
|
if(0 > (l=m->sq_length(s))) return -1;
|
||||||
|
i += l;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m->sq_ass_item(s,i,(PyObject*)NULL);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
PySequence_SetSlice(s, i1, i2, o)
|
PySequence_SetSlice(s, i1, i2, o)
|
||||||
PyObject *s;
|
PyObject *s;
|
||||||
|
@ -718,6 +757,28 @@ PySequence_SetSlice(s, i1, i2, o)
|
||||||
return m->sq_ass_slice(s,i1,i2,o);
|
return m->sq_ass_slice(s,i1,i2,o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
PySequence_DelSlice(s, i1, i2)
|
||||||
|
PyObject *s;
|
||||||
|
int i1;
|
||||||
|
int i2;
|
||||||
|
{
|
||||||
|
PySequenceMethods *m;
|
||||||
|
int l;
|
||||||
|
|
||||||
|
if(! s) return Py_ReturnNullError(),-1;
|
||||||
|
|
||||||
|
if(! ((m=s->ob_type->tp_as_sequence) && m->sq_length && m->sq_ass_slice))
|
||||||
|
return Py_ReturnMethodError("__delslice__"),-1;
|
||||||
|
|
||||||
|
if(0 > (l=m->sq_length(s))) return -1;
|
||||||
|
|
||||||
|
if(i1 < 0) i1 += l;
|
||||||
|
if(i2 < 0) i2 += l;
|
||||||
|
|
||||||
|
return m->sq_ass_slice(s,i1,i2,(PyObject*)NULL);
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
PySequence_Tuple(s)
|
PySequence_Tuple(s)
|
||||||
PyObject *s;
|
PyObject *s;
|
||||||
|
|
Loading…
Reference in New Issue