From eadd2ee4210f4650cc081533ac3a828c57d93e1b Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sat, 15 Feb 2014 09:39:06 -0800 Subject: [PATCH] Add FormatInt::data() and document members. --- format-test.cc | 5 +++++ format.h | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/format-test.cc b/format-test.cc index 6158b9d9..e0d23dfe 100644 --- a/format-test.cc +++ b/format-test.cc @@ -1408,6 +1408,11 @@ TEST(FormatterTest, Examples) { ReportError("File not found: {0}") << path; } +TEST(FormatIntTest, Data) { + fmt::FormatInt format_int(42); + EXPECT_EQ("42", std::string(format_int.data(), format_int.size())); +} + TEST(FormatIntTest, FormatInt) { EXPECT_EQ("42", fmt::FormatInt(42).str()); EXPECT_EQ(2, fmt::FormatInt(42).size()); diff --git a/format.h b/format.h index c4be2b3e..b6cbe4fb 100644 --- a/format.h +++ b/format.h @@ -1330,12 +1330,30 @@ class FormatInt { explicit FormatInt(unsigned long value) : str_(FormatDecimal(value)) {} explicit FormatInt(unsigned long long value) : str_(FormatDecimal(value)) {} + /** + Returns the number of characters written to the output buffer. + */ + std::size_t size() const { return buffer_ - str_ + BUFFER_SIZE - 1; } + + /** + Returns a pointer to the output buffer content. No terminating null + character is appended. + */ + const char *data() const { return str_; } + + /** + Returns a pointer to the output buffer content with terminating null + character appended. + */ const char *c_str() const { buffer_[BUFFER_SIZE - 1] = '\0'; return str_; } + + /** + Returns the content of the output buffer as an `std::string`. + */ std::string str() const { return std::string(str_, size()); } - std::size_t size() const { return buffer_ - str_ + BUFFER_SIZE - 1; } }; // Formats a decimal integer value writing into buffer and returns