Add benz compile time hooks PIC_DOUBLE_TO_CSTRING and PIC_CSTRING_TO_DOUBLE
This commit is contained in:
parent
4ef9394c0b
commit
bfe1db8d16
|
@ -347,7 +347,7 @@ int xvfprintf(pic_state *pic, xFILE *stream, const char *fmt, va_list ap) {
|
||||||
break;
|
break;
|
||||||
case 'f': {
|
case 'f': {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
pic_dtoa(va_arg(ap, double), buf);
|
PIC_DOUBLE_TO_CSTRING(va_arg(ap, double), buf);
|
||||||
cnt += xfputs(pic, buf, stream);
|
cnt += xfputs(pic, buf, stream);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -282,16 +282,16 @@ atof(const char *nptr)
|
||||||
#if PIC_ENABLE_STDIO
|
#if PIC_ENABLE_STDIO
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
|
|
||||||
PIC_INLINE void
|
void
|
||||||
pic_dtoa(double dval, char *buf)
|
PIC_INLINE pic_dtoa(double dval, char *buf)
|
||||||
{
|
{
|
||||||
sprintf(buf, "%g", dval);
|
sprintf(buf, "%g", dval);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
PIC_INLINE void
|
void
|
||||||
pic_dtoa(double dval, char *buf)
|
PIC_INLINE pic_dtoa(double dval, char *buf)
|
||||||
{
|
{
|
||||||
# define fabs(x) ((x) >= 0 ? (x) : -(x))
|
# define fabs(x) ((x) >= 0 ? (x) : -(x))
|
||||||
long lval, tlval;
|
long lval, tlval;
|
||||||
|
@ -339,6 +339,16 @@ pic_dtoa(double dval, char *buf)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIC_DOUBLE_TO_CSTRING
|
||||||
|
#define PIC_DOUBLE_TO_CSTRING pic_dtoa
|
||||||
|
#endif
|
||||||
|
void PIC_DOUBLE_TO_CSTRING(double, char *);
|
||||||
|
|
||||||
|
#ifndef PIC_CSTRING_TO_DOUBLE
|
||||||
|
#define PIC_CSTRING_TO_DOUBLE atof
|
||||||
|
#endif
|
||||||
|
double PIC_CSTRING_TO_DOUBLE(const char *);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -284,7 +284,7 @@ read_unsigned(pic_state *pic, struct pic_port *port, int c)
|
||||||
read_error(pic, "number too large",
|
read_error(pic, "number too large",
|
||||||
pic_obj_value(pic_make_str(pic, (const char *)buf, ATOF_BUF_SIZE)));
|
pic_obj_value(pic_make_str(pic, (const char *)buf, ATOF_BUF_SIZE)));
|
||||||
buf[idx] = 0;
|
buf[idx] = 0;
|
||||||
flt = atof(buf);
|
flt = PIC_CSTRING_TO_DOUBLE(buf);
|
||||||
|
|
||||||
if (dpe == 0 && pic_valid_int(flt))
|
if (dpe == 0 && pic_valid_int(flt))
|
||||||
return pic_int_value((int )flt);
|
return pic_int_value((int )flt);
|
||||||
|
|
Loading…
Reference in New Issue