diff options
author | Caolán McNamara <caolanm@redhat.com> | 2010-10-06 09:18:56 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2010-10-06 11:47:54 +0100 |
commit | b145ae8acad116c87cbcfbc467130adb872553c0 (patch) | |
tree | 0e9830cb263d3c63fe33f807bedffa12e2a09987 /sax/source | |
parent | 41e955d4736b3a6cac08ea4d68f49b19c9df252b (diff) |
use rtl::ByteSequence instead of Sequence
For trivial pre-main sequences use rtl::ByteSequence instead of uno::Sequence<
sal_Int8 >, see #i113054#. Advantages are its slightly faster, but more
importantly uno::Sequence needs the cppu infrastructure to be working during
destruction, and global uno::Sequences cause difficulties on shutdown, because
their lifecycle is difficult to control and ensure that they die *before* the
cppu infrastructure
Diffstat (limited to 'sax/source')
-rw-r--r-- | sax/source/tools/fastserializer.cxx | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx index d88e3140f956..97a05c36c126 100644 --- a/sax/source/tools/fastserializer.cxx +++ b/sax/source/tools/fastserializer.cxx @@ -27,6 +27,7 @@ #include "fastserializer.hxx" #include <rtl/ustrbuf.hxx> +#include <rtl/byteseq.hxx> #include <com/sun/star/xml/Attribute.hpp> #include <com/sun/star/xml/FastAttribute.hpp> @@ -45,6 +46,7 @@ using ::rtl::OUStringToOString; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::RuntimeException; using ::com::sun::star::uno::Sequence; +using ::com::sun::star::uno::toUnoSequence; using ::com::sun::star::xml::FastAttribute; using ::com::sun::star::xml::Attribute; using ::com::sun::star::xml::sax::SAXException; @@ -56,15 +58,15 @@ using ::com::sun::star::io::NotConnectedException; using ::com::sun::star::io::IOException; using ::com::sun::star::io::BufferSizeExceededException; -static Sequence< sal_Int8 > aClosingBracket((sal_Int8 *)">", 1); -static Sequence< sal_Int8 > aSlashAndClosingBracket((sal_Int8 *)"/>", 2); -static Sequence< sal_Int8 > aColon((sal_Int8 *)":", 1); -static Sequence< sal_Int8 > aOpeningBracket((sal_Int8 *)"<", 1); -static Sequence< sal_Int8 > aOpeningBracketAndSlash((sal_Int8 *)"</", 2); -static Sequence< sal_Int8 > aQuote((sal_Int8 *)"\"", 1); -static Sequence< sal_Int8 > aEqualSignAndQuote((sal_Int8 *)"=\"", 2); -static Sequence< sal_Int8 > aSpace((sal_Int8 *)" ", 1); -static Sequence< sal_Int8 > aXmlHeader((sal_Int8*) "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", 56); +static rtl::ByteSequence aClosingBracket((const sal_Int8 *)">", 1); +static rtl::ByteSequence aSlashAndClosingBracket((const sal_Int8 *)"/>", 2); +static rtl::ByteSequence aColon((const sal_Int8 *)":", 1); +static rtl::ByteSequence aOpeningBracket((const sal_Int8 *)"<", 1); +static rtl::ByteSequence aOpeningBracketAndSlash((const sal_Int8 *)"</", 2); +static rtl::ByteSequence aQuote((const sal_Int8 *)"\"", 1); +static rtl::ByteSequence aEqualSignAndQuote((const sal_Int8 *)"=\"", 2); +static rtl::ByteSequence aSpace((const sal_Int8 *)" ", 1); +static rtl::ByteSequence aXmlHeader((const sal_Int8*) "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", 56); #define HAS_NAMESPACE(x) ((x & 0xffff0000) != 0) #define NAMESPACE(x) (x >> 16) @@ -78,7 +80,7 @@ namespace sax_fastparser { { if (!mxOutputStream.is()) return; - writeBytes(aXmlHeader); + writeBytes(toUnoSequence(aXmlHeader)); } OUString FastSaxSerializer::escapeXml( const OUString& s ) @@ -120,7 +122,7 @@ namespace sax_fastparser { { if( HAS_NAMESPACE( nElement ) ) { writeBytes(mxFastTokenHandler->getUTF8Identifier(NAMESPACE(nElement))); - writeBytes(aColon); + writeBytes(toUnoSequence(aColon)); writeBytes(mxFastTokenHandler->getUTF8Identifier(TOKEN(nElement))); } else writeBytes(mxFastTokenHandler->getUTF8Identifier(nElement)); @@ -132,12 +134,12 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracket); + writeBytes(toUnoSequence(aOpeningBracket)); writeId(Element); writeFastAttributeList(Attribs); - writeBytes(aClosingBracket); + writeBytes(toUnoSequence(aClosingBracket)); } void SAL_CALL FastSaxSerializer::startUnknownElement( const OUString& Namespace, const OUString& Name, const Reference< XFastAttributeList >& Attribs ) @@ -146,19 +148,19 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracket); + writeBytes(toUnoSequence(aOpeningBracket)); if (Namespace.getLength()) { write(Namespace); - writeBytes(aColon); + writeBytes(toUnoSequence(aColon)); } write(Name); writeFastAttributeList(Attribs); - writeBytes(aClosingBracket); + writeBytes(toUnoSequence(aClosingBracket)); } void SAL_CALL FastSaxSerializer::endFastElement( ::sal_Int32 Element ) @@ -167,11 +169,11 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracketAndSlash); + writeBytes(toUnoSequence(aOpeningBracketAndSlash)); writeId(Element); - writeBytes(aClosingBracket); + writeBytes(toUnoSequence(aClosingBracket)); } void SAL_CALL FastSaxSerializer::endUnknownElement( const OUString& Namespace, const OUString& Name ) @@ -180,17 +182,17 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracketAndSlash); + writeBytes(toUnoSequence(aOpeningBracketAndSlash)); if (Namespace.getLength()) { write(Namespace); - writeBytes(aColon); + writeBytes(toUnoSequence(aColon)); } write(Name); - writeBytes(aClosingBracket); + writeBytes(toUnoSequence(aClosingBracket)); } void SAL_CALL FastSaxSerializer::singleFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) @@ -199,12 +201,12 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracket); + writeBytes(toUnoSequence(aOpeningBracket)); writeId(Element); writeFastAttributeList(Attribs); - writeBytes(aSlashAndClosingBracket); + writeBytes(toUnoSequence(aSlashAndClosingBracket)); } void SAL_CALL FastSaxSerializer::singleUnknownElement( const OUString& Namespace, const OUString& Name, const Reference< XFastAttributeList >& Attribs ) @@ -213,19 +215,19 @@ namespace sax_fastparser { if (!mxOutputStream.is()) return; - writeBytes(aOpeningBracket); + writeBytes(toUnoSequence(aOpeningBracket)); if (Namespace.getLength()) { write(Namespace); - writeBytes(aColon); + writeBytes(toUnoSequence(aColon)); } write(Name); writeFastAttributeList(Attribs); - writeBytes(aSlashAndClosingBracket); + writeBytes(toUnoSequence(aSlashAndClosingBracket)); } void SAL_CALL FastSaxSerializer::characters( const OUString& aChars ) @@ -255,12 +257,12 @@ namespace sax_fastparser { sal_Int32 nAttrLength = aAttrSeq.getLength(); for (sal_Int32 i = 0; i < nAttrLength; i++) { - writeBytes(aSpace); + writeBytes(toUnoSequence(aSpace)); write(pAttr[i].Name); - writeBytes(aEqualSignAndQuote); + writeBytes(toUnoSequence(aEqualSignAndQuote)); write(escapeXml(pAttr[i].Value)); - writeBytes(aQuote); + writeBytes(toUnoSequence(aQuote)); } Sequence< FastAttribute > aFastAttrSeq = Attribs->getFastAttributes(); @@ -268,16 +270,16 @@ namespace sax_fastparser { sal_Int32 nFastAttrLength = aFastAttrSeq.getLength(); for (sal_Int32 j = 0; j < nFastAttrLength; j++) { - writeBytes(aSpace); + writeBytes(toUnoSequence(aSpace)); sal_Int32 nToken = pFastAttr[j].Token; writeId(nToken); - writeBytes(aEqualSignAndQuote); + writeBytes(toUnoSequence(aEqualSignAndQuote)); write(escapeXml(Attribs->getValue(pFastAttr[j].Token))); - writeBytes(aQuote); + writeBytes(toUnoSequence(aQuote)); } } |