Home | History | Annotate | Download | only in Objects

Lines Matching refs:step

56    start, stop, and step are python objects with None indicating no

61 PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
68 if (step == NULL) step = Py_None;
69 Py_INCREF(step);
75 obj->step = step;
103 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
106 if (r->step == Py_None) {
107 *step = 1;
109 if (!PyInt_Check(r->step) && !PyLong_Check(r->step)) return -1;
110 *step = PyInt_AsSsize_t(r->step);
113 *start = *step < 0 ? length-1 : 0;
115 if (!PyInt_Check(r->start) && !PyLong_Check(r->step)) return -1;
120 *stop = *step < 0 ? -1 : length;
122 if (!PyInt_Check(r->stop) && !PyLong_Check(r->step)) return -1;
128 if (*step == 0) return -1;
134 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
140 if (r->step == Py_None) {
141 *step = 1;
144 if (!_PyEval_SliceIndex(r->step, step)) return -1;
145 if (*step == 0) {
147 "slice step cannot be zero");
152 defstart = *step < 0 ? length-1 : 0;
153 defstop = *step < 0 ? -1 : length;
161 if (*start < 0) *start = (*step < 0) ? -1 : 0;
163 *start = (*step < 0) ? length - 1 : length;
172 if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
174 *stop = (*step < 0) ? length - 1 : length;
177 if ((*step < 0 && *stop >= *start)
178 || (*step > 0 && *start >= *stop)) {
181 else if (*step < 0) {
182 *slicelength = (*stop-*start+1)/(*step)+1;
185 *slicelength = (*stop-*start-1)/(*step)+1;
194 PyObject *start, *stop, *step;
196 start = stop = step = NULL;
201 if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
210 return PySlice_New(start, stop, step);
214 "slice([start,] stop[, step])\n\
221 Py_DECREF(r->step);
238 PyString_ConcatAndDel(&s, PyObject_Repr(r->step));
247 {"step", T_OBJECT, offsetof(PySliceObject, step), READONLY},
254 Py_ssize_t ilen, start, stop, step, slicelength;
263 &step, &slicelength) < 0) {
267 return Py_BuildValue("(nnn)", start, stop, step);
281 return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
310 if (PyObject_Cmp(v->step, w->step, &result) < 0)