Commit 56f12b73 authored by Victor Zverovich's avatar Victor Zverovich

Add support for long long and more tests for unsigned long long....

Add support for long long and more tests for unsigned long long. https://github.com/vitaut/format/issues/9
parent a4e72b4d
......@@ -537,6 +537,11 @@ void fmt::BasicFormatter<Char>::DoFormat() {
case ULONG:
value = precision_arg.ulong_value;
break;
case LONG_LONG:
if (precision_arg.long_long_value < 0)
ReportError(s, "negative precision in format");
value = precision_arg.long_long_value;
break;
case ULONG_LONG:
value = precision_arg.ulong_long_value;
break;
......@@ -581,6 +586,9 @@ void fmt::BasicFormatter<Char>::DoFormat() {
case ULONG:
writer.FormatInt(arg.ulong_value, spec);
break;
case LONG_LONG:
writer.FormatInt(arg.long_long_value, spec);
break;
case ULONG_LONG:
writer.FormatInt(arg.ulong_long_value, spec);
break;
......
......@@ -444,6 +444,7 @@ DEFINE_INT_FORMATTERS(int)
DEFINE_INT_FORMATTERS(long)
DEFINE_INT_FORMATTERS(unsigned)
DEFINE_INT_FORMATTERS(unsigned long)
DEFINE_INT_FORMATTERS(long long)
DEFINE_INT_FORMATTERS(unsigned long long)
template <typename Char>
......@@ -812,7 +813,7 @@ class BasicFormatter {
enum Type {
// Numeric types should go first.
INT, UINT, LONG, ULONG, ULONG_LONG, DOUBLE, LONG_DOUBLE,
INT, UINT, LONG, ULONG, LONG_LONG, ULONG_LONG, DOUBLE, LONG_DOUBLE,
LAST_NUMERIC_TYPE = LONG_DOUBLE,
CHAR, STRING, WSTRING, POINTER, CUSTOM
};
......@@ -847,6 +848,7 @@ class BasicFormatter {
double double_value;
long long_value;
unsigned long ulong_value;
long long long_long_value;
unsigned long long ulong_long_value;
long double long_double_value;
const void *pointer_value;
......@@ -867,6 +869,8 @@ class BasicFormatter {
Arg(unsigned value) : type(UINT), uint_value(value), formatter(0) {}
Arg(long value) : type(LONG), long_value(value), formatter(0) {}
Arg(unsigned long value) : type(ULONG), ulong_value(value), formatter(0) {}
Arg(long long value)
: type(LONG_LONG), long_long_value(value), formatter(0) {}
Arg(unsigned long long value)
: type(ULONG_LONG), ulong_long_value(value), formatter(0) {}
Arg(float value) : type(DOUBLE), double_value(value), formatter(0) {}
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment