Add a procedure to print num chars more easily
diff --git a/src/num.c b/src/num.c
index d1d9b6d..24a2c32 100644
--- a/src/num.c
+++ b/src/num.c
@@ -1673,6 +1673,11 @@
}
}
+static void bc_num_putchar(int c) {
+ if (c != '\n') bc_num_printNewline();
+ bc_vm_putchar(c);
+}
+
#if DC_ENABLED
static void bc_num_printChar(size_t n, size_t len, bool rdx) {
BC_UNUSED(rdx);
@@ -1686,18 +1691,16 @@
size_t exp, pow;
- bc_num_printNewline();
- bc_vm_putchar(rdx ? '.' : ' ');
+ bc_num_putchar(rdx ? '.' : ' ');
bc_num_printNewline();
for (exp = 0, pow = 1; exp < len - 1; ++exp, pow *= BC_BASE);
for (exp = 0; exp < len; pow /= BC_BASE, ++exp) {
size_t dig;
- bc_num_printNewline();
dig = n / pow;
n -= dig * pow;
- bc_vm_putchar(((uchar) dig) + '0');
+ bc_num_putchar(((uchar) dig) + '0');
}
}
@@ -1707,13 +1710,9 @@
assert(len == 1);
- if (rdx) {
- bc_num_printNewline();
- bc_vm_putchar('.');
- }
+ if (rdx) bc_num_putchar('.');
- bc_num_printNewline();
- bc_vm_putchar(bc_num_hex_digits[n]);
+ bc_num_putchar(bc_num_hex_digits[n]);
}
static void bc_num_printDecimal(const BcNum *restrict n) {
@@ -1722,7 +1721,7 @@
bool zero = true;
size_t buffer[BC_BASE_POWER];
- if (n->neg) bc_vm_putchar('-');
+ if (n->neg) bc_num_putchar('-');
for (i = n->len - 1; i < n->len; --i) {
@@ -1787,19 +1786,14 @@
}
bc_num_printDecimal(&temp);
-
- bc_num_printNewline();
- bc_vm_putchar('e');
+ bc_num_putchar('e');
if (!places) {
bc_num_printHex(0, 1, false);
goto exit;
}
- if (neg) {
- bc_num_printNewline();
- bc_vm_putchar('-');
- }
+ if (neg) bc_num_putchar('-');
bc_num_setup(&exp, digs, BC_NUM_LONG_LOG10);
bc_num_ulong2num(&exp, (unsigned long) places);
@@ -1926,7 +1920,7 @@
BcNumDigitOp print;
bool neg = n->neg;
- if (neg) bc_vm_putchar('-');
+ if (neg) bc_num_putchar('-');
n->neg = false;
@@ -2053,7 +2047,7 @@
#endif // BC_ENABLE_EXTRA_MATH
else s = bc_num_printBase(n, base, base_t);
- if (BC_NO_ERR(!s) && newline) bc_vm_putchar('\n');
+ if (BC_NO_ERR(!s) && newline) bc_num_putchar('\n');
return s;
}