Lines Matching full:last
168 saidx_t *first, saidx_t *last, saidx_t depth) {
173 for(i = last - 2; first <= i; --i) {
175 do { *(j - 1) = *j; } while((++j < last) && (*j < 0));
176 if(last <= j) { break; }
263 ss_pivot(const sauchar_t *Td, const saidx_t *PA, saidx_t *first, saidx_t *last) {
267 t = last - first;
272 return ss_median3(Td, PA, first, middle, last - 1);
275 return ss_median5(Td, PA, first, first + t, middle, last - 1 - t, last - 1);
281 last = ss_median3(Td, PA, last - 1 - (t << 1), last - 1 - t, last - 1);
282 return ss_median3(Td, PA, first, middle, last);
292 saidx_t *first, saidx_t *last, saidx_t depth) {
295 for(a = first - 1, b = last;;) {
311 saidx_t *first, saidx_t *last,
322 for(ssize = 0, limit = ss_ilg(last - first);;) {
324 if((last - first) <= SS_INSERTIONSORT_THRESHOLD) {
326 if(1 < (last - first)) { ss_insertionsort(T, PA, first, last, depth); }
328 STACK_POP(first, last, depth, limit);
333 if(limit-- == 0) { ss_heapsort(Td, PA, first, last - first); }
335 for(a = first + 1, v = Td[PA[*first]]; a < last; ++a) {
345 if((a - first) <= (last - a)) {
347 STACK_PUSH(a, last, depth, -1);
348 last = a, depth += 1, limit = ss_ilg(a - first);
353 if(1 < (last - a)) {
357 last = a, depth += 1, limit = ss_ilg(a - first);
364 a = ss_pivot(Td, PA, first, last);
369 for(b = first; (++b < last) && ((x = Td[PA[*b]]) == v);) { }
370 if(((a = b) < last) && (x < v)) {
371 for(; (++b < last) && ((x = Td[PA[*b]]) <= v);) {
375 for(c = last; (b < --c) && ((x = Td[PA[*c]]) == v);) { }
396 if((s = d - c) > (t = last - d - 1)) { s = t; }
397 for(e = b, f = last - s; 0 < s; --s, ++e, ++f) { SWAP(*e, *f); }
399 a = first + (b - a), c = last - (d - c);
402 if((a - first) <= (last - c)) {
403 if((last - c) <= (c - b)) {
405 STACK_PUSH(c, last, depth, limit);
406 last = a;
408 STACK_PUSH(c, last, depth, limit);
410 last = a;
412 STACK_PUSH(c, last, depth, limit);
414 first = b, last = c, depth += 1, limit = ss_ilg(c - b);
421 } else if((last - c) <= (c - b)) {
427 STACK_PUSH(c, last, depth, limit);
428 first = b, last = c, depth += 1, limit = ss_ilg(c - b);
434 first = ss_partition(PA, first, last, depth);
435 limit = ss_ilg(last - first);
461 ss_rotate(saidx_t *first, saidx_t *middle, saidx_t *last) {
464 l = middle - first, r = last - middle;
468 a = last - 1, b = middle - 1;
474 last = a;
485 if(last <= b) {
503 saidx_t *first, saidx_t *middle, saidx_t *last,
512 if(*(last - 1) < 0) { x = 1; p = PA + ~*(last - 1); }
513 else { x = 0; p = PA + *(last - 1); }
528 ss_rotate(a, middle, last);
529 last -= middle - a;
533 --last;
534 if(x != 0) { while(*--last < 0) { } }
535 if(middle == last) { break; }
546 saidx_t *first, saidx_t *middle, saidx_t *last,
566 if(last <= c) {
582 if(last <= c) {
596 saidx_t *first, saidx_t *middle, saidx_t *last,
604 bufend = buf + (last - middle) - 1;
605 ss_blockswap(buf, middle, last - middle);
612 for(t = *(a = last - 1), b = bufend, c = middle - 1;;) {
655 saidx_t *first, saidx_t *middle, saidx_t *last,
676 if((last - middle) <= bufsize) {
677 if((first < middle) && (middle < last)) {
678 ss_mergebackward(T, PA, first, middle, last, buf, depth);
680 MERGE_CHECK(first, last, check);
681 STACK_POP(first, middle, last, check);
687 ss_mergeforward(T, PA, first, middle, last, buf, depth);
689 MERGE_CHECK(first, last, check);
690 STACK_POP(first, middle, last, check);
694 for(m = 0, len = MIN(middle - first, last - middle), half = len >> 1;
708 if(rm < last) {
719 if((l - first) <= (last - r)) {
720 STACK_PUSH(r, rm, last, (next & 3) | (check & 4));
721 middle = lm, last = l, check = (check & 3) | (next & 4);
731 MERGE_CHECK(first, last, check);
732 STACK_POP(first, middle, last, check);
748 saidx_t *first, saidx_t *last,
761 ss_mintrosort(T, PA, first, last, depth);
764 (bufsize < (last - first)) &&
765 (bufsize < (limit = ss_isqrt(last - first)))) {
767 buf = middle = last - limit, bufsize = limit;
769 middle = last, limit = 0;
777 curbufsize = last - (a + SS_BLOCKSIZE);
797 ss_mintrosort(T, PA, middle, last, depth);
799 ss_insertionsort(T, PA, middle, last, depth);
801 ss_inplacemerge(T, PA, first, middle, last, depth);
806 /* Insert last type B* suffix. */
809 (a < last) && ((*a < 0) || (0 < ss_compare(T, &(PAi[0]), PA + *a, depth)));