summaryrefslogtreecommitdiff
path: root/sc/source/filter/excel/xename.cxx
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2005-09-28 10:45:24 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2005-09-28 10:45:24 +0000
commitaaea9070aeb252eaba9c94770ed88b5af9f77b5a (patch)
treed3b26136400a88de9ccbdf8d49c184dfa2059d83 /sc/source/filter/excel/xename.cxx
parente5a4a9bea899bdb781363acb54c73a544d58131d (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.cxx30
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 );