diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fmt_fp.c | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/fmt_fp.c b/src/fmt_fp.c index 50abe3747..bfc0c82a6 100644 --- a/src/fmt_fp.c +++ b/src/fmt_fp.c @@ -365,85 +365,6 @@ mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, ch } -int -mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t buf_size, const char *fmt, mrb_float f) -{ - const char *s = fmt; - char sign = '\0'; - int alt_form = 0; - int left_align = 0; - int zero_pad = 0; - int width = -1; - int prec = 6; - - s++; // skip % - - while (*s) { - if (*s == '-') { - left_align = 1; - } else if (*s == '+') { - sign = '+'; - } else if (*s == ' ') { - sign = ' '; - } else if (*s == '0') { - zero_pad = 1; - } else if (*s == '#') { - alt_form = 1; - } else { - break; - } - s++; - } - if (ISDIGIT(*s)) { - char *endptr; - width = strtoul(s, &endptr, 10); - s = endptr; - } - if (*s == '.') { - s++; - if (ISDIGIT(*s)) { - char *endptr; - prec = strtoul(s, &endptr, 10); - s = endptr; - } - else { - prec = 0; - } - } - char c = *s; - if (alt_form) { - c |= 0x80; - } - int len = mrb_format_float(f, buf, buf_size, c, prec, sign); - - // buf[0] < '0' returns true if the first character is space, + or - - // buf[1] < '9' matches a digit, and doesn't match when we get back +nan or +inf - if (buf[0] < '0' && buf[1] <= '9' && zero_pad) { - buf++; - width--; - len--; - } - if (*buf < '0' || *buf >= '9') { - // For inf or nan, we don't want to zero pad. - zero_pad = 0; - } - if (len >= width) { - return len; - } - buf[width] = '\0'; - if (left_align) { - memset(&buf[len], ' ', width - len); - return width; - } - memmove(&buf[width - len], buf, len); - if (zero_pad) { - memset(buf, '0', width - len); - } else { - memset(buf, ' ', width - len); - } - return width; -} - MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value flo) { |
