Beispiel #1
0
static Py_ssize_t
RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
{
	if (PyLong_Check(idx)) {
		long n = PyLong_AsLong(idx);
		return RangeAsItem(self, n, val);
	} else if (PySlice_Check(idx)) {
		Py_ssize_t start, stop, step, slicelen;

		if (PySlice_GetIndicesEx((PySliceObject_T *)idx,
								 ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
								 &start, &stop,
								 &step, &slicelen) < 0) {
			return -1;
		}
		return RangeAsSlice(self, start, stop, val);
	} else {
		RAISE_INVALID_INDEX_TYPE(idx);
		return -1;
	}
}
Beispiel #2
0
    static Py_ssize_t
RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
{
    if (PyLong_Check(idx)) {
	long n = PyLong_AsLong(idx);
	return RangeAsItem(self, n, val);
    } else if (PySlice_Check(idx)) {
	Py_ssize_t start, stop, step, slicelen;

	if (PySlice_GetIndicesEx((PyObject *)idx,
		((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
		&start, &stop,
		&step, &slicelen) < 0) {
	    return -1;
	}
	return RangeAsSlice(self, start, stop, val);
    } else {
	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
	return -1;
    }
}