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;
104 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
107 if (r->step == Py_None) {
108 *step = 1;
110 if (!PyInt_Check(r->step) && !PyLong_Check(r->step)) return -1;
111 *step = PyInt_AsSsize_t(r->step);
114 *start = *step < 0 ? length-1 : 0;
116 if (!PyInt_Check(r->start) && !PyLong_Check(r->step)) return -1;
121 *stop = *step < 0 ? -1 : length;
123 if (!PyInt_Check(r->stop) && !PyLong_Check(r->step)) return -1;
129 if (*step == 0) return -1;
135 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
141 if (r->step == Py_None) {
142 *step = 1;
145 if (!_PyEval_SliceIndex(r->step, step)) return -1;
146 if (*step == 0) {
148 "slice step cannot be zero");
153 defstart = *step < 0 ? length-1 : 0;
154 defstop = *step < 0 ? -1 : length;
162 if (*start < 0) *start = (*step < 0) ? -1 : 0;
164 *start = (*step < 0) ? length - 1 : length;
173 if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
175 *stop = (*step < 0) ? length - 1 : length;
178 if ((*step < 0 && *stop >= *start)
179 || (*step > 0 && *start >= *stop)) {
182 else if (*step < 0) {
183 *slicelength = (*stop-*start+1)/(*step)+1;
186 *slicelength = (*stop-*start-1)/(*step)+1;
195 PyObject *start, *stop, *step;
197 start = stop = step = NULL;
202 if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
211 return PySlice_New(start, stop, step);
216 slice(start, stop[, step])\n\
224 Py_DECREF(r->step);
241 PyString_ConcatAndDel(&s, PyObject_Repr(r->step));
250 {"step", T_OBJECT, offsetof(PySliceObject, step), READONLY},
257 Py_ssize_t ilen, start, stop, step, slicelength;
266 &step, &slicelength) < 0) {
270 return Py_BuildValue("(nnn)", start, stop, step);
284 return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
313 if (PyObject_Cmp(v->step, w->step, &result) < 0)
330 Py_VISIT(v->step);