From 3324cdaf0d137a47775e59ebe55ceb5ee2be2a2e Mon Sep 17 00:00:00 2001 From: Kurt Zenker Date: Tue, 31 Jan 2006 17:34:36 +0000 Subject: INTEGRATION: CWS dr44 (1.1.2); FILE ADDED 2006/01/11 15:56:58 nn 1.1.2.1: #b6355215# cache string occurences for automatic label lookup during CompileXML --- sc/inc/autonamecache.hxx | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 sc/inc/autonamecache.hxx (limited to 'sc/inc/autonamecache.hxx') diff --git a/sc/inc/autonamecache.hxx b/sc/inc/autonamecache.hxx new file mode 100644 index 000000000000..14371661ef64 --- /dev/null +++ b/sc/inc/autonamecache.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: autonamecache.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: kz $ $Date: 2006-01-31 18:34:36 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef SC_AUTONAMECACHE_HXX +#define SC_AUTONAMECACHE_HXX + +#include +#include + +#ifndef SC_ADDRESS_HXX +#include "address.hxx" +#endif + +struct ScAutoNameHashCode +{ + size_t operator()( const String& rStr ) const + { + return rtl_ustr_hashCode_WithLength( rStr.GetBuffer(), rStr.Len() ); + } +}; + +typedef ::std::vector< ScAddress > ScAutoNameAddresses; +typedef ::std::hash_map< String, ScAutoNameAddresses, ScAutoNameHashCode, ::std::equal_to< String > > ScAutoNameHashMap; + +// +// Cache for faster lookup of automatic names during CompileXML +// (during CompileXML, no document content is changed) +// + +class ScAutoNameCache +{ + ScAutoNameHashMap aNames; + ScDocument* pDoc; + SCTAB nCurrentTab; + +public: + ScAutoNameCache( ScDocument* pD ); + ~ScAutoNameCache(); + + const ScAutoNameAddresses& GetNameOccurences( const String& rName, SCTAB nTab ); +}; + +#endif + -- cgit