tools/source/xml/XmlWriter.cxx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
New commits: commit 3e38fdacba022a9d8001a0f856ef33b4d14857cb Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Mon Apr 15 08:19:25 2024 +0100 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Thu Apr 18 08:18:21 2024 +0200 Optimize a bit, to avoid a copy of the vector Change-Id: I747662e346151e2e055cb803278c2a6c7709f273 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166166 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/tools/source/xml/XmlWriter.cxx b/tools/source/xml/XmlWriter.cxx index 8bbd7951a3b8..afc6dd9b73be 100644 --- a/tools/source/xml/XmlWriter.cxx +++ b/tools/source/xml/XmlWriter.cxx @@ -29,6 +29,15 @@ int funcCloseCallback(void* pContext) return 0; // 0 or -1 in case of error } +template <typename T> +requires(sizeof(T) == sizeof(char)) void attributeBase64_impl(xmlTextWriterPtr writer, + const char* name, const T* value, + int size) +{ + (void)xmlTextWriterStartAttribute(writer, BAD_CAST(name)); + (void)xmlTextWriterWriteBase64(writer, reinterpret_cast<const char*>(value), 0, size); + (void)xmlTextWriterEndAttribute(writer); +} } // end anonymous namespace struct XmlWriterImpl @@ -103,16 +112,12 @@ void XmlWriter::endElement() { (void)xmlTextWriterEndElement(mpImpl->mpWriter); void XmlWriter::attributeBase64(const char* pName, std::vector<sal_uInt8> const& rValueInBytes) { - std::vector<char> aSignedBytes(rValueInBytes.begin(), rValueInBytes.end()); - attributeBase64(pName, aSignedBytes); + attributeBase64_impl(mpImpl->mpWriter, pName, rValueInBytes.data(), rValueInBytes.size()); } void XmlWriter::attributeBase64(const char* pName, std::vector<char> const& rValueInBytes) { - xmlChar* xmlName = BAD_CAST(pName); - (void)xmlTextWriterStartAttribute(mpImpl->mpWriter, xmlName); - (void)xmlTextWriterWriteBase64(mpImpl->mpWriter, rValueInBytes.data(), 0, rValueInBytes.size()); - (void)xmlTextWriterEndAttribute(mpImpl->mpWriter); + attributeBase64_impl(mpImpl->mpWriter, pName, rValueInBytes.data(), rValueInBytes.size()); } void XmlWriter::attribute(const char* name, const OString& value)