Lines Matching refs:spec
277 /* Create a temporary object that contains the format spec we're
474 calc_number_widths(NumberFieldWidths *spec, Py_ssize_t n_prefix,
483 spec->n_digits = n_end - n_start - n_remainder - (has_decimal?1:0);
484 spec->n_lpadding = 0;
485 spec->n_prefix = n_prefix;
486 spec->n_decimal = has_decimal ? PyUnicode_GET_LENGTH(locale->decimal_point) : 0;
487 spec->n_remainder = n_remainder;
488 spec->n_spadding = 0;
489 spec->n_rpadding = 0;
490 spec->sign = '\0';
491 spec->n_sign = 0;
516 spec->n_sign = 1;
517 spec->sign = (sign_char == '-' ? '-' : '+');
520 spec->n_sign = 1;
521 spec->sign = (sign_char == '-' ? '-' : ' ');
526 spec->n_sign = 1;
527 spec->sign = '-';
532 n_non_digit_non_padding = spec->n_sign + spec->n_prefix + spec->n_decimal +
533 spec->n_remainder;
538 spec->n_min_width = format->width - n_non_digit_non_padding;
540 spec->n_min_width = 0;
542 if (spec->n_digits == 0)
546 spec->n_grouped_digits = 0;
549 spec->n_grouped_digits = _PyUnicode_InsertThousandsGrouping(
551 NULL, 0, spec->n_digits,
552 spec->n_min_width,
554 if (spec->n_grouped_digits == -1) {
565 (n_non_digit_non_padding + spec->n_grouped_digits);
570 spec->n_rpadding = n_padding;
573 spec->n_lpadding = n_padding / 2;
574 spec->n_rpadding = n_padding - spec->n_lpadding;
577 spec->n_spadding = n_padding;
580 spec->n_lpadding = n_padding;
588 if (spec->n_lpadding || spec->n_spadding || spec->n_rpadding)
591 if (spec->n_decimal)
594 return spec->n_lpadding + spec->n_sign + spec->n_prefix +
595 spec->n_spadding + spec->n_grouped_digits + spec->n_decimal +
596 spec->n_remainder + spec->n_rpadding;
603 fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec,
615 if (spec->n_lpadding) {
617 writer->pos, spec->n_lpadding, fill_char);
618 writer->pos += spec->n_lpadding;
620 if (spec->n_sign == 1) {
621 PyUnicode_WRITE(kind, data, writer->pos, spec->sign);
624 if (spec->n_prefix) {
627 spec->n_prefix);
630 for (t = 0; t < spec->n_prefix; t++) {
637 writer->pos += spec->n_prefix;
639 if (spec->n_spadding) {
641 writer->pos, spec->n_spadding, fill_char);
642 writer->pos += spec->n_spadding;
646 if (spec->n_digits != 0) {
649 writer, spec->n_grouped_digits,
650 digits, d_pos, spec->n_digits,
651 spec->n_min_width,
655 assert(r == spec->n_grouped_digits);
656 d_pos += spec->n_digits;
660 for (t = 0; t < spec->n_grouped_digits; t++) {
670 writer->pos += spec->n_grouped_digits;
672 if (spec->n_decimal) {
675 locale->decimal_point, 0, spec->n_decimal);
676 writer->pos += spec->n_decimal;
680 if (spec->n_remainder) {
683 digits, d_pos, spec->n_remainder);
684 writer->pos += spec->n_remainder;
685 /* d_pos += spec->n_remainder; */
688 if (spec->n_rpadding) {
690 writer->pos, spec->n_rpadding,
692 writer->pos += spec->n_rpadding;
879 NumberFieldWidths spec;
1013 n_total = calc_number_widths(&spec, n_prefix, sign_char, inumeric_chars,
1025 result = fill_number(writer, &spec,
1056 NumberFieldWidths spec;
1163 n_total = calc_number_widths(&spec, 0, sign_char, index,
1175 result = fill_number(writer, &spec,
1460 /* check for the special case of zero length format spec, make
1496 /* check for the special case of zero length format spec, make
1556 /* check for the special case of zero length format spec, make
1595 /* check for the special case of zero length format spec, make