forked from catchorg/Catch2
Improve XmlWriter::writeAttribute overload set for string-like types
Previously, string literals and `std::string`s would match the template variant, which would serialize them into a stream and then call the `StringRef` overload for resulting string. This caused bunch of codebloat and unnecessary pessimization for common usage.
This commit is contained in:
@@ -217,6 +217,14 @@ namespace {
|
||||
return *this;
|
||||
}
|
||||
|
||||
XmlWriter::ScopedElement&
|
||||
XmlWriter::ScopedElement::writeAttribute( StringRef name,
|
||||
StringRef attribute ) {
|
||||
m_writer->writeAttribute( name, attribute );
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
XmlWriter::XmlWriter( std::ostream& os ) : m_os( os )
|
||||
{
|
||||
writeDeclaration();
|
||||
@@ -276,7 +284,13 @@ namespace {
|
||||
}
|
||||
|
||||
XmlWriter& XmlWriter::writeAttribute( StringRef name, bool attribute ) {
|
||||
m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"';
|
||||
writeAttribute(name, (attribute ? "true"_sr : "false"_sr));
|
||||
return *this;
|
||||
}
|
||||
|
||||
XmlWriter& XmlWriter::writeAttribute( StringRef name,
|
||||
char const* attribute ) {
|
||||
writeAttribute( name, StringRef( attribute ) );
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user