19#ifndef DETERMINISTICESPASYNCWEBSERVER_DET_NUMPARSE_H
20#define DETERMINISTICESPASYNCWEBSERVER_DET_NUMPARSE_H
24 return c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\r' || c ==
'\f' || c ==
'\v';
28 return c >=
'0' && c <=
'9';
38 if (*p ==
'+' || *p ==
'-')
43 v = v * 10UL + (
unsigned long)(*p++ -
'0');
45 *end = (p == ds) ? s : p;
46 return neg ? (long)(0UL - v) : (long)v;
50inline unsigned long det_strtoul(
const char *s,
const char **end)
60 v = v * 10UL + (
unsigned long)(*p++ -
'0');
62 *end = (p == ds) ? s : p;
74 val += (double)(*p++ -
'0') / scale;
84 if (*p ==
'+' || *p ==
'-')
89 ex = (ex < 400) ? ex * 10 + (*p -
'0') : ex;
93 for (
int k = 0; k < ex; k++)
95 val = eneg ? val / m : val * m;
105 if (*p ==
'+' || *p ==
'-')
111 val = val * 10.0 + (*p++ -
'0');
116 if (any && (*p ==
'e' || *p ==
'E'))
120 return neg ? -val : val;
float det_strtof(const char *s, const char **end)
Parse a float (integer[.frac][e[+/-]exp]); sets end (or to s if none).
bool det_np_digit(char c)
long det_strtol(const char *s, const char **end)
Parse a base-10 long; sets end past the digits (or to s if none).
void det_strtod_exp(const char *&p, double &val)
double det_strtod(const char *s, const char **end)
Parse a double (integer[.frac][e[+/-]exp]); sets end (or to s if none).
unsigned long det_strtoul(const char *s, const char **end)
Parse a base-10 unsigned long; sets end past the digits (or to s).
void det_strtod_frac(const char *&p, double &val, bool &any)