5 #ifndef __FAST_ATOF_H_INCLUDED__
6 #define __FAST_ATOF_H_INCLUDED__
59 u32 unsignedValue = 0;
60 while ( ( *in >=
'0') && ( *in <=
'9' ))
62 const u32 tmp = ( unsignedValue * 10 ) + ( *in -
'0' );
63 if (tmp<unsignedValue)
65 unsignedValue=(
u32)0xffffffff;
98 const bool negative = (
'-' == *in);
99 if (negative || (
'+' == *in))
103 if (unsignedValue > (
u32)INT_MAX)
113 return -((
s32)unsignedValue);
115 return (
s32)unsignedValue;
127 if (in >=
'0' && in <=
'9')
129 else if (in >=
'a' && in <=
'f')
130 return 10u + in -
'a';
131 else if (in >=
'A' && in <=
'F')
132 return 10u + in -
'A';
156 u32 unsignedValue = 0;
160 if ((*in >=
'0') && (*in <=
'9'))
161 tmp = (unsignedValue << 4u) + (*in -
'0');
162 else if ((*in >=
'A') && (*in <=
'F'))
163 tmp = (unsignedValue << 4u) + (*in -
'A') + 10;
164 else if ((*in >=
'a') && (*in <=
'f'))
165 tmp = (unsignedValue << 4u) + (*in -
'a') + 10;
168 if (tmp<unsignedValue)
170 unsignedValue=(
u32)INT_MAX;
181 return unsignedValue;
203 u32 unsignedValue = 0;
207 if ((*in >=
'0') && (*in <=
'7'))
208 tmp = (unsignedValue << 3u) + (*in -
'0');
211 if (tmp<unsignedValue)
213 unsignedValue=(
u32)INT_MAX;
224 return unsignedValue;
267 const u32 MAX_SAFE_U32_VALUE = UINT_MAX / 10 - 10;
272 while ( ( *in >=
'0') && ( *in <=
'9' ) )
276 if (intValue >= MAX_SAFE_U32_VALUE)
279 intValue = (intValue * 10) + (*in -
'0');
283 f32 floatValue = (
f32)intValue;
287 while ( ( *in >=
'0') && ( *in <=
'9' ) )
289 floatValue = (floatValue * 10.f) + (
f32)(*in -
'0');
317 const bool negative = (
'-' == *in);
318 if (negative || (
'+'==*in))
325 const char* afterDecimal = ++in;
331 if (
'e' == *in ||
'E' == *in)
340 result = negative?-value:value;
350 inline float fast_atof(
const char* floatAsString,
const char** out=0)