bc: eliminate always the same params to bc_num_printBase()

function                                             old     new   delta
bc_program_print                                     739     736      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-12-08 23:48:53 +01:00
parent ebc41c9d94
commit 0f37b3286a

View File

@ -2436,28 +2436,31 @@ err:
return s; return s;
} }
static BcStatus bc_num_printBase(BcNum *n, BcNum *base, size_t base_t) static BcStatus bc_num_printBase(BcNum *n)
{ {
BcStatus s; BcStatus s;
size_t width, i; size_t width, i;
BcNumDigitOp print; BcNumDigitOp print;
bool neg = n->neg; bool neg = n->neg;
if (neg) bb_putchar('-'); if (neg) {
G.prog.nchars += neg; bb_putchar('-');
G.prog.nchars++;
}
n->neg = false; n->neg = false;
if (base_t <= BC_NUM_MAX_IBASE) { if (G.prog.ob_t <= BC_NUM_MAX_IBASE) {
width = 1; width = 1;
print = bc_num_printHex; print = bc_num_printHex;
} }
else { else {
for (i = base_t - 1, width = 0; i != 0; i /= 10, ++width); for (i = G.prog.ob_t - 1, width = 0; i != 0; i /= 10, ++width)
continue;
print = bc_num_printDigits; print = bc_num_printDigits;
} }
s = bc_num_printNum(n, base, width, print); s = bc_num_printNum(n, &G.prog.ob, width, print);
n->neg = neg; n->neg = neg;
return s; return s;
@ -2486,9 +2489,6 @@ static BcStatus bc_num_parse(BcNum *n, const char *val, BcNum *base,
static BcStatus bc_num_print(BcNum *n, bool newline) static BcStatus bc_num_print(BcNum *n, bool newline)
{ {
BcNum *base = &G.prog.ob;
size_t base_t = G.prog.ob_t;
BcStatus s = BC_STATUS_SUCCESS; BcStatus s = BC_STATUS_SUCCESS;
bc_num_printNewline(); bc_num_printNewline();
@ -2497,10 +2497,10 @@ static BcStatus bc_num_print(BcNum *n, bool newline)
bb_putchar('0'); bb_putchar('0');
++G.prog.nchars; ++G.prog.nchars;
} }
else if (base_t == 10) else if (G.prog.ob_t == 10)
bc_num_printDecimal(n); bc_num_printDecimal(n);
else else
s = bc_num_printBase(n, base, base_t); s = bc_num_printBase(n);
if (newline) { if (newline) {
bb_putchar('\n'); bb_putchar('\n');