Formatter::~Formatter() { }
-Formatter *Formatter::create(const std::string &type,
- const std::string& default_type,
- const std::string& fallback)
+Formatter *Formatter::create(boost::string_view type,
+ boost::string_view default_type,
+ boost::string_view fallback)
{
- std::string mytype = type;
+ std::string mytype(type);
if (mytype == "")
- mytype = default_type;
+ mytype = std::string(default_type);
if (mytype == "json")
return new JSONFormatter(false);
m_ss << " ";
}
-void JSONFormatter::print_quoted_string(const std::string& s)
+void JSONFormatter::print_quoted_string(boost::string_view s)
{
- int len = escape_json_attr_len(s.c_str(), s.size());
+ int len = escape_json_attr_len(s.data(), s.size());
char escaped[len];
- escape_json_attr(s.c_str(), s.size(), escaped);
+ escape_json_attr(s.data(), s.size(), escaped);
m_ss << '\"' << escaped << '\"';
}
m_ss << foo;
}
-void JSONFormatter::dump_string(const char *name, const std::string& s)
+void JSONFormatter::dump_string(const char *name, boost::string_view s)
{
print_name(name);
print_quoted_string(s);
m_ss << "\n";
}
-void XMLFormatter::dump_string(const char *name, const std::string& s)
+void XMLFormatter::dump_string(const char *name, boost::string_view s)
{
std::string e(name);
std::transform(e.begin(), e.end(), e.begin(),
[this](char c) { return this->to_lower_underscore(c); });
print_spaces();
- m_ss << "<" << e << ">" << escape_xml_str(s.c_str()) << "</" << e << ">";
+ m_ss << "<" << e << ">" << escape_xml_str(s.data()) << "</" << e << ">";
if (m_pretty)
m_ss << "\n";
}
-void XMLFormatter::dump_string_with_attrs(const char *name, const std::string& s, const FormatterAttrs& attrs)
+void XMLFormatter::dump_string_with_attrs(const char *name, boost::string_view s, const FormatterAttrs& attrs)
{
std::string e(name);
std::transform(e.begin(), e.end(), e.begin(),
std::string attrs_str;
get_attrs_str(&attrs, attrs_str);
print_spaces();
- m_ss << "<" << e << attrs_str << ">" << escape_xml_str(s.c_str()) << "</" << e << ">";
+ m_ss << "<" << e << attrs_str << ">" << escape_xml_str(s.data()) << "</" << e << ">";
if (m_pretty)
m_ss << "\n";
}
}
}
-std::string XMLFormatter::escape_xml_str(const char *str)
+std::string XMLFormatter::escape_xml_str(boost::string_view str)
{
- int len = escape_xml_attr_len(str);
+ size_t len = escape_xml_attr_len(str.data());
std::vector<char> escaped(len, '\0');
- escape_xml_attr(str, &escaped[0]);
+ escape_xml_attr(str.data(), &escaped[0]);
return std::string(&escaped[0]);
}
m_ss.str("");
}
-void TableFormatter::dump_string(const char *name, const std::string& s)
+void TableFormatter::dump_string(const char *name, boost::string_view s)
{
finish_pending_string();
size_t i = m_vec_index(name);
m_ss.str("");
}
-void TableFormatter::dump_string_with_attrs(const char *name, const std::string& s, const FormatterAttrs& attrs)
+void TableFormatter::dump_string_with_attrs(const char *name, boost::string_view s, const FormatterAttrs& attrs)
{
finish_pending_string();
size_t i = m_vec_index(name);