|
|
@@ -472,7 +472,7 @@ namespace bx
|
|
|
}
|
|
|
|
|
|
template<typename Ty>
|
|
|
- int32_t toStringSigned(char* _dst, int32_t _max, Ty _value, uint32_t _base)
|
|
|
+ int32_t toStringSigned(char* _dst, int32_t _max, Ty _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
if (_base == 10
|
|
|
&& _value < 0)
|
|
|
@@ -483,10 +483,11 @@ namespace bx
|
|
|
}
|
|
|
|
|
|
_max = toString(_dst + 1
|
|
|
- , _max - 1
|
|
|
- , typename std::make_unsigned<Ty>::type(-_value)
|
|
|
- , _base
|
|
|
- );
|
|
|
+ , _max - 1
|
|
|
+ , typename std::make_unsigned<Ty>::type(-_value)
|
|
|
+ , _base
|
|
|
+ , _separator
|
|
|
+ );
|
|
|
if (_max == 0)
|
|
|
{
|
|
|
return 0;
|
|
|
@@ -497,24 +498,25 @@ namespace bx
|
|
|
}
|
|
|
|
|
|
return toString(_dst
|
|
|
- , _max
|
|
|
- , typename std::make_unsigned<Ty>::type(_value)
|
|
|
- , _base
|
|
|
- );
|
|
|
+ , _max
|
|
|
+ , typename std::make_unsigned<Ty>::type(_value)
|
|
|
+ , _base
|
|
|
+ , _separator
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
- int32_t toString(char* _dst, int32_t _max, int32_t _value, uint32_t _base)
|
|
|
+ int32_t toString(char* _dst, int32_t _max, int32_t _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
- return toStringSigned(_dst, _max, _value, _base);
|
|
|
+ return toStringSigned(_dst, _max, _value, _base, _separator);
|
|
|
}
|
|
|
|
|
|
- int32_t toString(char* _dst, int32_t _max, int64_t _value, uint32_t _base)
|
|
|
+ int32_t toString(char* _dst, int32_t _max, int64_t _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
- return toStringSigned(_dst, _max, _value, _base);
|
|
|
+ return toStringSigned(_dst, _max, _value, _base, _separator);
|
|
|
}
|
|
|
|
|
|
template<typename Ty>
|
|
|
- int32_t toStringUnsigned(char* _dst, int32_t _max, Ty _value, uint32_t _base)
|
|
|
+ int32_t toStringUnsigned(char* _dst, int32_t _max, Ty _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
char data[32];
|
|
|
int32_t len = 0;
|
|
|
@@ -525,6 +527,8 @@ namespace bx
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ uint32_t count = 1;
|
|
|
+
|
|
|
do
|
|
|
{
|
|
|
const Ty rem = _value % _base;
|
|
|
@@ -538,7 +542,16 @@ namespace bx
|
|
|
data[len++] = char('a' + rem - 10);
|
|
|
}
|
|
|
|
|
|
- } while (_value != 0);
|
|
|
+ if ('\0' != _separator
|
|
|
+ && 0 == count%3
|
|
|
+ && 0 != _value)
|
|
|
+ {
|
|
|
+ data[len++] = _separator;
|
|
|
+ }
|
|
|
+
|
|
|
+ ++count;
|
|
|
+ }
|
|
|
+ while (0 != _value);
|
|
|
|
|
|
if (_max < len + 1)
|
|
|
{
|
|
|
@@ -552,14 +565,14 @@ namespace bx
|
|
|
return int32_t(len);
|
|
|
}
|
|
|
|
|
|
- int32_t toString(char* _dst, int32_t _max, uint32_t _value, uint32_t _base)
|
|
|
+ int32_t toString(char* _dst, int32_t _max, uint32_t _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
- return toStringUnsigned(_dst, _max, _value, _base);
|
|
|
+ return toStringUnsigned(_dst, _max, _value, _base, _separator);
|
|
|
}
|
|
|
|
|
|
- int32_t toString(char* _dst, int32_t _max, uint64_t _value, uint32_t _base)
|
|
|
+ int32_t toString(char* _dst, int32_t _max, uint64_t _value, uint32_t _base, char _separator)
|
|
|
{
|
|
|
- return toStringUnsigned(_dst, _max, _value, _base);
|
|
|
+ return toStringUnsigned(_dst, _max, _value, _base, _separator);
|
|
|
}
|
|
|
|
|
|
/*
|