40#endif 41#ifndef ULong 42typedef unsigned Long ULong; 43#endif 44#ifndef UShort 45typedef unsigned short UShort; 46#endif 47 48#ifndef ANSI 49#ifdef KR_headers 50#define ANSI(x) () 51#define Void /*nothing*/ 52#else 53#define ANSI(x) x 54#define Void void 55#endif 56#endif /* ANSI */ 57 58#ifndef CONST 59#ifdef KR_headers 60#define CONST /* blank */ 61#else 62#define CONST const 63#endif 64#endif /* CONST */ 65 66 enum { /* return values from strtodg */ 67 STRTOG_Zero = 0, 68 STRTOG_Normal = 1, 69 STRTOG_Denormal = 2, 70 STRTOG_Infinite = 3, 71 STRTOG_NaN = 4, 72 STRTOG_NaNbits = 5, 73 STRTOG_NoNumber = 6, 74 STRTOG_Retmask = 7, 75 76 /* The following may be or-ed into one of the above values. */ 77 78 STRTOG_Neg = 0x08, /* does not affect STRTOG_Inexlo or STRTOG_Inexhi */ 79 STRTOG_Inexlo = 0x10, /* returned result rounded toward zero */ 80 STRTOG_Inexhi = 0x20, /* returned result rounded away from zero */ 81 STRTOG_Inexact = 0x30, 82 STRTOG_Underflow= 0x40, 83 STRTOG_Overflow = 0x80 84 }; 85 86 typedef struct 87FPI { 88 int nbits; 89 int emin; 90 int emax; 91 int rounding; 92 int sudden_underflow; 93 } FPI; 94 95enum { /* FPI.rounding values: same as FLT_ROUNDS */ 96 FPI_Round_zero = 0, 97 FPI_Round_near = 1, 98 FPI_Round_up = 2, 99 FPI_Round_down = 3 100 }; 101 102#ifdef __cplusplus 103extern "C" { 104#endif 105 106extern char* dtoa ANSI((double d, int mode, int ndigits, int *decpt, 107 int *sign, char **rve)); 108extern char* gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp, 109 int mode, int ndigits, int *decpt, char **rve)); 110extern void freedtoa ANSI((char*)); 111extern float strtof ANSI((CONST char *, char **)); 112extern double strtod ANSI((CONST char *, char **)); 113extern int strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*)); 114 115extern char* g_ddfmt ANSI((char*, double*, int, size_t)); 116extern char* g_dfmt ANSI((char*, double*, int, size_t)); 117extern char* g_ffmt ANSI((char*, float*, int, size_t)); 118extern char* g_Qfmt ANSI((char*, void*, int, size_t)); 119extern char* g_xfmt ANSI((char*, void*, int, size_t)); 120extern char* g_xLfmt ANSI((char*, void*, int, size_t)); 121 122extern int strtoId ANSI((CONST char*, char**, double*, double*)); 123extern int strtoIdd ANSI((CONST char*, char**, double*, double*)); 124extern int strtoIf ANSI((CONST char*, char**, float*, float*)); 125extern int strtoIQ ANSI((CONST char*, char**, void*, void*)); 126extern int strtoIx ANSI((CONST char*, char**, void*, void*)); 127extern int strtoIxL ANSI((CONST char*, char**, void*, void*)); 128extern int strtord ANSI((CONST char*, char**, int, double*)); 129extern int strtordd ANSI((CONST char*, char**, int, double*)); 130extern int strtorf ANSI((CONST char*, char**, int, float*)); 131extern int strtorQ ANSI((CONST char*, char**, int, void*)); 132extern int strtorx ANSI((CONST char*, char**, int, void*)); 133extern int strtorxL ANSI((CONST char*, char**, int, void*)); 134#if 1 135extern int strtodI ANSI((CONST char*, char**, double*)); 136extern int strtopd ANSI((CONST char*, char**, double*)); 137extern int strtopdd ANSI((CONST char*, char**, double*)); 138extern int strtopf ANSI((CONST char*, char**, float*)); 139extern int strtopQ ANSI((CONST char*, char**, void*)); 140extern int strtopx ANSI((CONST char*, char**, void*)); 141extern int strtopxL ANSI((CONST char*, char**, void*)); 142#else 143#define strtopd(s,se,x) strtord(s,se,1,x) 144#define strtopdd(s,se,x) strtordd(s,se,1,x) 145#define strtopf(s,se,x) strtorf(s,se,1,x) 146#define strtopQ(s,se,x) strtorQ(s,se,1,x) 147#define strtopx(s,se,x) strtorx(s,se,1,x) 148#define strtopxL(s,se,x) strtorxL(s,se,1,x) 149#endif 150 151#ifdef __cplusplus 152} 153#endif 154#endif /* GDTOA_H_INCLUDED */
| 40#endif 41#ifndef ULong 42typedef unsigned Long ULong; 43#endif 44#ifndef UShort 45typedef unsigned short UShort; 46#endif 47 48#ifndef ANSI 49#ifdef KR_headers 50#define ANSI(x) () 51#define Void /*nothing*/ 52#else 53#define ANSI(x) x 54#define Void void 55#endif 56#endif /* ANSI */ 57 58#ifndef CONST 59#ifdef KR_headers 60#define CONST /* blank */ 61#else 62#define CONST const 63#endif 64#endif /* CONST */ 65 66 enum { /* return values from strtodg */ 67 STRTOG_Zero = 0, 68 STRTOG_Normal = 1, 69 STRTOG_Denormal = 2, 70 STRTOG_Infinite = 3, 71 STRTOG_NaN = 4, 72 STRTOG_NaNbits = 5, 73 STRTOG_NoNumber = 6, 74 STRTOG_Retmask = 7, 75 76 /* The following may be or-ed into one of the above values. */ 77 78 STRTOG_Neg = 0x08, /* does not affect STRTOG_Inexlo or STRTOG_Inexhi */ 79 STRTOG_Inexlo = 0x10, /* returned result rounded toward zero */ 80 STRTOG_Inexhi = 0x20, /* returned result rounded away from zero */ 81 STRTOG_Inexact = 0x30, 82 STRTOG_Underflow= 0x40, 83 STRTOG_Overflow = 0x80 84 }; 85 86 typedef struct 87FPI { 88 int nbits; 89 int emin; 90 int emax; 91 int rounding; 92 int sudden_underflow; 93 } FPI; 94 95enum { /* FPI.rounding values: same as FLT_ROUNDS */ 96 FPI_Round_zero = 0, 97 FPI_Round_near = 1, 98 FPI_Round_up = 2, 99 FPI_Round_down = 3 100 }; 101 102#ifdef __cplusplus 103extern "C" { 104#endif 105 106extern char* dtoa ANSI((double d, int mode, int ndigits, int *decpt, 107 int *sign, char **rve)); 108extern char* gdtoa ANSI((FPI *fpi, int be, ULong *bits, int *kindp, 109 int mode, int ndigits, int *decpt, char **rve)); 110extern void freedtoa ANSI((char*)); 111extern float strtof ANSI((CONST char *, char **)); 112extern double strtod ANSI((CONST char *, char **)); 113extern int strtodg ANSI((CONST char*, char**, FPI*, Long*, ULong*)); 114 115extern char* g_ddfmt ANSI((char*, double*, int, size_t)); 116extern char* g_dfmt ANSI((char*, double*, int, size_t)); 117extern char* g_ffmt ANSI((char*, float*, int, size_t)); 118extern char* g_Qfmt ANSI((char*, void*, int, size_t)); 119extern char* g_xfmt ANSI((char*, void*, int, size_t)); 120extern char* g_xLfmt ANSI((char*, void*, int, size_t)); 121 122extern int strtoId ANSI((CONST char*, char**, double*, double*)); 123extern int strtoIdd ANSI((CONST char*, char**, double*, double*)); 124extern int strtoIf ANSI((CONST char*, char**, float*, float*)); 125extern int strtoIQ ANSI((CONST char*, char**, void*, void*)); 126extern int strtoIx ANSI((CONST char*, char**, void*, void*)); 127extern int strtoIxL ANSI((CONST char*, char**, void*, void*)); 128extern int strtord ANSI((CONST char*, char**, int, double*)); 129extern int strtordd ANSI((CONST char*, char**, int, double*)); 130extern int strtorf ANSI((CONST char*, char**, int, float*)); 131extern int strtorQ ANSI((CONST char*, char**, int, void*)); 132extern int strtorx ANSI((CONST char*, char**, int, void*)); 133extern int strtorxL ANSI((CONST char*, char**, int, void*)); 134#if 1 135extern int strtodI ANSI((CONST char*, char**, double*)); 136extern int strtopd ANSI((CONST char*, char**, double*)); 137extern int strtopdd ANSI((CONST char*, char**, double*)); 138extern int strtopf ANSI((CONST char*, char**, float*)); 139extern int strtopQ ANSI((CONST char*, char**, void*)); 140extern int strtopx ANSI((CONST char*, char**, void*)); 141extern int strtopxL ANSI((CONST char*, char**, void*)); 142#else 143#define strtopd(s,se,x) strtord(s,se,1,x) 144#define strtopdd(s,se,x) strtordd(s,se,1,x) 145#define strtopf(s,se,x) strtorf(s,se,1,x) 146#define strtopQ(s,se,x) strtorQ(s,se,1,x) 147#define strtopx(s,se,x) strtorx(s,se,1,x) 148#define strtopxL(s,se,x) strtorxL(s,se,1,x) 149#endif 150 151#ifdef __cplusplus 152} 153#endif 154#endif /* GDTOA_H_INCLUDED */
|