Move the string-to-float functions into core, after marking them as
ACKCONF_WANT_FLOAT.
This commit is contained in:
parent
94ffa3ba88
commit
5fd8d772fd
|
@ -57,8 +57,8 @@ for _, plat in ipairs(vars.plats) do
|
||||||
"plat/"..plat.."/include+pkg",
|
"plat/"..plat.."/include+pkg",
|
||||||
"./malloc/malloc.h",
|
"./malloc/malloc.h",
|
||||||
"./core/math/localmath.h",
|
"./core/math/localmath.h",
|
||||||
|
"./core/stdlib/ext_fmt.h",
|
||||||
"./stdio/loc_incl.h",
|
"./stdio/loc_incl.h",
|
||||||
"./stdlib/ext_fmt.h",
|
|
||||||
"./time/loc_time.h",
|
"./time/loc_time.h",
|
||||||
},
|
},
|
||||||
vars = { plat = plat }
|
vars = { plat = plat }
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <ack/config.h>
|
||||||
|
|
||||||
|
#if ACKCONF_WANT_FLOAT
|
||||||
|
|
||||||
double(atof)(const char* nptr)
|
double(atof)(const char* nptr)
|
||||||
{
|
{
|
||||||
|
@ -16,3 +19,5 @@ double(atof)(const char* nptr)
|
||||||
errno = e;
|
errno = e;
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,12 +1,11 @@
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
#include "loc_incl.h"
|
#include <math.h>
|
||||||
|
#include <ack/config.h>
|
||||||
|
|
||||||
#if ACKCONF_WANT_STDIO_FLOAT
|
#if ACKCONF_WANT_STDIO_FLOAT
|
||||||
|
|
||||||
#include "../stdlib/ext_fmt.h"
|
#include "ext_fmt.h"
|
||||||
void _dbl_ext_cvt(double value, struct EXTEND* e);
|
|
||||||
char* _ext_str_cvt(struct EXTEND* e, int ndigit, int* decpt, int* sign, int ecvtflag);
|
|
||||||
|
|
||||||
static char*
|
static char*
|
||||||
cvt(long double value, int ndigit, int* decpt, int* sign, int ecvtflag)
|
cvt(long double value, int ndigit, int* decpt, int* sign, int ecvtflag)
|
|
@ -17,6 +17,8 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <ack/config.h>
|
#include <ack/config.h>
|
||||||
|
|
||||||
|
#if ACKCONF_WANT_FLOAT
|
||||||
|
|
||||||
static int b64_add(struct mantissa* e1, struct mantissa* e2);
|
static int b64_add(struct mantissa* e1, struct mantissa* e2);
|
||||||
static b64_sft(struct mantissa* e1, int n);
|
static b64_sft(struct mantissa* e1, int n);
|
||||||
|
|
||||||
|
@ -494,7 +496,7 @@ static add_exponent(struct EXTEND* e, int exp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_str_ext_cvt(const char* s, char** ss, struct EXTEND* e)
|
void _str_ext_cvt(const char* s, char** ss, struct EXTEND* e)
|
||||||
{
|
{
|
||||||
/* Like strtod, but for extended precision */
|
/* Like strtod, but for extended precision */
|
||||||
register int c;
|
register int c;
|
||||||
|
@ -781,7 +783,7 @@ char* _ext_str_cvt(struct EXTEND* e, int ndigit, int* decpt, int* sign, int ecvt
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
_dbl_ext_cvt(double value, struct EXTEND* e)
|
void _dbl_ext_cvt(double value, struct EXTEND* e)
|
||||||
{
|
{
|
||||||
/* Convert double to extended
|
/* Convert double to extended
|
||||||
*/
|
*/
|
||||||
|
@ -833,3 +835,5 @@ _ext_dbl_cvt(struct EXTEND* e)
|
||||||
}
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
22
lang/cem/libcc.ansi/core/stdlib/ext_fmt.h
Normal file
22
lang/cem/libcc.ansi/core/stdlib/ext_fmt.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef _EXT_FMT_H
|
||||||
|
#define _EXT_FMT_H
|
||||||
|
|
||||||
|
struct mantissa {
|
||||||
|
unsigned long h_32;
|
||||||
|
unsigned long l_32;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EXTEND {
|
||||||
|
short sign;
|
||||||
|
short exp;
|
||||||
|
struct mantissa mantissa;
|
||||||
|
#define m1 mantissa.h_32
|
||||||
|
#define m2 mantissa.l_32
|
||||||
|
};
|
||||||
|
|
||||||
|
extern void _str_ext_cvt(const char* s, char** ss, struct EXTEND* e);
|
||||||
|
extern double _ext_dbl_cvt(struct EXTEND* e);
|
||||||
|
extern void _dbl_ext_cvt(double value, struct EXTEND* e);
|
||||||
|
extern char* _ext_str_cvt(struct EXTEND* e, int ndigit, int* decpt, int* sign, int ecvtflag);
|
||||||
|
|
||||||
|
#endif
|
|
@ -4,10 +4,7 @@
|
||||||
#include <ack/config.h>
|
#include <ack/config.h>
|
||||||
#include "ext_fmt.h"
|
#include "ext_fmt.h"
|
||||||
|
|
||||||
#if ACKCONF_WANT_STDIO_FLOAT
|
#if ACKCONF_WANT_FLOAT
|
||||||
|
|
||||||
void _str_ext_cvt(const char* s, char** ss, struct EXTEND* e);
|
|
||||||
double _ext_dbl_cvt(struct EXTEND* e);
|
|
||||||
|
|
||||||
double
|
double
|
||||||
strtod(const char* p, char** pp)
|
strtod(const char* p, char** pp)
|
|
@ -1,13 +0,0 @@
|
||||||
struct mantissa {
|
|
||||||
unsigned long h_32;
|
|
||||||
unsigned long l_32;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct EXTEND {
|
|
||||||
short sign;
|
|
||||||
short exp;
|
|
||||||
struct mantissa mantissa;
|
|
||||||
#define m1 mantissa.h_32
|
|
||||||
#define m2 mantissa.l_32
|
|
||||||
};
|
|
||||||
|
|
Loading…
Reference in a new issue