Home | History | Annotate | Download | only in Objects

Lines Matching refs:step

109 /* start, stop, and step are python objects with None indicating no
114 PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
127 if (step == NULL) step = Py_None;
128 Py_INCREF(step);
134 obj->step = step;
163 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
167 if (r->step == Py_None) {
168 *step = 1;
170 if (!PyLong_Check(r->step)) return -1;
171 *step = PyLong_AsSsize_t(r->step);
174 *start = *step < 0 ? length-1 : 0;
181 *stop = *step < 0 ? -1 : length;
189 if (*step == 0) return -1;
195 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
200 if (r->step == Py_None) {
201 *step = 1;
204 if (!_PyEval_SliceIndex(r->step, step)) return -1;
205 if (*step == 0) {
207 "slice step cannot be zero");
210 /* Here *step might be -PY_SSIZE_T_MAX-1; in this case we replace it
213 * does "step = -step" as part of a slice reversal.
215 if (*step < -PY_SSIZE_T_MAX)
216 *step = -PY_SSIZE_T_MAX;
220 *start = *step < 0 ? PY_SSIZE_T_MAX-1 : 0;;
227 *stop = *step < 0 ? -PY_SSIZE_T_MAX : PY_SSIZE_T_MAX;
238 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
242 assert(step != 0);
243 assert(step >= -PY_SSIZE_T_MAX);
248 *start = (step < 0) ? -1 : 0;
252 *start = (step < 0) ? length - 1 : length;
258 *stop = (step < 0) ? -1 : 0;
262 *stop = (step < 0) ? length - 1 : length;
265 if (step < 0) {
267 return (*start - *stop - 1) / (-step) + 1;
272 return (*stop - *start - 1) / step + 1;
282 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
285 if (PySlice_Unpack(_r, start, stop, step) < 0)
287 *slicelength = PySlice_AdjustIndices(length, start, stop, *step);
294 PyObject *start, *stop, *step;
296 start = stop = step = NULL;
301 if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
310 return PySlice_New(start, stop, step);
315 slice(start, stop[, step])\n\
323 Py_DECREF(r->step);
335 return PyUnicode_FromFormat("slice(%R, %R, %R)", r->start, r->stop, r->step);
341 {"step", T_OBJECT, offsetof(PySliceObject, step), READONLY},
371 PyObject *start=NULL, *stop=NULL, *step=NULL;
375 /* Convert step to an integer; raise for zero step. */
376 if (self->step == Py_None) {
377 step = PyLong_FromLong(1L);
378 if (step == NULL)
384 step = evaluate_slice_index(self->step);
385 if (step == NULL)
387 step_sign = _PyLong_Sign(step);
390 "slice step cannot be zero");
495 *step_ptr = step;
504 Py_XDECREF(step);
515 PyObject *start, *stop, *step;
531 error = _PySlice_GetLongIndices(self, length, &start, &stop, &step);
536 return Py_BuildValue("(NNN)", start, stop, step);
550 return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
601 PyTuple_SET_ITEM(t1, 2, ((PySliceObject *)v)->step);
604 PyTuple_SET_ITEM(t2, 2, ((PySliceObject *)w)->step);
626 Py_VISIT(v->step);