Add support for int64_t in FormatInt.

This commit is contained in:
Victor Zverovich 2014-01-30 08:02:06 -08:00
parent c3f5dce8d5
commit bfedba5a0a
2 changed files with 10 additions and 4 deletions

View File

@ -1411,6 +1411,9 @@ TEST(FormatterTest, Examples) {
TEST(FormatIntTest, FormatInt) { TEST(FormatIntTest, FormatInt) {
EXPECT_EQ("42", fmt::FormatInt(42).str()); EXPECT_EQ("42", fmt::FormatInt(42).str());
EXPECT_EQ("-42", fmt::FormatInt(-42).str()); EXPECT_EQ("-42", fmt::FormatInt(-42).str());
std::ostringstream os;
os << std::numeric_limits<int64_t>::max();
EXPECT_EQ(os.str(), fmt::FormatInt(std::numeric_limits<int64_t>::max()).str());
} }
template <typename T> template <typename T>

View File

@ -1292,10 +1292,9 @@ class FormatInt {
*--buffer_end = internal::DIGITS[index]; *--buffer_end = internal::DIGITS[index];
return buffer_end; return buffer_end;
} }
public: void FormatSigned(int64_t value) {
explicit FormatInt(int value) { uint64_t abs_value = value;
unsigned abs_value = value;
bool negative = value < 0; bool negative = value < 0;
if (negative) if (negative)
abs_value = 0 - value; abs_value = 0 - value;
@ -1303,6 +1302,10 @@ class FormatInt {
if (negative) if (negative)
*--str_ = '-'; *--str_ = '-';
} }
public:
explicit FormatInt(int value) { FormatSigned(value); }
explicit FormatInt(int64_t value) { FormatSigned(value); }
explicit FormatInt(unsigned value) : str_(FormatDecimal(value)) {} explicit FormatInt(unsigned value) : str_(FormatDecimal(value)) {}
explicit FormatInt(uint64_t value) : str_(FormatDecimal(value)) {} explicit FormatInt(uint64_t value) : str_(FormatDecimal(value)) {}