Switching code to use StringView.

This commit is contained in:
Branimir Karadžić
2017-09-30 21:40:50 -07:00
parent 4e530af94c
commit 3883f52cb8
2 changed files with 18 additions and 15 deletions

View File

@@ -300,16 +300,16 @@ namespace bx
int32_t toString(char* _out, int32_t _max, uint64_t _value, uint32_t _base = 10);
///
bool fromString(float* _out, const char* _str);
bool fromString(float* _out, const StringView& _str);
///
bool fromString(double* _out, const char* _str);
bool fromString(double* _out, const StringView& _str);
///
bool fromString(int32_t* _out, const char* _str);
bool fromString(int32_t* _out, const StringView& _str);
///
bool fromString(uint32_t* _out, const char* _str);
bool fromString(uint32_t* _out, const StringView& _str);
} // namespace bx

View File

@@ -703,7 +703,7 @@ namespace bx
#define PARSER_PINF 3 // number is higher than +HUGE_VAL
#define PARSER_MINF 4 // number is lower than -HUGE_VAL
static int parser(const char* _s, PrepNumber* _pn)
static int parser(const char* _s, const char* _term, PrepNumber* _pn)
{
int state = FSM_A;
int digx = 0;
@@ -712,7 +712,7 @@ namespace bx
int expneg = 0;
int32_t expexp = 0;
while (state != FSM_STOP)
while (state != FSM_STOP && _s != _term)
{
switch (state)
{
@@ -1034,7 +1034,7 @@ namespace bx
return hd.d;
}
bool fromString(float* _out, const char* _str)
bool fromString(float* _out, const StringView& _str)
{
double dbl;
bool result = fromString(&dbl, _str);
@@ -1042,7 +1042,7 @@ namespace bx
return result;
}
bool fromString(double* _out, const char* _str)
bool fromString(double* _out, const StringView& _str)
{
PrepNumber pn;
pn.mantissa = 0;
@@ -1052,7 +1052,7 @@ namespace bx
HexDouble hd;
hd.u = DOUBLE_PLUS_ZERO;
switch (parser(_str, &pn) )
switch (parser(_str.getPtr(), _str.getTerm(), &pn) )
{
case PARSER_OK:
*_out = converter(&pn);
@@ -1081,10 +1081,13 @@ namespace bx
return true;
}
bool fromString(int32_t* _out, const char* _str)
bool fromString(int32_t* _out, const StringView& _str)
{
_str = strws(_str);
char ch = *_str++;
const char* str = _str.getPtr();
const char* term = _str.getTerm();
str = strws(str);
char ch = *str++;
bool neg = false;
switch (ch)
{
@@ -1093,13 +1096,13 @@ namespace bx
break;
default:
--_str;
--str;
break;
}
int32_t result = 0;
for (ch = *_str++; isNumeric(ch); ch = *_str++)
for (ch = *str++; isNumeric(ch) && str != term+1; ch = *str++)
{
result = 10*result - (ch - '0');
}
@@ -1109,7 +1112,7 @@ namespace bx
return true;
}
bool fromString(uint32_t* _out, const char* _str)
bool fromString(uint32_t* _out, const StringView& _str)
{
fromString( (int32_t*)_out, _str);
return true;