mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-18 04:53:06 +01:00
Added commified output when converting from integer to string.
This commit is contained in:
51
src/dtoa.cpp
51
src/dtoa.cpp
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user