Introduce str and c_str into the format namespace.

This commit is contained in:
Victor Zverovich
2012-12-18 14:38:03 -08:00
parent 2e6d79a523
commit 2ba1573ac3
2 changed files with 16 additions and 7 deletions

View File

@@ -380,20 +380,24 @@ class ArgInserter {
return Proxy(f);
}
std::string str() const { return Format()->str(); }
// Performs formatting and returns a std::string with the output.
friend std::string str(Proxy p) {
return Format(p)->str();
}
// Performs formatting and returns a C string with the output.
friend const char *c_str(Proxy p) {
return Format(p)->c_str();
}
// Performs formatting and returns a std::string with the output.
friend std::string str(Proxy p) {
return Format(p)->str();
}
};
const char *c_str(ArgInserter::Proxy p);
std::string str(ArgInserter::Proxy p);
}
using format::internal::c_str;
using format::internal::str;
// ArgFormatter provides access to the format buffer within custom
// Format functions. It is not desirable to pass Formatter to these
// functions because Formatter::operator() is not reentrant and

View File

@@ -729,6 +729,11 @@ TEST(FormatterTest, ArgInserter) {
EXPECT_STREQ("12", c_str(format("{0}") << 2));
}
TEST(FormatterTest, StrNamespace) {
fmt::str(Format(""));
fmt::c_str(Format(""));
}
struct CountCalls {
int &num_calls;
@@ -791,7 +796,7 @@ TEST(TempFormatterTest, Example) {
template <typename T>
std::string str(const T &value) {
return (fmt::Format("{0}") << value).str();
return fmt::str(fmt::Format("{0}") << value);
}
TEST(StrTest, Convert) {