diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2005-09-28 10:45:24 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2005-09-28 10:45:24 +0000 |
commit | aaea9070aeb252eaba9c94770ed88b5af9f77b5a (patch) | |
tree | d3b26136400a88de9ccbdf8d49c184dfa2059d83 /sc/source/filter/excel/xename.cxx | |
parent | e5a4a9bea899bdb781363acb54c73a544d58131d (diff) |
INTEGRATION: CWS dr37 (1.3.36); FILE MERGED
2005/04/19 14:47:16 dr 1.3.36.1: #i47228# svExternal/ocMacro tokens can be macro calls or missing defined names
Diffstat (limited to 'sc/source/filter/excel/xename.cxx')
-rw-r--r-- | sc/source/filter/excel/xename.cxx | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/sc/source/filter/excel/xename.cxx b/sc/source/filter/excel/xename.cxx index 5e65c2f43621..7525b6dbab77 100644 --- a/sc/source/filter/excel/xename.cxx +++ b/sc/source/filter/excel/xename.cxx @@ -4,9 +4,9 @@ * * $RCSfile: xename.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: rt $ $Date: 2005-09-08 19:00:56 $ + * last change: $Author: hr $ $Date: 2005-09-28 11:45:24 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -148,6 +148,8 @@ public: sal_uInt16 InsertBuiltInName( sal_Unicode cBuiltIn, XclExpTokenArrayRef xTokArr, SCTAB nScTab ); /** Inserts a new defined name. Sets another unused name, if rName already exists. */ sal_uInt16 InsertUniqueName( const String& rName, XclExpTokenArrayRef xTokArr, SCTAB nScTab ); + /** Returns index of an existing name, or creates a name without definition. */ + sal_uInt16 InsertRawName( const String& rName ); /** Searches or inserts a defined name describing a macro name. @param bFunc true = Macro function; false = Macro procedure. */ sal_uInt16 InsertMacroCall( const String& rMacroName, bool bFunc ); @@ -378,6 +380,25 @@ sal_uInt16 XclExpNameManagerImpl::InsertUniqueName( return Append( xName ); } +sal_uInt16 XclExpNameManagerImpl::InsertRawName( const String& rName ) +{ + // empty name? may occur in broken external Calc tokens + if( !rName.Len() ) + return 0; + + // try to find an existing NAME record, regardless of its type + for( size_t nListIdx = mnFirstUserIdx, nListSize = maNameList.Size(); nListIdx < nListSize; ++nListIdx ) + { + XclExpNameRef xName = maNameList.GetRecord( nListIdx ); + if( xName->IsGlobal() && (xName->GetOrigName() == rName) ) + return static_cast< sal_uInt16 >( nListIdx + 1 ); + } + + // create a new NAME record + XclExpNameRef xName( new XclExpName( GetRoot(), rName ) ); + return Append( xName ); +} + sal_uInt16 XclExpNameManagerImpl::InsertMacroCall( const String& rMacroName, bool bFunc ) { // empty name? may occur in broken external Calc tokens @@ -671,6 +692,11 @@ sal_uInt16 XclExpNameManager::InsertUniqueName( return mxImpl->InsertUniqueName( rName, xTokArr, nScTab ); } +sal_uInt16 XclExpNameManager::InsertRawName( const String& rName ) +{ + return mxImpl->InsertRawName( rName ); +} + sal_uInt16 XclExpNameManager::InsertMacroCall( const String& rMacroName, bool bFunc ) { return mxImpl->InsertMacroCall( rMacroName, bFunc ); |