include/sax/fastattribs.hxx | 6 +- include/sax/fshelper.hxx | 5 -- sax/source/tools/fastattribs.cxx | 20 +++----- sax/source/tools/fastserializer.cxx | 84 ++++++++++++------------------------ sax/source/tools/fastserializer.hxx | 52 +++++++++------------- sax/source/tools/fshelper.cxx | 35 ++++++++------- 6 files changed, 82 insertions(+), 120 deletions(-)
New commits: commit d3fbcc1ef51c9f5c8ac1fead0bc4d894207e9b8b Author: Matúš Kukan <[email protected]> Date: Sun Sep 28 00:09:16 2014 +0200 FastSerializer: avoid some more OStrings Change-Id: I2d5dbe9adccdd231cc16a1f83a90a4adeb965c64 diff --git a/include/sax/fastattribs.hxx b/include/sax/fastattribs.hxx index 5255481..85a1218 100644 --- a/include/sax/fastattribs.hxx +++ b/include/sax/fastattribs.hxx @@ -87,6 +87,7 @@ public: void addUnknown( const OString& rName, const sal_Char* pValue ); const std::vector< sal_Int32 >& getFastAttributeTokens() const { return maAttributeTokens; } const char* getFastAttributeValue(size_t nIndex) const { return mpChunk + maAttributeValues[nIndex]; } + sal_Int32 AttributeValueLength(size_t i) const { return maAttributeValues[i + 1] - maAttributeValues[i] - 1; } // performance sensitive shortcuts to avoid allocation ... bool getAsInteger( sal_Int32 nToken, sal_Int32 &rInt); @@ -103,9 +104,6 @@ public: virtual ::com::sun::star::uno::Sequence< ::com::sun::star::xml::FastAttribute > SAL_CALL getFastAttributes() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; private: - inline sal_Int32 AttributeValueLength(sal_Int32 i); - -private: sal_Char *mpChunk; ///< buffer to store all attribute values - null terminated strings sal_Int32 mnChunkLength; ///< size of allocated memory for mpChunk // maAttributeValues stores pointers, relative to mpChunk, for each attribute value string diff --git a/sax/source/tools/fastattribs.cxx b/sax/source/tools/fastattribs.cxx index 67f3196..e2cbcc6 100644 --- a/sax/source/tools/fastattribs.cxx +++ b/sax/source/tools/fastattribs.cxx @@ -225,12 +225,6 @@ Sequence< FastAttribute > FastAttributeList::getFastAttributes( ) throw (Runtim return aSeq; } -sal_Int32 FastAttributeList::AttributeValueLength(sal_Int32 i) -{ - // Pointers to null terminated strings - return maAttributeValues[i + 1] - maAttributeValues[i] - 1; -} - sal_Int32 FastTokenHandlerBase::getTokenFromChars( const css::uno::Reference< css::xml::sax::XFastTokenHandler > &xTokenHandler, FastTokenHandlerBase *pTokenHandler, diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx index 3a8b770..d6c1a94 100644 --- a/sax/source/tools/fastserializer.cxx +++ b/sax/source/tools/fastserializer.cxx @@ -83,14 +83,20 @@ namespace sax_fastparser { void FastSaxSerializer::write( const OString& sOutput, bool bEscape ) { + write( sOutput.getStr(), sOutput.getLength(), bEscape ); + } + + void FastSaxSerializer::write( const char* pStr, sal_Int32 nLen, bool bEscape ) + { + if (nLen == 0) + nLen = strlen(pStr); + if (!bEscape) { - writeBytes( sOutput.getStr(), sOutput.getLength() ); + writeBytes( pStr, nLen ); return; } - const char* pStr = sOutput.getStr(); - sal_Int32 nLen = sOutput.getLength(); for (sal_Int32 i = 0; i < nLen; ++i) { char c = pStr[ i ]; @@ -222,7 +228,7 @@ namespace sax_fastparser { writeBytes(sEqualSignAndQuote, N_CHARS(sEqualSignAndQuote)); - write(pAttrList->getFastAttributeValue(j), true); + write(pAttrList->getFastAttributeValue(j), pAttrList->AttributeValueLength(j), true); writeBytes(sQuote, N_CHARS(sQuote)); } diff --git a/sax/source/tools/fastserializer.hxx b/sax/source/tools/fastserializer.hxx index 089348a..05db2c7 100644 --- a/sax/source/tools/fastserializer.hxx +++ b/sax/source/tools/fastserializer.hxx @@ -105,6 +105,7 @@ public: void write( const OUString& s, bool bEscape = false ); void write( const OString& s, bool bEscape = false ); + void write( const char* pStr, sal_Int32 nLen, bool bEscape = false ); public: /** From now on, don't write directly to the stream, but to top of a stack. diff --git a/sax/source/tools/fshelper.cxx b/sax/source/tools/fshelper.cxx index 30e5932..c6ac390 100644 --- a/sax/source/tools/fshelper.cxx +++ b/sax/source/tools/fshelper.cxx @@ -109,7 +109,8 @@ void FastSerializerHelper::singleElement(sal_Int32 elementTokenId, XFastAttribut FastSerializerHelper* FastSerializerHelper::write(const char* value) { - return write(OString(value)); + mpSerializer->write(value, 0, false); + return this; } FastSerializerHelper* FastSerializerHelper::write(const OUString& value) @@ -141,7 +142,7 @@ FastSerializerHelper* FastSerializerHelper::write(double value) FastSerializerHelper* FastSerializerHelper::writeEscaped(const char* value) { - mpSerializer->write(OString(value), true); + mpSerializer->write(value, 0, true); return this; } commit 501f855ae63d429babe35d18ae5390960efd9665 Author: Matúš Kukan <[email protected]> Date: Sat Sep 27 21:46:36 2014 +0200 FastSerializer: Use FastAttributeList directly to write faster. Change-Id: I28085d4e060bcf052e6aa97a0822a4d653d7c066 diff --git a/include/sax/fastattribs.hxx b/include/sax/fastattribs.hxx index 6d9c7a4..5255481 100644 --- a/include/sax/fastattribs.hxx +++ b/include/sax/fastattribs.hxx @@ -85,6 +85,8 @@ public: void addNS( sal_Int32 nNamespaceToken, sal_Int32 nToken, const OString& rValue ); void addUnknown( const OUString& rNamespaceURL, const OString& rName, const sal_Char* pValue ); void addUnknown( const OString& rName, const sal_Char* pValue ); + const std::vector< sal_Int32 >& getFastAttributeTokens() const { return maAttributeTokens; } + const char* getFastAttributeValue(size_t nIndex) const { return mpChunk + maAttributeValues[nIndex]; } // performance sensitive shortcuts to avoid allocation ... bool getAsInteger( sal_Int32 nToken, sal_Int32 &rInt); diff --git a/include/sax/fshelper.hxx b/include/sax/fshelper.hxx index d83ce78..5630910 100644 --- a/include/sax/fshelper.hxx +++ b/include/sax/fshelper.hxx @@ -20,9 +20,7 @@ #ifndef INCLUDED_SAX_FSHELPER_HXX #define INCLUDED_SAX_FSHELPER_HXX -#include <com/sun/star/uno/XReference.hpp> #include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/xml/sax/XFastTokenHandler.hpp> #include <stdarg.h> #include <boost/shared_ptr.hpp> #include <sax/fastattribs.hxx> @@ -185,8 +183,7 @@ private: void singleElementInternal(sal_Int32 elementTokenId, ...); FastSaxSerializer* mpSerializer; - com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastTokenHandler> mxTokenHandler; - + FastAttributeList maAttrList; }; typedef boost::shared_ptr< FastSerializerHelper > FSHelperPtr; diff --git a/sax/source/tools/fastattribs.cxx b/sax/source/tools/fastattribs.cxx index 45887b5..67f3196 100644 --- a/sax/source/tools/fastattribs.cxx +++ b/sax/source/tools/fastattribs.cxx @@ -129,7 +129,7 @@ sal_Int32 FastAttributeList::getValueToken( ::sal_Int32 Token ) throw (SAXExcept if (maAttributeTokens[i] == Token) return FastTokenHandlerBase::getTokenFromChars( mxTokenHandler, mpTokenHandler, - mpChunk + maAttributeValues[ i ], + getFastAttributeValue(i), AttributeValueLength( i ) ); throw SAXException(); @@ -141,7 +141,7 @@ sal_Int32 FastAttributeList::getOptionalValueToken( ::sal_Int32 Token, ::sal_Int if (maAttributeTokens[i] == Token) return FastTokenHandlerBase::getTokenFromChars( mxTokenHandler, mpTokenHandler, - mpChunk + maAttributeValues[ i ], + getFastAttributeValue(i), AttributeValueLength( i ) ); return Default; @@ -154,7 +154,7 @@ bool FastAttributeList::getAsInteger( sal_Int32 nToken, sal_Int32 &rInt) for (size_t i = 0; i < maAttributeTokens.size(); ++i) if (maAttributeTokens[i] == nToken) { - rInt = rtl_str_toInt32( mpChunk + maAttributeValues[i], 10 ); + rInt = rtl_str_toInt32( getFastAttributeValue(i), 10 ); return true; } return false; @@ -166,7 +166,7 @@ bool FastAttributeList::getAsDouble( sal_Int32 nToken, double &rDouble) for (size_t i = 0; i < maAttributeTokens.size(); ++i) if (maAttributeTokens[i] == nToken) { - rDouble = rtl_str_toDouble( mpChunk + maAttributeValues[i] ); + rDouble = rtl_str_toDouble( getFastAttributeValue(i) ); return true; } return false; @@ -191,7 +191,7 @@ OUString FastAttributeList::getValue( ::sal_Int32 Token ) throw (SAXException, R { for (size_t i = 0; i < maAttributeTokens.size(); ++i) if (maAttributeTokens[i] == Token) - return OUString( mpChunk + maAttributeValues[i], AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); + return OUString( getFastAttributeValue(i), AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); throw SAXException(); } @@ -200,7 +200,7 @@ OUString FastAttributeList::getOptionalValue( ::sal_Int32 Token ) throw (Runtime { for (size_t i = 0; i < maAttributeTokens.size(); ++i) if (maAttributeTokens[i] == Token) - return OUString( mpChunk + maAttributeValues[i], AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); + return OUString( getFastAttributeValue(i), AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); return OUString(); } @@ -219,7 +219,7 @@ Sequence< FastAttribute > FastAttributeList::getFastAttributes( ) throw (Runtim for (size_t i = 0; i < maAttributeTokens.size(); ++i) { pAttr->Token = maAttributeTokens[i]; - pAttr->Value = OUString( mpChunk + maAttributeValues[i], AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); + pAttr->Value = OUString( getFastAttributeValue(i), AttributeValueLength(i), RTL_TEXTENCODING_UTF8 ); pAttr++; } return aSeq; diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx index f2f8bc6..3a8b770 100644 --- a/sax/source/tools/fastserializer.cxx +++ b/sax/source/tools/fastserializer.cxx @@ -21,7 +21,6 @@ #include <com/sun/star/xml/Attribute.hpp> #include <com/sun/star/xml/FastAttribute.hpp> -#include <com/sun/star/xml/sax/XFastAttributeList.hpp> #include <rtl/ustrbuf.hxx> #include <comphelper/sequenceasvector.hxx> @@ -40,7 +39,6 @@ using ::com::sun::star::uno::Sequence; using ::com::sun::star::xml::FastAttribute; using ::com::sun::star::xml::Attribute; using ::com::sun::star::xml::sax::SAXException; -using ::com::sun::star::xml::sax::XFastAttributeList; using ::com::sun::star::io::XOutputStream; using ::com::sun::star::io::NotConnectedException; using ::com::sun::star::io::IOException; @@ -145,7 +143,7 @@ namespace sax_fastparser { } #endif - void FastSaxSerializer::startFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) + void FastSaxSerializer::startFastElement( ::sal_Int32 Element, FastAttributeList* pAttrList ) { if ( !maMarkStack.empty() ) maMarkStack.top()->setCurrentElement( Element ); @@ -157,7 +155,7 @@ namespace sax_fastparser { writeBytes(sOpeningBracket, N_CHARS(sOpeningBracket)); writeId(Element); - writeFastAttributeList(Attribs); + writeFastAttributeList(pAttrList); writeBytes(sClosingBracket, N_CHARS(sClosingBracket)); } @@ -178,7 +176,7 @@ namespace sax_fastparser { writeBytes(sClosingBracket, N_CHARS(sClosingBracket)); } - void FastSaxSerializer::singleFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) + void FastSaxSerializer::singleFastElement( ::sal_Int32 Element, FastAttributeList* pAttrList ) { if ( !maMarkStack.empty() ) maMarkStack.top()->setCurrentElement( Element ); @@ -186,7 +184,7 @@ namespace sax_fastparser { writeBytes(sOpeningBracket, N_CHARS(sOpeningBracket)); writeId(Element); - writeFastAttributeList(Attribs); + writeFastAttributeList(pAttrList); writeBytes(sSlashAndClosingBracket, N_CHARS(sSlashAndClosingBracket)); } @@ -200,38 +198,18 @@ namespace sax_fastparser { { mxFastTokenHandler = xFastTokenHandler; } - void FastSaxSerializer::writeFastAttributeList( const Reference< XFastAttributeList >& Attribs ) + + void FastSaxSerializer::writeFastAttributeList( FastAttributeList* pAttrList ) { #ifdef DBG_UTIL ::std::set<OUString> DebugAttributes; #endif - Sequence< Attribute > aAttrSeq = Attribs->getUnknownAttributes(); - const Attribute *pAttr = aAttrSeq.getConstArray(); - sal_Int32 nAttrLength = aAttrSeq.getLength(); - for (sal_Int32 i = 0; i < nAttrLength; i++) - { - writeBytes(sSpace, N_CHARS(sSpace)); - - OUString const& rAttrName(pAttr[i].Name); -#ifdef DBG_UTIL - // Well-formedness constraint: Unique Att Spec - assert(DebugAttributes.find(rAttrName) == DebugAttributes.end()); - DebugAttributes.insert(rAttrName); -#endif - write(rAttrName); - writeBytes(sEqualSignAndQuote, N_CHARS(sEqualSignAndQuote)); - write(pAttr[i].Value, true); - writeBytes(sQuote, N_CHARS(sQuote)); - } - - Sequence< FastAttribute > aFastAttrSeq = Attribs->getFastAttributes(); - const FastAttribute *pFastAttr = aFastAttrSeq.getConstArray(); - sal_Int32 nFastAttrLength = aFastAttrSeq.getLength(); - for (sal_Int32 j = 0; j < nFastAttrLength; j++) + const std::vector< sal_Int32 >& Tokens = pAttrList->getFastAttributeTokens(); + for (size_t j = 0; j < Tokens.size(); j++) { writeBytes(sSpace, N_CHARS(sSpace)); - sal_Int32 nToken = pFastAttr[j].Token; + sal_Int32 nToken = Tokens[j]; writeId(nToken); #ifdef DBG_UTIL @@ -244,7 +222,7 @@ namespace sax_fastparser { writeBytes(sEqualSignAndQuote, N_CHARS(sEqualSignAndQuote)); - write(pFastAttr[j].Value, true); + write(pAttrList->getFastAttributeValue(j), true); writeBytes(sQuote, N_CHARS(sQuote)); } diff --git a/sax/source/tools/fastserializer.hxx b/sax/source/tools/fastserializer.hxx index 82e9eea..089348a 100644 --- a/sax/source/tools/fastserializer.hxx +++ b/sax/source/tools/fastserializer.hxx @@ -22,16 +22,15 @@ #include <com/sun/star/xml/sax/XFastTokenHandler.hpp> #include <com/sun/star/io/XOutputStream.hpp> -#include <rtl/byteseq.hxx> + +#include <comphelper/seqstream.hxx> +#include <sax/fastattribs.hxx> +#include <sax/fshelper.hxx> #include <stack> #include <map> - #include <boost/shared_ptr.hpp> -#include <comphelper/seqstream.hxx> -#include "sax/fshelper.hxx" - namespace sax_fastparser { /// Receives notification of sax document events to write into an XOutputStream. @@ -67,11 +66,11 @@ public: <b>or</b> operation. @param Attribs - Contains a <type>XFastAttrbitueList</type> to access the attributes + Contains a <type>FastAttributeList</type> to access the attributes from the element. */ - void startFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); + void startFastElement( ::sal_Int32 Element, FastAttributeList* Attribs ); /** receives notification of the end of an known element. @see startFastElement @@ -91,11 +90,11 @@ public: <b>or</b> operation. @param Attribs - Contains a <type>XFastAttrbitueList</type> to access the attributes + Contains a <type>FastAttributeList</type> to access the attributes from the element. */ - void singleFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); + void singleFastElement( ::sal_Int32 Element, FastAttributeList* Attribs ); void setOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream ); void setFastTokenHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xFastTokenHandler ); @@ -206,7 +205,7 @@ private: ::std::stack<sal_Int32> m_DebugStartedElements; #endif - void writeFastAttributeList( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); + void writeFastAttributeList( FastAttributeList* pAttrList ); /// Write to maOutputData and if it's big enough flush that to mxOutputStream void writeOutput( const sal_Int8* pStr, size_t nLen ); void writeOutput( const css::uno::Sequence< ::sal_Int8 >& aData ); diff --git a/sax/source/tools/fshelper.cxx b/sax/source/tools/fshelper.cxx index 0e5df28..30e5932 100644 --- a/sax/source/tools/fshelper.cxx +++ b/sax/source/tools/fshelper.cxx @@ -20,6 +20,7 @@ #include <sax/fshelper.hxx> #include "fastserializer.hxx" #include <com/sun/star/xml/sax/FastTokenHandler.hpp> +#include <com/sun/star/xml/sax/XFastTokenHandler.hpp> #include <comphelper/processfactory.hxx> #include <rtl/ustrbuf.hxx> @@ -30,11 +31,10 @@ namespace sax_fastparser { FastSerializerHelper::FastSerializerHelper(const Reference< io::XOutputStream >& xOutputStream, bool bWriteHeader ) : mpSerializer(new FastSaxSerializer()) + , maAttrList(Reference< xml::sax::XFastTokenHandler >()) { Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext(), UNO_SET_THROW ); - mxTokenHandler = css::xml::sax::FastTokenHandler::create(xContext); - - mpSerializer->setFastTokenHandler( mxTokenHandler ); + mpSerializer->setFastTokenHandler( css::xml::sax::FastTokenHandler::create(xContext) ); assert(xOutputStream.is()); // cannot do anything without that mpSerializer->setOutputStream( xOutputStream ); if( bWriteHeader ) @@ -51,7 +51,7 @@ void FastSerializerHelper::startElementInternal(sal_Int32 elementTokenId, ...) { va_list args; va_start( args, elementTokenId ); - FastAttributeList* pAttrList = new FastAttributeList( mxTokenHandler ); + maAttrList.clear(); while (true) { @@ -60,11 +60,10 @@ void FastSerializerHelper::startElementInternal(sal_Int32 elementTokenId, ...) break; const char* pValue = va_arg(args, const char*); if (pValue) - pAttrList->add(nName, pValue); + maAttrList.add(nName, pValue); } - const com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> xAttrList(pAttrList); - mpSerializer->startFastElement(elementTokenId, xAttrList); + mpSerializer->startFastElement(elementTokenId, &maAttrList); va_end( args ); } @@ -72,7 +71,7 @@ void FastSerializerHelper::singleElementInternal(sal_Int32 elementTokenId, ...) { va_list args; va_start( args, elementTokenId ); - FastAttributeList* pAttrList = new FastAttributeList( mxTokenHandler ); + maAttrList.clear(); while (true) { @@ -81,11 +80,10 @@ void FastSerializerHelper::singleElementInternal(sal_Int32 elementTokenId, ...) break; const char* pValue = va_arg(args, const char*); if (pValue) - pAttrList->add(nName, pValue); + maAttrList.add(nName, pValue); } - const com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> xAttrList(pAttrList); - mpSerializer->singleFastElement(elementTokenId, xAttrList); + mpSerializer->singleFastElement(elementTokenId, &maAttrList); va_end( args ); } @@ -96,13 +94,17 @@ void FastSerializerHelper::endElement(sal_Int32 elementTokenId) void FastSerializerHelper::startElement(sal_Int32 elementTokenId, XFastAttributeListRef xAttrList) { - mpSerializer->startFastElement(elementTokenId, xAttrList); + FastAttributeList* pAttrList = dynamic_cast< FastAttributeList* >(xAttrList.get()); + assert(pAttrList); + mpSerializer->startFastElement(elementTokenId, pAttrList); } void FastSerializerHelper::singleElement(sal_Int32 elementTokenId, XFastAttributeListRef xAttrList) { - mpSerializer->singleFastElement(elementTokenId, xAttrList); + FastAttributeList* pAttrList = dynamic_cast< FastAttributeList* >(xAttrList.get()); + assert(pAttrList); + mpSerializer->singleFastElement(elementTokenId, pAttrList); } FastSerializerHelper* FastSerializerHelper::write(const char* value) @@ -172,7 +174,7 @@ void FastSerializerHelper::mergeTopMarks( MergeMarksEnum eMergeType ) FastAttributeList * FastSerializerHelper::createAttrList() { - return new FastAttributeList( mxTokenHandler ); + return new FastAttributeList( Reference< xml::sax::XFastTokenHandler >() ); } commit be1a853748a96b91128563967bba96a38073a6df Author: Matúš Kukan <[email protected]> Date: Sat Sep 27 22:04:13 2014 +0200 FastSerializer: Remove throw specs; this is not UNO implementation Change-Id: I462f8ed89de48174ed7aa6e008709963bec50649 diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx index 455df0b..f2f8bc6 100644 --- a/sax/source/tools/fastserializer.cxx +++ b/sax/source/tools/fastserializer.cxx @@ -18,14 +18,14 @@ */ #include "fastserializer.hxx" -#include <rtl/ustrbuf.hxx> - -#include <comphelper/sequenceasvector.hxx> #include <com/sun/star/xml/Attribute.hpp> #include <com/sun/star/xml/FastAttribute.hpp> #include <com/sun/star/xml/sax/XFastAttributeList.hpp> +#include <rtl/ustrbuf.hxx> +#include <comphelper/sequenceasvector.hxx> + #include <string.h> #if OSL_DEBUG_LEVEL > 0 @@ -73,7 +73,7 @@ namespace sax_fastparser { } FastSaxSerializer::~FastSaxSerializer() {} - void SAL_CALL FastSaxSerializer::startDocument( ) throw (SAXException, RuntimeException) + void FastSaxSerializer::startDocument() { writeBytes(sXmlHeader, N_CHARS(sXmlHeader)); } @@ -110,13 +110,13 @@ namespace sax_fastparser { } } - void SAL_CALL FastSaxSerializer::endDocument( ) throw (SAXException, RuntimeException) + void FastSaxSerializer::endDocument() { maOutputStream.flush(); mxOutputStream->writeBytes(maOutputData); } - void SAL_CALL FastSaxSerializer::writeId( ::sal_Int32 nElement ) + void FastSaxSerializer::writeId( ::sal_Int32 nElement ) { if( HAS_NAMESPACE( nElement ) ) { writeBytes(mxFastTokenHandler->getUTF8Identifier(NAMESPACE(nElement))); @@ -127,7 +127,7 @@ namespace sax_fastparser { } #ifdef DBG_UTIL - OString SAL_CALL FastSaxSerializer::getId( ::sal_Int32 nElement ) + OString FastSaxSerializer::getId( ::sal_Int32 nElement ) { if (HAS_NAMESPACE(nElement)) { Sequence<sal_Int8> const ns( @@ -145,8 +145,7 @@ namespace sax_fastparser { } #endif - void SAL_CALL FastSaxSerializer::startFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) - throw (SAXException, RuntimeException) + void FastSaxSerializer::startFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) { if ( !maMarkStack.empty() ) maMarkStack.top()->setCurrentElement( Element ); @@ -163,8 +162,7 @@ namespace sax_fastparser { writeBytes(sClosingBracket, N_CHARS(sClosingBracket)); } - void SAL_CALL FastSaxSerializer::endFastElement( ::sal_Int32 Element ) - throw (SAXException, RuntimeException) + void FastSaxSerializer::endFastElement( ::sal_Int32 Element ) { #ifdef DBG_UTIL assert(!m_DebugStartedElements.empty()); @@ -180,8 +178,7 @@ namespace sax_fastparser { writeBytes(sClosingBracket, N_CHARS(sClosingBracket)); } - void SAL_CALL FastSaxSerializer::singleFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) - throw (SAXException, RuntimeException) + void FastSaxSerializer::singleFastElement( ::sal_Int32 Element, const Reference< XFastAttributeList >& Attribs ) { if ( !maMarkStack.empty() ) maMarkStack.top()->setCurrentElement( Element ); @@ -194,14 +191,12 @@ namespace sax_fastparser { writeBytes(sSlashAndClosingBracket, N_CHARS(sSlashAndClosingBracket)); } - void SAL_CALL FastSaxSerializer::setOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream ) - throw (::com::sun::star::uno::RuntimeException) + void FastSaxSerializer::setOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream ) { mxOutputStream = xOutputStream; } - void SAL_CALL FastSaxSerializer::setFastTokenHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xFastTokenHandler ) - throw (::com::sun::star::uno::RuntimeException) + void FastSaxSerializer::setFastTokenHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xFastTokenHandler ) { mxFastTokenHandler = xFastTokenHandler; } @@ -295,13 +290,11 @@ namespace sax_fastparser { } void FastSaxSerializer::writeBytes( const Sequence< sal_Int8 >& rData ) - throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException ) { writeBytes( reinterpret_cast<const char*>(rData.getConstArray()), rData.getLength() ); } void FastSaxSerializer::writeBytes( const char* pStr, size_t nLen ) - throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException ) { if ( maMarkStack.empty() ) writeOutput( reinterpret_cast<const sal_Int8*>(pStr), nLen ); @@ -310,13 +303,12 @@ namespace sax_fastparser { reinterpret_cast<const sal_Int8*>(pStr), nLen) ); } - void FastSaxSerializer::writeOutput( const Sequence< ::sal_Int8 >& aData ) throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException ) + void FastSaxSerializer::writeOutput( const Sequence< ::sal_Int8 >& aData ) { writeOutput( aData.getConstArray(), aData.getLength() ); } void FastSaxSerializer::writeOutput( const sal_Int8* pStr, size_t nLen ) - throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException ) { maOutputStream.writeBytes( pStr, nLen ); // Write when the sequence gets big enough diff --git a/sax/source/tools/fastserializer.hxx b/sax/source/tools/fastserializer.hxx index b84c1cc..82e9eea 100644 --- a/sax/source/tools/fastserializer.hxx +++ b/sax/source/tools/fastserializer.hxx @@ -41,18 +41,18 @@ class FastSaxSerializer typedef ::com::sun::star::uno::Sequence< ::sal_Int32 > Int32Sequence; public: - explicit FastSaxSerializer(); + FastSaxSerializer(); ~FastSaxSerializer(); ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > getOutputStream() {return mxOutputStream;} /** called by the parser when parsing of an XML stream is started. */ - void SAL_CALL startDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException); + void startDocument(); /** called by the parser after the last XML element of a stream is processed. */ - void SAL_CALL endDocument( ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException); + void endDocument(); /** receives notification of the beginning of an element. @@ -71,14 +71,12 @@ public: from the element. */ - void SAL_CALL startFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) - throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException); + void startFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); /** receives notification of the end of an known element. @see startFastElement */ - void SAL_CALL endFastElement( ::sal_Int32 Element ) - throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException); + void endFastElement( ::sal_Int32 Element ); /** receives notification of the beginning of a single element. @@ -97,18 +95,14 @@ public: from the element. */ - void SAL_CALL singleFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) - throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException); + void singleFastElement( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); - void SAL_CALL setOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream ) - throw (::com::sun::star::uno::RuntimeException); - - void SAL_CALL setFastTokenHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xFastTokenHandler ) - throw (::com::sun::star::uno::RuntimeException); + void setOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream ); + void setFastTokenHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xFastTokenHandler ); // C++ helpers - void SAL_CALL writeId( ::sal_Int32 Element ); - OString SAL_CALL getId( ::sal_Int32 Element ); + void writeId( ::sal_Int32 Element ); + OString getId( ::sal_Int32 Element ); void write( const OUString& s, bool bEscape = false ); void write( const OString& s, bool bEscape = false ); @@ -214,17 +208,15 @@ private: void writeFastAttributeList( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ); /// Write to maOutputData and if it's big enough flush that to mxOutputStream - void writeOutput( const sal_Int8* pStr, size_t nLen ) - throw (css::io::NotConnectedException, css::io::BufferSizeExceededException, css::io::IOException, css::uno::RuntimeException); - void writeOutput( const css::uno::Sequence< ::sal_Int8 >& aData ) - throw (css::io::NotConnectedException, css::io::BufferSizeExceededException, css::io::IOException, css::uno::RuntimeException); + void writeOutput( const sal_Int8* pStr, size_t nLen ); + void writeOutput( const css::uno::Sequence< ::sal_Int8 >& aData ); /** Forward the call to the output stream, or write to the stack. The latter in the case that we are inside a mark(). */ - void writeBytes( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& aData ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); - void writeBytes( const char* pStr, size_t nLen ) throw (::com::sun::star::io::NotConnectedException, ::com::sun::star::io::BufferSizeExceededException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); + void writeBytes( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& aData ); + void writeBytes( const char* pStr, size_t nLen ); }; } // namespace sax_fastparser
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
