mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Use StringRef in XmLWriter when the text is not stored
This commit is contained in:
		| @@ -267,18 +267,19 @@ namespace { | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     XmlWriter& XmlWriter::writeAttribute( std::string const& name, std::string const& attribute ) { | ||||
|     XmlWriter& XmlWriter::writeAttribute( StringRef name, | ||||
|                                           StringRef attribute ) { | ||||
|         if( !name.empty() && !attribute.empty() ) | ||||
|             m_os << ' ' << name << "=\"" << XmlEncode( attribute, XmlEncode::ForAttributes ) << '"'; | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     XmlWriter& XmlWriter::writeAttribute( std::string const& name, bool attribute ) { | ||||
|     XmlWriter& XmlWriter::writeAttribute( StringRef name, bool attribute ) { | ||||
|         m_os << ' ' << name << "=\"" << ( attribute ? "true" : "false" ) << '"'; | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     XmlWriter& XmlWriter::writeText( std::string const& text, XmlFormatting fmt) { | ||||
|     XmlWriter& XmlWriter::writeText( StringRef text, XmlFormatting fmt ) { | ||||
|         if( !text.empty() ){ | ||||
|             bool tagWasOpen = m_tagIsOpen; | ||||
|             ensureTagClosed(); | ||||
| @@ -291,7 +292,7 @@ namespace { | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     XmlWriter& XmlWriter::writeComment( std::string const& text, XmlFormatting fmt) { | ||||
|     XmlWriter& XmlWriter::writeComment( StringRef text, XmlFormatting fmt ) { | ||||
|         ensureTagClosed(); | ||||
|         if (shouldIndent(fmt)) { | ||||
|             m_os << m_indent; | ||||
| @@ -301,7 +302,7 @@ namespace { | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     void XmlWriter::writeStylesheetRef( std::string const& url ) { | ||||
|     void XmlWriter::writeStylesheetRef( StringRef url ) { | ||||
|         m_os << R"(<?xml-stylesheet type="text/xsl" href=")" << url << R"("?>)" << '\n'; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -81,22 +81,32 @@ namespace Catch { | ||||
|  | ||||
|         XmlWriter& endElement(XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent); | ||||
|  | ||||
|         XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ); | ||||
|         //! The attribute content is XML-encoded | ||||
|         XmlWriter& writeAttribute( StringRef name, StringRef attribute ); | ||||
|  | ||||
|         XmlWriter& writeAttribute( std::string const& name, bool attribute ); | ||||
|         //! Writes the attribute as "true/false" | ||||
|         XmlWriter& writeAttribute( StringRef name, bool attribute ); | ||||
|  | ||||
|         //! The attribute value must provide op<<(ostream&, T). Resulting | ||||
|         //! serialization is XML-encoded | ||||
|         template<typename T> | ||||
|         XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { | ||||
|         XmlWriter& writeAttribute( StringRef name, T const& attribute ) { | ||||
|             ReusableStringStream rss; | ||||
|             rss << attribute; | ||||
|             return writeAttribute( name, rss.str() ); | ||||
|             // We need to explicitly convert the string to StringRef to | ||||
|             // guarantee the right overload is picked | ||||
|             return writeAttribute( name, StringRef(rss.str()) ); | ||||
|         } | ||||
|  | ||||
|         XmlWriter& writeText( std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent); | ||||
|         XmlWriter& writeText( StringRef text, | ||||
|                               XmlFormatting fmt = XmlFormatting::Newline | | ||||
|                                                   XmlFormatting::Indent ); | ||||
|  | ||||
|         XmlWriter& writeComment(std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent); | ||||
|         XmlWriter& writeComment( StringRef text, | ||||
|                                  XmlFormatting fmt = XmlFormatting::Newline | | ||||
|                                                      XmlFormatting::Indent ); | ||||
|  | ||||
|         void writeStylesheetRef( std::string const& url ); | ||||
|         void writeStylesheetRef( StringRef url ); | ||||
|  | ||||
|         XmlWriter& writeBlankLine(); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský