mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-sprintf: inline sign_bits() function
This commit is contained in:
@@ -43,26 +43,6 @@ remove_sign_bits(char *str, int base)
|
||||
return t;
|
||||
}
|
||||
|
||||
static char
|
||||
sign_bits(int base, const char *p)
|
||||
{
|
||||
char c;
|
||||
|
||||
switch (base) {
|
||||
case 16:
|
||||
if (*p == 'X') c = 'F';
|
||||
else c = 'f';
|
||||
break;
|
||||
case 8:
|
||||
c = '7'; break;
|
||||
case 2:
|
||||
c = '1'; break;
|
||||
default:
|
||||
c = '.'; break;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
static char *
|
||||
mrb_uint_to_cstr(char *buf, size_t len, mrb_int num, int base)
|
||||
{
|
||||
@@ -570,6 +550,7 @@ retry:
|
||||
const char *prefix = NULL;
|
||||
int sign = 0, dots = 0;
|
||||
char sc = 0;
|
||||
char fc = 0;
|
||||
mrb_int v = 0;
|
||||
int base;
|
||||
int len;
|
||||
@@ -664,6 +645,15 @@ retry:
|
||||
}
|
||||
|
||||
str_skip:
|
||||
switch (base) {
|
||||
case 16:
|
||||
fc = 'f'; break;
|
||||
case 8:
|
||||
fc = '7'; break;
|
||||
case 2:
|
||||
fc = '1'; break;
|
||||
}
|
||||
|
||||
if (*p == 'X') {
|
||||
char *pp = s;
|
||||
int c;
|
||||
@@ -671,6 +661,9 @@ retry:
|
||||
*pp = toupper(c);
|
||||
pp++;
|
||||
}
|
||||
if (base == 16 && fc) {
|
||||
fc = 'F';
|
||||
}
|
||||
}
|
||||
|
||||
if (prefix && !prefix[1]) { /* octal */
|
||||
@@ -724,9 +717,8 @@ retry:
|
||||
prec -= 2;
|
||||
width -= 2;
|
||||
PUSH("..", 2);
|
||||
char c = sign_bits(base, p);
|
||||
if (*s != c) {
|
||||
FILL(c, 1);
|
||||
if (*s != fc) {
|
||||
FILL(fc, 1);
|
||||
prec--; width--;
|
||||
}
|
||||
}
|
||||
@@ -738,8 +730,7 @@ retry:
|
||||
FILL(c, prec - len);
|
||||
}
|
||||
else if (v < 0) {
|
||||
char c = sign_bits(base, p);
|
||||
FILL(c, prec - len);
|
||||
FILL(fc, prec - len);
|
||||
}
|
||||
}
|
||||
PUSH(s, len);
|
||||
|
||||
Reference in New Issue
Block a user