 |
Irrlicht 3D Engine
|
|
Go to the documentation of this file.
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)
float fast_atof(const char *floatAsString, const char **out=0)
Convert a string to a floating point number.
#define IRRLICHT_API
Set FPU settings.
u32 strtoul10(const char *in, const char **out=0)
Convert a simple string of base 10 digits into an unsigned 32 bit integer.
IRRLICHT_API irr::core::stringc LOCALE_DECIMAL_POINTS
Selection of characters which count as decimal point in fast_atof.
u32 strtoul16(const char *in, const char **out=0)
Convert a simple string of base 16 digits into an unsigned 32 bit integer.
signed int s32
32 bit signed variable.
s32 strtol10(const char *in, const char **out=0)
Convert a simple string of base 10 digits into a signed 32 bit integer.
u32 ctoul16(char in)
Convert a hex-encoded character to an unsigned integer.
const char * fast_atof_move(const char *in, f32 &result)
Provides a fast function for converting a string into a float.
f32 strtof10(const char *in, const char **out=0)
Converts a sequence of digits into a whole positive floating point value.
float f32
32 bit floating point variable.
Everything in the Irrlicht Engine can be found in this namespace.
unsigned int u32
32 bit unsigned variable.
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.
const float fast_atof_table[17]
s32 findFirst(T c) const
finds first occurrence of character in string
u32 strtoul8(const char *in, const char **out=0)
Convert a simple string of base 8 digits into an unsigned 32 bit integer.