diff options
author | Matúš Kukan <matus.kukan@gmail.com> | 2013-10-15 09:29:27 +0200 |
---|---|---|
committer | Matúš Kukan <matus.kukan@gmail.com> | 2013-10-17 21:38:37 +0200 |
commit | 9ae701509add0f0192b02fab787c6acbc64be349 (patch) | |
tree | da1145670c705525c5c80727eaa51baf2caf6a1f /sax | |
parent | bc2d6ef106bb3ea40fd54dc57e786a8a1898b465 (diff) |
FastAttributeList: use vectors instead of map; the size is small
This is also preparation to avoid OString internal usage.
Change-Id: If0ea36155d8ab3f5c91c2aafd6932fabeadadd41
Diffstat (limited to 'sax')
-rw-r--r-- | sax/source/tools/fastattribs.cxx | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/sax/source/tools/fastattribs.cxx b/sax/source/tools/fastattribs.cxx index bb348a4cc61c..b25ff089079c 100644 --- a/sax/source/tools/fastattribs.cxx +++ b/sax/source/tools/fastattribs.cxx @@ -50,7 +50,6 @@ void UnknownAttribute::FillAttribute( Attribute* pAttrib ) const FastAttributeList::FastAttributeList( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastTokenHandler >& xTokenHandler ) : mxTokenHandler( xTokenHandler ) { - maLastIter = maAttributes.end(); } FastAttributeList::~FastAttributeList() @@ -59,14 +58,15 @@ FastAttributeList::~FastAttributeList() void FastAttributeList::clear() { - maAttributes.clear(); + maAttributeTokens.clear(); + maAttributeValues.clear(); maUnknownAttributes.clear(); - maLastIter = maAttributes.end(); } void FastAttributeList::add( sal_Int32 nToken, const OString& rValue ) { - maAttributes[nToken] = rValue; + maAttributeTokens.push_back( nToken ); + maAttributeValues.push_back( rValue ); } void FastAttributeList::addUnknown( const OUString& rNamespaceURL, const OString& rName, const OString& rValue ) @@ -82,55 +82,53 @@ void FastAttributeList::addUnknown( const OString& rName, const OString& rValue // XFastAttributeList sal_Bool FastAttributeList::hasAttribute( ::sal_Int32 Token ) throw (RuntimeException) { - maLastIter = maAttributes.find( Token ); - return ( maLastIter != maAttributes.end() ) ? sal_True : sal_False; + for (size_t i = 0; i < maAttributeTokens.size(); ++i) + if (maAttributeTokens[i] == Token) + return sal_True; + + return sal_False; } sal_Int32 FastAttributeList::getValueToken( ::sal_Int32 Token ) throw (SAXException, RuntimeException) { - if( ( maLastIter == maAttributes.end() ) || ( ( *maLastIter ).first != Token ) ) - maLastIter = maAttributes.find( Token ); - - if( maLastIter == maAttributes.end() ) - throw SAXException(); + for (size_t i = 0; i < maAttributeTokens.size(); ++i) + if (maAttributeTokens[i] == Token) + { + Sequence< sal_Int8 > aSeq( (sal_Int8*) maAttributeValues[i].getStr(), maAttributeValues[i].getLength() ); + return mxTokenHandler->getTokenFromUTF8( aSeq ); + } - Sequence< sal_Int8 > aSeq( (sal_Int8*)(*maLastIter).second.getStr(), (*maLastIter).second.getLength() ) ; - return mxTokenHandler->getTokenFromUTF8( aSeq ); + throw SAXException(); } sal_Int32 FastAttributeList::getOptionalValueToken( ::sal_Int32 Token, ::sal_Int32 Default ) throw (RuntimeException) { - if( ( maLastIter == maAttributes.end() ) || ( ( *maLastIter ).first != Token ) ) - maLastIter = maAttributes.find( Token ); - - if( maLastIter == maAttributes.end() ) - return Default; + for (size_t i = 0; i < maAttributeTokens.size(); ++i) + if (maAttributeTokens[i] == Token) + { + Sequence< sal_Int8 > aSeq( (sal_Int8*) maAttributeValues[i].getStr(), maAttributeValues[i].getLength() ); + return mxTokenHandler->getTokenFromUTF8( aSeq ); + } - Sequence< sal_Int8 > aSeq( (sal_Int8*)(*maLastIter).second.getStr(), (*maLastIter).second.getLength() ) ; - return mxTokenHandler->getTokenFromUTF8( aSeq ); + return Default; } OUString FastAttributeList::getValue( ::sal_Int32 Token ) throw (SAXException, RuntimeException) { - if( ( maLastIter == maAttributes.end() ) || ( ( *maLastIter ).first != Token ) ) - maLastIter = maAttributes.find( Token ); + for (size_t i = 0; i < maAttributeTokens.size(); ++i) + if (maAttributeTokens[i] == Token) + return OStringToOUString( maAttributeValues[i], RTL_TEXTENCODING_UTF8 ); - if( maLastIter == maAttributes.end() ) - throw SAXException(); - - return OStringToOUString( (*maLastIter).second, RTL_TEXTENCODING_UTF8 ); + throw SAXException(); } OUString FastAttributeList::getOptionalValue( ::sal_Int32 Token ) throw (RuntimeException) { - if( ( maLastIter == maAttributes.end() ) || ( ( *maLastIter ).first != Token ) ) - maLastIter = maAttributes.find( Token ); - - OUString aRet; - if( maLastIter != maAttributes.end() ) - aRet = OStringToOUString( (*maLastIter).second, RTL_TEXTENCODING_UTF8 ); + for (size_t i = 0; i < maAttributeTokens.size(); ++i) + if (maAttributeTokens[i] == Token) + return OStringToOUString( maAttributeValues[i], RTL_TEXTENCODING_UTF8 ); - return aRet; + return OUString(); } Sequence< Attribute > FastAttributeList::getUnknownAttributes( ) throw (RuntimeException) { @@ -142,13 +140,12 @@ Sequence< Attribute > FastAttributeList::getUnknownAttributes( ) throw (Runtime } Sequence< FastAttribute > FastAttributeList::getFastAttributes( ) throw (RuntimeException) { - Sequence< FastAttribute > aSeq( maAttributes.size() ); + Sequence< FastAttribute > aSeq( maAttributeTokens.size() ); FastAttribute* pAttr = aSeq.getArray(); - FastAttributeMap::iterator fastAttrIter = maAttributes.begin(); - for(; fastAttrIter != maAttributes.end(); ++fastAttrIter ) + for (size_t i = 0; i < maAttributeTokens.size(); ++i) { - pAttr->Token = fastAttrIter->first; - pAttr->Value = OStringToOUString( fastAttrIter->second, RTL_TEXTENCODING_UTF8 ); + pAttr->Token = maAttributeTokens[i]; + pAttr->Value = OStringToOUString( maAttributeValues[i], RTL_TEXTENCODING_UTF8 ); pAttr++; } return aSeq; |