|
@@ -115,11 +115,22 @@ namespace bx
|
|
|
{
|
|
{
|
|
|
struct Param
|
|
struct Param
|
|
|
{
|
|
{
|
|
|
|
|
+ Param()
|
|
|
|
|
+ : width(0)
|
|
|
|
|
+ , base(10)
|
|
|
|
|
+ , prec(6)
|
|
|
|
|
+ , fill(' ')
|
|
|
|
|
+ , left(false)
|
|
|
|
|
+ , upper(false)
|
|
|
|
|
+ {
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
int32_t width;
|
|
int32_t width;
|
|
|
uint32_t base;
|
|
uint32_t base;
|
|
|
uint32_t prec;
|
|
uint32_t prec;
|
|
|
char fill;
|
|
char fill;
|
|
|
bool left;
|
|
bool left;
|
|
|
|
|
+ bool upper;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static int32_t write(WriterI* _writer, const char* _str, int32_t _len, const Param& _param, Error* _err)
|
|
static int32_t write(WriterI* _writer, const char* _str, int32_t _len, const Param& _param, Error* _err)
|
|
@@ -133,7 +144,17 @@ namespace bx
|
|
|
size += writeRep(_writer, _param.fill, padding, _err);
|
|
size += writeRep(_writer, _param.fill, padding, _err);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- size += write(_writer, _str, len, _err);
|
|
|
|
|
|
|
+ if (_param.upper)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int32_t ii = 0; ii < len; ++ii)
|
|
|
|
|
+ {
|
|
|
|
|
+ size += write(_writer, toUpper(_str[ii]), _err);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ size += write(_writer, _str, len, _err);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (_param.left)
|
|
if (_param.left)
|
|
|
{
|
|
{
|
|
@@ -143,6 +164,11 @@ namespace bx
|
|
|
return size;
|
|
return size;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ static int32_t write(WriterI* _writer, char _ch, const Param& _param, Error* _err)
|
|
|
|
|
+ {
|
|
|
|
|
+ return write(_writer, &_ch, 1, _param, _err);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
static int32_t write(WriterI* _writer, const char* _str, const Param& _param, Error* _err)
|
|
static int32_t write(WriterI* _writer, const char* _str, const Param& _param, Error* _err)
|
|
|
{
|
|
{
|
|
|
return write(_writer, _str, INT32_MAX, _param, _err);
|
|
return write(_writer, _str, INT32_MAX, _param, _err);
|
|
@@ -235,11 +261,6 @@ namespace bx
|
|
|
read(&reader, ch);
|
|
read(&reader, ch);
|
|
|
|
|
|
|
|
Param param;
|
|
Param param;
|
|
|
- param.base = 10;
|
|
|
|
|
- param.prec = 6;
|
|
|
|
|
- param.left = false;
|
|
|
|
|
- param.fill = ' ';
|
|
|
|
|
- param.width = 0;
|
|
|
|
|
|
|
|
|
|
while (' ' == ch
|
|
while (' ' == ch
|
|
|
|| '-' == ch
|
|
|| '-' == ch
|
|
@@ -304,13 +325,14 @@ namespace bx
|
|
|
switch (toLower(ch) )
|
|
switch (toLower(ch) )
|
|
|
{
|
|
{
|
|
|
case 'c':
|
|
case 'c':
|
|
|
- size += write(_writer, char(va_arg(_argList, int32_t) ), _err);
|
|
|
|
|
|
|
+ size += write(_writer, char(va_arg(_argList, int32_t) ), param, _err);
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case 's':
|
|
case 's':
|
|
|
size += write(_writer, va_arg(_argList, const char*), param, _err);
|
|
size += write(_writer, va_arg(_argList, const char*), param, _err);
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
|
|
+ case 'i':
|
|
|
case 'd':
|
|
case 'd':
|
|
|
param.base = 10;
|
|
param.base = 10;
|
|
|
size += write(_writer, va_arg(_argList, int32_t), param, _err);
|
|
size += write(_writer, va_arg(_argList, int32_t), param, _err);
|
|
@@ -325,7 +347,8 @@ namespace bx
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case 'x':
|
|
case 'x':
|
|
|
- param.base = 16;
|
|
|
|
|
|
|
+ param.base = 16;
|
|
|
|
|
+ param.upper = isUpper(ch);
|
|
|
size += write(_writer, va_arg(_argList, uint32_t), param, _err);
|
|
size += write(_writer, va_arg(_argList, uint32_t), param, _err);
|
|
|
break;
|
|
break;
|
|
|
|
|
|