• Home
  • Raw
  • Download

Lines Matching full:step

20     PyObject *step;  member
24 /* Helper function for validating step. Always returns a new reference or
28 validate_step(PyObject *step) in validate_step() argument
30 /* No step specified, use a step of 1. */ in validate_step()
31 if (!step) in validate_step()
34 step = PyNumber_Index(step); in validate_step()
35 if (step && _PyLong_Sign(step) == 0) { in validate_step()
38 Py_CLEAR(step); in validate_step()
41 return step; in validate_step()
45 compute_range_length(PyObject *start, PyObject *stop, PyObject *step);
49 PyObject *stop, PyObject *step) in make_range_object() argument
53 length = compute_range_length(start, stop, step); in make_range_object()
64 obj->step = step; in make_range_object()
78 PyObject *start = NULL, *stop = NULL, *step = NULL; in range_from_array() local
82 step = args[2]; in range_from_array()
95 step = validate_step(step); /* Caution, this can clear exceptions */ in range_from_array()
96 if (!step) { in range_from_array()
109 step = _PyLong_GetOne(); in range_from_array()
110 Py_INCREF(step); in range_from_array()
122 obj = make_range_object(type, start, stop, step); in range_from_array()
130 Py_DECREF(step); in range_from_array()
157 range(start, stop[, step]) -> range object\n\
160 to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.\n\
163 When step is given, it specifies the increment (or decrement).");
170 Py_DECREF(r->step); in range_dealloc()
175 /* Return number of items in range (lo, hi, step) as a PyLong object,
180 compute_range_length(PyObject *start, PyObject *stop, PyObject *step) in compute_range_length() argument
195 cmp_result = PyObject_RichCompareBool(step, zero, Py_GT); in compute_range_length()
202 Py_INCREF(step); in compute_range_length()
206 step = PyNumber_Negative(step); in compute_range_length()
207 if (!step) in compute_range_length()
214 Py_DECREF(step); in compute_range_length()
228 if ((tmp2 = PyNumber_FloorDivide(diff, step)) == NULL) in compute_range_length()
236 Py_DECREF(step); in compute_range_length()
241 Py_DECREF(step); in compute_range_length()
259 * return r->start + (i * r->step) in compute_item()
261 if (r->step == _PyLong_GetOne()) { in compute_item()
265 incr = PyNumber_Multiply(i, r->step); in compute_item()
345 PyObject *start = NULL, *stop = NULL, *step = NULL; in compute_slice() local
349 error = _PySlice_GetLongIndices(slice, r->length, &start, &stop, &step); in compute_slice()
353 substep = PyNumber_Multiply(r->step, step); in compute_slice()
355 Py_CLEAR(step); in compute_slice()
372 Py_XDECREF(step); in compute_slice()
391 cmp1 = PyObject_RichCompareBool(r->step, zero, Py_GT); in range_contains_long()
414 tmp2 = PyNumber_Remainder(tmp1, r->step); in range_contains_long()
417 /* result = ((int(ob) - start) % step) == 0 */ in range_contains_long()
448 return r0.step == r1.step
473 return PyObject_RichCompareBool(r0->step, r1->step, Py_EQ); in range_equals()
512 return hash((len(r), r.start, r.step))
546 Py_INCREF(r->step); in range_hash()
547 PyTuple_SET_ITEM(t, 2, r->step); in range_hash()
596 if (r->step == _PyLong_GetOne()) { in range_index()
600 /* idx = (ob - r.start) // r.step */ in range_index()
601 PyObject *sidx = PyNumber_FloorDivide(idx, r->step); in range_index()
628 need the step value. We don't care about overflow. */ in range_repr()
629 istep = PyNumber_AsSsize_t(r->step, NULL); in range_repr()
639 r->start, r->stop, r->step); in range_repr()
647 r->start, r->stop, r->step); in range_reduce()
712 {"step", T_OBJECT_EX, offsetof(rangeobject, step), READONLY},
769 long step; member
780 (unsigned long)(r->index++) * r->step)); in rangeiter_next()
796 PyObject *start=NULL, *stop=NULL, *step=NULL; in rangeiter_reduce() local
803 stop = PyLong_FromLong(r->start + r->len * r->step); in rangeiter_reduce()
806 step = PyLong_FromLong(r->step); in rangeiter_reduce()
807 if (step == NULL) in rangeiter_reduce()
810 start, stop, step); in rangeiter_reduce()
819 Py_XDECREF(step); in rangeiter_reduce()
884 /* Return number of items in range (lo, hi, step). step != 0
888 get_len_of_range(long lo, long hi, long step) in get_len_of_range() argument
891 If step > 0 and lo >= hi, or step < 0 and lo <= hi, the range is empty. in get_len_of_range()
892 Else for step > 0, if n values are in the range, the last one is in get_len_of_range()
893 lo + (n-1)*step, which must be <= hi-1. Rearranging, in get_len_of_range()
894 n <= (hi - lo - 1)/step + 1, so taking the floor of the RHS gives in get_len_of_range()
900 precision to compute the RHS exactly. The analysis for step < 0 in get_len_of_range()
903 assert(step != 0); in get_len_of_range()
904 if (step > 0 && lo < hi) in get_len_of_range()
905 return 1UL + (hi - 1UL - lo) / step; in get_len_of_range()
906 else if (step < 0 && lo > hi) in get_len_of_range()
907 return 1UL + (lo - 1UL - hi) / (0UL - step); in get_len_of_range()
916 fast_range_iter(long start, long stop, long step, long len) in fast_range_iter() argument
922 it->step = step; in fast_range_iter()
932 PyObject *step; member
949 product = PyNumber_Multiply(r->len, r->step); in longrangeiter_reduce()
957 Py_INCREF(r->step); in longrangeiter_reduce()
959 r->start, stop, r->step); in longrangeiter_reduce()
963 Py_DECREF(r->step); in longrangeiter_reduce()
1012 Py_XDECREF(r->step); in longrangeiter_dealloc()
1028 product = PyNumber_Multiply(r->index, r->step); in longrangeiter_next()
1101 lstep = PyLong_AsLong(r->step); in range_iter()
1129 it->step = r->step; in range_iter()
1133 Py_INCREF(it->step); in range_iter()
1150 /* reversed(range(start, stop, step)) can be expressed as in range_reverse()
1151 range(start+(n-1)*step, start-step, -step), where n is the number of in range_reverse()
1154 If each of start, stop, step, -step, start-step, and the length in range_reverse()
1170 lstep = PyLong_AsLong(range->step); in range_reverse()
1213 it->index = it->start = it->step = NULL; in range_reverse()
1215 /* start + (len - 1) * step */ in range_reverse()
1223 product = PyNumber_Multiply(diff, range->step); in range_reverse()
1234 it->step = PyNumber_Negative(range->step); in range_reverse()
1235 if (!it->step) in range_reverse()