Lines Matching refs:stop

109 /* start, stop, and step are python objects with None indicating no
114 PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
122 if (stop == NULL) {
123 stop = Py_None;
144 Py_INCREF(stop);
145 obj->stop = stop;
172 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
189 if (r->stop == Py_None) {
190 *stop = *step < 0 ? -1 : length;
192 if (!PyLong_Check(r->stop)) return -1;
193 *stop = PyLong_AsSsize_t(r->stop);
194 if (*stop < 0) *stop += length;
196 if (*stop > length) return -1;
204 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
238 if (r->stop == Py_None) {
239 *stop = *step < 0 ? PY_SSIZE_T_MIN : PY_SSIZE_T_MAX;
242 if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
250 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
267 if (*stop < 0) {
268 *stop += length;
269 if (*stop < 0) {
270 *stop = (step < 0) ? -1 : 0;
273 else if (*stop >= length) {
274 *stop = (step < 0) ? length - 1 : length;
278 if (*stop < *start) {
279 return (*start - *stop - 1) / (-step) + 1;
283 if (*start < *stop) {
284 return (*stop - *start - 1) / step + 1;
294 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
297 if (PySlice_Unpack(_r, start, stop, step) < 0)
299 *slicelength = PySlice_AdjustIndices(length, start, stop, *step);
306 PyObject *start, *stop, *step;
308 start = stop = step = NULL;
313 if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
316 /* This swapping of stop and start is to maintain similarity with
318 if (stop == NULL) {
319 stop = start;
322 return PySlice_New(start, stop, step);
326 "slice(stop)\n\
327 slice(start, stop[, step])\n\
338 Py_DECREF(r->stop);
350 return PyUnicode_FromFormat("slice(%R, %R, %R)", r->start, r->stop, r->step);
355 {"stop", T_OBJECT, offsetof(PySliceObject, stop), READONLY},
386 PyObject *start=NULL, *stop=NULL, *step=NULL;
410 /* Find lower and upper bounds for start and stop. */
466 /* Compute stop. */
467 if (self->stop == Py_None) {
468 stop = step_is_negative ? lower : upper;
469 Py_INCREF(stop);
472 stop = evaluate_slice_index(self->stop);
473 if (stop == NULL)
476 if (_PyLong_Sign(stop) < 0) {
477 /* stop += length */
478 PyObject *tmp = PyNumber_Add(stop, length);
479 Py_DECREF(stop);
480 stop = tmp;
481 if (stop == NULL)
484 cmp_result = PyObject_RichCompareBool(stop, lower, Py_LT);
489 Py_DECREF(stop);
490 stop = lower;
494 cmp_result = PyObject_RichCompareBool(stop, upper, Py_GT);
499 Py_DECREF(stop);
500 stop = upper;
506 *stop_ptr = stop;
515 Py_XDECREF(stop);
527 PyObject *start, *stop, *step;
543 error = _PySlice_GetLongIndices(self, length, &start, &stop, &step);
548 return Py_BuildValue("(NNN)", start, stop, step);
552 "S.indices(len) -> (start, stop, stride)\n\
554 Assuming a sequence of length len, calculate the start and stop\n\
562 return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
602 ((PySliceObject *)v)->stop,
610 ((PySliceObject *)w)->stop,
627 Py_VISIT(v->stop);