Home | History | Annotate | Download | only in Objects

Lines Matching refs:start

109 /* start, stop, and step are python objects with None indicating no
114 PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
129 if (start == NULL) start = Py_None;
130 Py_INCREF(start);
135 obj->start = start;
145 PyObject *start, *end, *slice;
146 start = PyLong_FromSsize_t(istart);
147 if (!start)
151 Py_DECREF(start);
155 slice = PySlice_New(start, end, NULL);
156 Py_DECREF(start);
163 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
173 if (r->start == Py_None) {
174 *start = *step < 0 ? length-1 : 0;
176 if (!PyLong_Check(r->start)) return -1;
177 *start = PyLong_AsSsize_t(r->start);
178 if (*start < 0) *start += length;
188 if (*start >= length) return -1;
195 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
219 if (r->start == Py_None) {
220 *start = *step < 0 ? PY_SSIZE_T_MAX-1 : 0;;
223 if (!_PyEval_SliceIndex(r->start, start)) return -1;
238 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
245 if (*start < 0) {
246 *start += length;
247 if (*start < 0) {
248 *start = (step < 0) ? -1 : 0;
251 else if (*start >= length) {
252 *start = (step < 0) ? length - 1 : length;
266 if (*stop < *start) {
267 return (*start - *stop - 1) / (-step) + 1;
271 if (*start < *stop) {
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))
304 /* This swapping of stop and start is to maintain similarity with
307 stop = start;
308 start = NULL;
310 return PySlice_New(start, stop, step);
315 slice(start, stop[, step])\n\
324 Py_DECREF(r->start);
335 return PyUnicode_FromFormat("slice(%R, %R, %R)", r->start, r->stop, r->step);
339 {"start", T_OBJECT, offsetof(PySliceObject, start), READONLY},
371 PyObject *start=NULL, *stop=NULL, *step=NULL;
396 /* Find lower and upper bounds for start and stop. */
415 /* Compute start. */
416 if (self->start == Py_None) {
417 start = step_is_negative ? upper : lower;
418 Py_INCREF(start);
421 start = evaluate_slice_index(self->start);
422 if (start == NULL)
425 if (_PyLong_Sign(start) < 0) {
426 /* start += length */
427 PyObject *tmp = PyNumber_Add(start, length);
428 Py_DECREF(start);
429 start = tmp;
430 if (start == NULL)
433 cmp_result = PyObject_RichCompareBool(start, lower, Py_LT);
438 Py_DECREF(start);
439 start = lower;
443 cmp_result = PyObject_RichCompareBool(start, upper, Py_GT);
448 Py_DECREF(start);
449 start = upper;
493 *start_ptr = start;
502 Py_XDECREF(start);
515 PyObject *start, *stop, *step;
531 error = _PySlice_GetLongIndices(self, length, &start, &stop, &step);
536 return Py_BuildValue("(NNN)", start, stop, step);
540 "S.indices(len) -> (start, stop, stride)\n\
542 Assuming a sequence of length len, calculate the start and stop\n\
550 return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
599 start);
602 PyTuple_SET_ITEM(t2, 0, ((PySliceObject *)w)->start);
624 Py_VISIT(v->start);