5 #ifndef __FAST_ATOF_H_INCLUDED__ 6 #define __FAST_ATOF_H_INCLUDED__ 20 #define IRR_ATOF_TABLE_SIZE 17 60 u32 unsignedValue = 0;
61 while ( ( *
in >=
'0') && ( *
in <=
'9' ))
63 const u32 tmp = ( unsignedValue * 10 ) + ( *
in -
'0' );
64 if (tmp<unsignedValue)
66 unsignedValue=(
u32)0xffffffff;
99 const bool negative = (
'-' == *
in);
100 if (negative || (
'+' == *
in))
104 if (unsignedValue > (
u32)INT_MAX)
114 return -((
s32)unsignedValue);
116 return (
s32)unsignedValue;
128 if (
in >=
'0' &&
in <=
'9')
130 else if (
in >=
'a' &&
in <=
'f')
131 return 10u +
in -
'a';
132 else if (
in >=
'A' &&
in <=
'F')
133 return 10u +
in -
'A';
157 u32 unsignedValue = 0;
161 if ((*
in >=
'0') && (*
in <=
'9'))
162 tmp = (unsignedValue << 4u) + (*
in -
'0');
163 else if ((*
in >=
'A') && (*
in <=
'F'))
164 tmp = (unsignedValue << 4u) + (*
in -
'A') + 10;
165 else if ((*
in >=
'a') && (*
in <=
'f'))
166 tmp = (unsignedValue << 4u) + (*
in -
'a') + 10;
169 if (tmp<unsignedValue)
171 unsignedValue=(
u32)INT_MAX;
182 return unsignedValue;
204 u32 unsignedValue = 0;
208 if ((*
in >=
'0') && (*
in <=
'7'))
209 tmp = (unsignedValue << 3u) + (*
in -
'0');
212 if (tmp<unsignedValue)
214 unsignedValue=(
u32)INT_MAX;
225 return unsignedValue;
268 const u32 MAX_SAFE_U32_VALUE = UINT_MAX / 10 - 10;
273 while ( ( *
in >=
'0') && ( *
in <=
'9' ) )
277 if (intValue >= MAX_SAFE_U32_VALUE)
280 intValue = (intValue * 10) + (*
in -
'0');
284 f32 floatValue = (
f32)intValue;
288 while ( ( *
in >=
'0') && ( *
in <=
'9' ) )
290 floatValue = (floatValue * 10.f) + (
f32)(*
in -
'0');
318 const bool negative = (
'-' == *
in);
319 if (negative || (
'+'==*
in))
326 const char* afterDecimal = ++
in;
328 const size_t numDecimals = afterDecimal -
in;
335 value += decimal * (
f32)pow(10.
f, -(
float)numDecimals);
340 if (
'e' == *
in ||
'E' == *
in)
360 inline float fast_atof(
const char* floatAsString,
const char** out=0)
float fast_atof(const char *floatAsString, const char **out=0)
Convert a string to a floating point number.
const char * fast_atof_move(const char *in, f32 &result)
Provides a fast function for converting a string into a float.
float f32
32 bit floating point variable.
#define IRRLICHT_API
Set FPU settings.
Everything in the Irrlicht Engine can be found in this namespace.
#define IRR_ATOF_TABLE_SIZE
Very simple string class with some useful features.
s32 findFirst(T c) const
finds first occurrence of character in string
u32 strtoul10(const char *in, const char **out=0)
Convert a simple string of base 10 digits into an unsigned 32 bit integer.
signed int s32
32 bit signed variable.
GLsizei const GLfloat * value
u32 strtoul_prefix(const char *in, const char **out=0)
Convert a C-style prefixed string (hex, oct, integer) into an unsigned 32 bit integer.
unsigned int u32
32 bit unsigned variable.
u32 strtoul8(const char *in, const char **out=0)
Convert a simple string of base 8 digits into an unsigned 32 bit integer.
f32 strtof10(const char *in, const char **out=0)
Converts a sequence of digits into a whole positive floating point value.
const float fast_atof_table[17]
u32 strtoul16(const char *in, const char **out=0)
Convert a simple string of base 16 digits into an unsigned 32 bit integer.
u32 ctoul16(char in)
Convert a hex-encoded character to an unsigned integer.
s32 strtol10(const char *in, const char **out=0)
Convert a simple string of base 10 digits into a signed 32 bit integer.
IRRLICHT_API irr::core::stringc LOCALE_DECIMAL_POINTS
Selection of characters which count as decimal point in fast_atof.