Example #1
0
    static PyObject *
BufferSubscript(PyObject *self, PyObject* idx)
{
    if (PyLong_Check(idx)) {
	long _idx = PyLong_AsLong(idx);
	return BufferItem(self,_idx);
    } else if (PySlice_Check(idx)) {
	Py_ssize_t start, stop, step, slicelen;

	if (PySlice_GetIndicesEx((PySliceObject *)idx,
	      (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
	      &start, &stop,
	      &step, &slicelen) < 0) {
	    return NULL;
	}
	return BufferSlice(self,start,stop+1);
    } else {
	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
	return NULL;
    }
}
Example #2
0
static PyObject *
BufferSubscript(PyObject *self, PyObject* idx)
{
	if (PyLong_Check(idx)) {
		long _idx = PyLong_AsLong(idx);
		return BufferItem((BufferObject *)(self), _idx);
	} else if (PySlice_Check(idx)) {
		Py_ssize_t start, stop, step, slicelen;

		if (CheckBuffer((BufferObject *) self))
			return NULL;

		if (PySlice_GetIndicesEx((PySliceObject_T *)idx,
								 (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
								 &start, &stop,
								 &step, &slicelen) < 0) {
			return NULL;
		}
		return BufferSlice((BufferObject *)(self), start, stop);
	} else {
		RAISE_INVALID_INDEX_TYPE(idx);
		return NULL;
	}
}