diff options
Diffstat (limited to 'binfilter/bf_sw/source/filter/xml/sw_xmlitmpr.cxx')
-rw-r--r-- | binfilter/bf_sw/source/filter/xml/sw_xmlitmpr.cxx | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/binfilter/bf_sw/source/filter/xml/sw_xmlitmpr.cxx b/binfilter/bf_sw/source/filter/xml/sw_xmlitmpr.cxx new file mode 100644 index 000000000000..246abd112395 --- /dev/null +++ b/binfilter/bf_sw/source/filter/xml/sw_xmlitmpr.cxx @@ -0,0 +1,94 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +#include "xmlitmap.hxx" +namespace binfilter { + +using namespace rtl; +using ::binfilter::xmloff::token::IsXMLToken; +using ::binfilter::xmloff::token::XML_TOKEN_INVALID; + +// TODO: optimize this! + +class SvXMLItemMapEntries_impl +{ +public: + SvXMLItemMapEntry* mpEntries; + sal_uInt16 mnCount; +}; + +SvXMLItemMapEntries::SvXMLItemMapEntries( SvXMLItemMapEntry* pEntries ) +{ + mpImpl = new SvXMLItemMapEntries_impl; + mpImpl->mpEntries = pEntries; + + mpImpl->mnCount = 0; + while( pEntries->eLocalName != XML_TOKEN_INVALID ) + { + pEntries++; + mpImpl->mnCount++; + } +} + +SvXMLItemMapEntries::~SvXMLItemMapEntries() +{ + delete mpImpl; +} + +SvXMLItemMapEntry* SvXMLItemMapEntries::getByName( sal_uInt16 nNameSpace, + const OUString& rString, + SvXMLItemMapEntry* pStartAt /* = NULL */ ) const +{ + SvXMLItemMapEntry* pMap = + (pStartAt && (pStartAt->eLocalName!=XML_TOKEN_INVALID)) ? + &(pStartAt[1]) : mpImpl->mpEntries; + while( pMap && (pMap->eLocalName != XML_TOKEN_INVALID) ) + { + if( pMap->nNameSpace == nNameSpace && + IsXMLToken( rString, pMap->eLocalName ) ) + break; + pMap++; + } + + return (pMap->eLocalName != XML_TOKEN_INVALID) ? pMap : NULL; +} + +SvXMLItemMapEntry* SvXMLItemMapEntries::getByIndex( UINT16 nIndex ) const +{ + return &mpImpl->mpEntries[nIndex]; +} + +UINT16 SvXMLItemMapEntries::getCount() const +{ + return mpImpl->mnCount; +} + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |