summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2011-03-04 17:48:32 -0500
committerKohei Yoshida <kyoshida@novell.com>2011-03-05 15:21:07 -0500
commite422d9efc36407cae4220c025a4c2d8e8de14be9 (patch)
treef166728385f95f4152212e36d28a5b685100a60b
parentb2d3a5e2a3e5870778af63a30d7f3e6322294d06 (diff)
Removed SearchName() in favor of findByName().
-rw-r--r--sc/inc/rangenam.hxx3
-rw-r--r--sc/source/core/data/documen2.cxx5
-rw-r--r--sc/source/core/data/document.cxx3
-rw-r--r--sc/source/core/tool/interpr1.cxx12
-rw-r--r--sc/source/core/tool/rangenam.cxx17
-rw-r--r--sc/source/core/tool/rangeutl.cxx8
-rw-r--r--sc/source/filter/excel/xiname.cxx3
-rw-r--r--sc/source/filter/html/htmlimp.cxx15
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx3
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx5
-rw-r--r--sc/source/ui/app/inputwin.cxx3
-rw-r--r--sc/source/ui/docshell/arealink.cxx12
-rw-r--r--sc/source/ui/docshell/docfunc.cxx13
-rw-r--r--sc/source/ui/docshell/docsh4.cxx5
-rw-r--r--sc/source/ui/docshell/impex.cxx5
-rw-r--r--sc/source/ui/docshell/servobj.cxx5
-rw-r--r--sc/source/ui/inc/namedlg.hxx2
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx51
-rw-r--r--sc/source/ui/navipi/content.cxx8
-rw-r--r--sc/source/ui/unoobj/nameuno.cxx46
-rw-r--r--sc/source/ui/view/viewfunc.cxx8
21 files changed, 107 insertions, 125 deletions
diff --git a/sc/inc/rangenam.hxx b/sc/inc/rangenam.hxx
index b81f9fb28ec4..914f185e9f81 100644
--- a/sc/inc/rangenam.hxx
+++ b/sc/inc/rangenam.hxx
@@ -196,7 +196,7 @@ public:
SC_DLLPUBLIC ScRangeData* operator[](sal_uInt16 nIndex);
SC_DLLPUBLIC const ScRangeData* operator[](sal_uInt16 nIndex) const;
SC_DLLPUBLIC const ScRangeData* GetRangeAtBlock(const ScRange& rRange) const;
- SC_DLLPUBLIC bool SearchName(const rtl::OUString& rName, sal_uInt16& rPos) const;
+ SC_DLLPUBLIC ScRangeData* findByName(const rtl::OUString& rName);
SC_DLLPUBLIC const ScRangeData* findByName(const rtl::OUString& rName) const;
const ScRangeData* findByUpperName(const rtl::OUString& rName) const;
bool SearchNameUpper(const rtl::OUString& rUpperName, sal_uInt16& rPos) const;
@@ -212,6 +212,7 @@ public:
SC_DLLPUBLIC size_t size() const;
SC_DLLPUBLIC bool Insert(ScRangeData* p);
void AtFree(size_t i);
+ void erase(const ScRangeData& r);
void FreeAll();
void clear();
SC_DLLPUBLIC ScRangeData* At(size_t i);
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 3db0d907439b..a0caf210f2db 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -981,14 +981,13 @@ ULONG ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos,
bool bInUse = ( aUsedNames.find(nOldIndex) != aUsedNames.end() );
if (bInUse)
{
- USHORT nExisting = 0;
- if ( pRangeName->SearchName( pSrcData->GetName(), nExisting ) )
+ const ScRangeData* pExistingData = pRangeName->findByName(pSrcData->GetName());
+ if (pExistingData)
{
// the name exists already in the destination document
// -> use the existing name, but show a warning
// (when refreshing links, the existing name is used and the warning not shown)
- ScRangeData* pExistingData = (*pRangeName)[nExisting];
USHORT nExistingIndex = pExistingData->GetIndex();
pSrcRangeNames[i] = NULL; // don't modify the named range
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 21a096c17297..04954ab66d51 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -1838,6 +1838,8 @@ void ScDocument::MergeNumberFormatter(ScDocument* pSrcDoc)
void ScDocument::CopyRangeNamesFromClip(ScDocument* pClipDoc, ScClipRangeNameData& rRangeNames)
{
+#if NEW_RANGE_NAME
+#else
sal_uInt16 nClipRangeNameCount = pClipDoc->pRangeName->GetCount();
ScClipRangeNameData aClipRangeNames;
@@ -1889,6 +1891,7 @@ void ScDocument::CopyRangeNamesFromClip(ScDocument* pClipDoc, ScClipRangeNameDat
}
}
rRangeNames = aClipRangeNames;
+#endif
}
void ScDocument::UpdateRangeNamesInFormulas(
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index f9bc41f4ab48..4bcdb7536d5f 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -6571,22 +6571,18 @@ void ScInterpreter::ScIndirect()
if (!pNames)
break;
- USHORT nPos = 0;
- if (!pNames->SearchName( sRefStr, nPos))
- break;
-
- ScRangeData* rData = (*pNames)[nPos];
- if (!rData)
+ ScRangeData* pData = pNames->findByName(sRefStr);
+ if (!pData)
break;
// We need this in order to obtain a good range.
- rData->ValidateTabRefs();
+ pData->ValidateTabRefs();
ScRange aRange;
// This is the usual way to treat named ranges containing
// relative references.
- if (!rData->IsReference( aRange, aPos))
+ if (!pData->IsReference( aRange, aPos))
break;
if (aRange.aStart == aRange.aEnd)
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index 5f265bfb3774..97d5f2b0b59e 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -690,9 +690,17 @@ const ScRangeData* ScRangeName::GetRangeAtBlock(const ScRange& rRange) const
return NULL;
}
-bool ScRangeName::SearchName(const rtl::OUString& rName, sal_uInt16& rPos) const
+ScRangeData* ScRangeName::findByName(const OUString& rName)
{
- return false;
+ DataType::iterator itr = maData.begin(), itrEnd = maData.end();
+ for (; itr != itrEnd; ++itr)
+ {
+ String aName;
+ itr->GetName(aName);
+ if (rName.equals(aName))
+ return &(*itr);
+ }
+ return NULL;
}
const ScRangeData* ScRangeName::findByName(const OUString& rName) const
@@ -795,6 +803,11 @@ void ScRangeName::FreeAll()
{
}
+void ScRangeName::erase(const ScRangeData& r)
+{
+ maData.erase(r);
+}
+
void ScRangeName::clear()
{
maData.clear();
diff --git a/sc/source/core/tool/rangeutl.cxx b/sc/source/core/tool/rangeutl.cxx
index bd1600970375..2857d170089d 100644
--- a/sc/source/core/tool/rangeutl.cxx
+++ b/sc/source/core/tool/rangeutl.cxx
@@ -288,12 +288,10 @@ BOOL ScRangeUtil::MakeRangeFromName (
if( eScope==RUTL_NAMES )
{
- ScRangeName& rRangeNames = *(pDoc->GetRangeName());
- USHORT nAt = 0;
-
- if ( rRangeNames.SearchName( rName, nAt ) )
+ const ScRangeName& rRangeNames = *pDoc->GetRangeName();
+ const ScRangeData* pData = rRangeNames.findByName(rName);
+ if (pData)
{
- ScRangeData* pData = rRangeNames[nAt];
String aStrArea;
ScRefAddress aStartPos;
ScRefAddress aEndPos;
diff --git a/sc/source/filter/excel/xiname.cxx b/sc/source/filter/excel/xiname.cxx
index b602edf80511..d0d7e0dd1657 100644
--- a/sc/source/filter/excel/xiname.cxx
+++ b/sc/source/filter/excel/xiname.cxx
@@ -146,8 +146,7 @@ XclImpName::XclImpName( XclImpStream& rStrm, sal_uInt16 nXclNameIdx ) :
// find an unused name
String aOrigName( maScName );
sal_Int32 nCounter = 0;
- USHORT nDummy;
- while( rRangeNames.SearchName( maScName, nDummy ) )
+ while( rRangeNames.findByName(maScName) )
maScName.Assign( aOrigName ).Append( ' ' ).Append( String::CreateFromInt32( ++nCounter ) );
// 3) *** convert the name definition formula *** -------------------------
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
index 90ece03f8646..57609f9e385d 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -210,8 +210,7 @@ void ScHTMLImport::WriteToDocument(
if( pTable->GetTableName().Len() )
{
String aName( ScfTools::GetNameFromHTMLName( pTable->GetTableName() ) );
- USHORT nPos;
- if( !mpDoc->GetRangeName()->SearchName( aName, nPos ) )
+ if (!mpDoc->GetRangeName()->findByName(aName))
InsertRangeName( mpDoc, aName, aNewRange );
}
}
@@ -237,22 +236,22 @@ String ScHTMLImport::GetHTMLRangeNameList( ScDocument* pDoc, const String& rOrig
if( pRangeNames && ScfTools::IsHTMLTablesName( aToken ) )
{ // build list with all HTML tables
ULONG nIndex = 1;
- USHORT nPos;
- BOOL bLoop = TRUE;
+ bool bLoop = true;
while( bLoop )
{
aToken = ScfTools::GetNameFromHTMLIndex( nIndex++ );
- bLoop = pRangeNames->SearchName( aToken, nPos );
- if( bLoop )
+ const ScRangeData* pRangeData = pRangeNames->findByName(aToken);
+ if (pRangeData)
{
- const ScRangeData* pRangeData = (*pRangeNames)[ nPos ];
ScRange aRange;
- if( pRangeData && pRangeData->IsReference( aRange ) && !aRangeList.In( aRange ) )
+ if( pRangeData->IsReference( aRange ) && !aRangeList.In( aRange ) )
{
ScGlobal::AddToken( aNewName, aToken, ';' );
aRangeList.Append( aRange );
}
}
+ else
+ bLoop = false;
}
}
else
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index 0675e5d5fcb5..bc845f742f92 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -404,8 +404,7 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu
bHasGraphics |= GraphicSize( nCol, nRow, nTab, pE );
if ( pE->pName )
{ // Anchor Name => RangeName
- USHORT nIndex;
- if ( !pRangeNames->SearchName( *pE->pName, nIndex ) )
+ if (!pRangeNames->findByName(*pE->pName))
{
ScRangeData* pData = new ScRangeData( mpDoc, *pE->pName,
ScAddress( nCol, nRow, nTab ) );
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index c8216275bc22..77e3907fa8a0 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -3723,10 +3723,7 @@ void ScXMLExport::WriteNamedExpressions(const com::sun::star::uno::Reference <co
xNamedRange->getReferencePosition(), pDoc, FormulaGrammar::CONV_OOO, ' ', sal_False, SCA_ABS_3D );
AddAttribute(XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, sOUBaseCellAddress);
- sal_uInt16 nRangeIndex;
- String sName(sOUName);
- pNamedRanges->SearchName(sName, nRangeIndex);
- ScRangeData* pNamedRange((*pNamedRanges)[nRangeIndex]); //should get directly and not with ScDocument
+ const ScRangeData* pNamedRange = pNamedRanges->findByName(sOUName);
String sContent;
pNamedRange->GetSymbol(sContent, pDoc->GetStorageGrammar());
rtl::OUString sOUTempContent(sContent);
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index ea8c548d231f..b0625bc439df 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -1679,8 +1679,7 @@ void ScPosWnd::DoEnter()
ScDocument* pDoc = pDocShell->GetDocument();
ScRangeName* pNames = pDoc->GetRangeName();
ScRange aSelection;
- USHORT nIndex = 0;
- if ( pNames && !pNames->SearchName( aText, nIndex ) &&
+ if ( pNames && !pNames->findByName(aText) &&
(pViewData->GetSimpleArea( aSelection ) == SC_MARK_SIMPLE) )
{
ScRangeName aNewRanges( *pNames );
diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx
index a1e6c02aa4a1..ddef0eb95bc5 100644
--- a/sc/source/ui/docshell/arealink.cxx
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -205,14 +205,14 @@ BOOL ScAreaLink::IsEqual( const String& rFile, const String& rFilter, const Stri
// find a range with name >rAreaName< in >pSrcDoc<, return it in >rRange<
BOOL ScAreaLink::FindExtRange( ScRange& rRange, ScDocument* pSrcDoc, const String& rAreaName )
{
- BOOL bFound = FALSE;
+ bool bFound = false;
ScRangeName* pNames = pSrcDoc->GetRangeName();
USHORT nPos;
if (pNames) // benannte Bereiche
{
- if (pNames->SearchName( rAreaName, nPos ))
- if ( (*pNames)[nPos]->IsValidReference( rRange ) )
- bFound = TRUE;
+ const ScRangeData* p = pNames->findByName(rAreaName);
+ if (p && p->IsValidReference(rRange))
+ bFound = true;
}
if (!bFound) // Datenbankbereiche
{
@@ -225,14 +225,14 @@ BOOL ScAreaLink::FindExtRange( ScRange& rRange, ScDocument* pSrcDoc, const Strin
SCROW nRow1, nRow2;
(*pDBColl)[nPos]->GetArea(nTab,nCol1,nRow1,nCol2,nRow2);
rRange = ScRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab );
- bFound = TRUE;
+ bFound = true;
}
}
if (!bFound) // direct reference (range or cell)
{
ScAddress::Details aDetails(pSrcDoc->GetAddressConvention(), 0, 0);
if ( rRange.ParseAny( rAreaName, pSrcDoc, aDetails ) & SCA_VALID )
- bFound = TRUE;
+ bFound = true;
}
return bFound;
}
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 853bd50e9a88..66b2a5b6d853 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -4543,11 +4543,10 @@ void ScDocFunc::CreateOneName( ScRangeName& rList,
String aContent;
ScRange( nX1, nY1, nTab, nX2, nY2, nTab ).Format( aContent, SCR_ABS_3D, pDoc );
- BOOL bInsert = FALSE;
- USHORT nOldPos;
- if (rList.SearchName( aName, nOldPos )) // vorhanden ?
+ bool bInsert = false;
+ ScRangeData* pOld = rList.findByName(aName);
+ if (pOld)
{
- ScRangeData* pOld = rList[nOldPos];
String aOldStr;
pOld->GetSymbol( aOldStr );
if (aOldStr != aContent)
@@ -4567,8 +4566,8 @@ void ScDocFunc::CreateOneName( ScRangeName& rList,
aMessage ).Execute();
if ( nResult == RET_YES )
{
- rList.AtFree(nOldPos);
- bInsert = TRUE;
+ rList.erase(*pOld);
+ bInsert = true;
}
else if ( nResult == RET_CANCEL )
rCancel = TRUE;
@@ -4576,7 +4575,7 @@ void ScDocFunc::CreateOneName( ScRangeName& rList,
}
}
else
- bInsert = TRUE;
+ bInsert = true;
if (bInsert)
{
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 8ea77526cf66..fbf4ab710e73 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -2463,10 +2463,9 @@ long ScDocShell::DdeSetData( const String& rItem,
ScRangeName* pRange = aDocument.GetRangeName();
if( pRange )
{
- USHORT nPos;
- if( pRange->SearchName( aPos, nPos ) )
+ const ScRangeData* pData = pRange->findByName(aPos);
+ if (pData)
{
- ScRangeData* pData = (*pRange)[ nPos ];
if( pData->HasType( RT_REFAREA )
|| pData->HasType( RT_ABSAREA )
|| pData->HasType( RT_ABSPOS ) )
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index e1e8ef314028..8b08e80d21ae 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -175,10 +175,9 @@ ScImportExport::ScImportExport( ScDocument* p, const String& rPos )
ScRangeName* pRange = pDoc->GetRangeName();
if( pRange )
{
- USHORT nPos;
- if( pRange->SearchName( aPos, nPos ) )
+ const ScRangeData* pData = pRange->findByName(aPos);
+ if (pData)
{
- ScRangeData* pData = (*pRange)[ nPos ];
if( pData->HasType( RT_REFAREA )
|| pData->HasType( RT_ABSAREA )
|| pData->HasType( RT_ABSPOS ) )
diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx
index 0ec8e582d093..d96f9101b858 100644
--- a/sc/source/ui/docshell/servobj.cxx
+++ b/sc/source/ui/docshell/servobj.cxx
@@ -54,10 +54,9 @@ BOOL lcl_FillRangeFromName( ScRange& rRange, ScDocShell* pDocSh, const String& r
ScRangeName* pNames = pDoc->GetRangeName();
if (pNames)
{
- USHORT nPos;
- if( pNames->SearchName( rName, nPos ) )
+ const ScRangeData* pData = pNames->findByName(rName);
+ if (pData)
{
- ScRangeData* pData = (*pNames)[ nPos ];
if ( pData->IsValidReference( rRange ) )
return TRUE;
}
diff --git a/sc/source/ui/inc/namedlg.hxx b/sc/source/ui/inc/namedlg.hxx
index 627fc8d3fee0..f86dcc8d6bb9 100644
--- a/sc/source/ui/inc/namedlg.hxx
+++ b/sc/source/ui/inc/namedlg.hxx
@@ -81,7 +81,7 @@ private:
void Init();
void UpdateChecks();
void UpdateNames();
- void CalcCurTableAssign( String& aAssign, USHORT nPos );
+ void CalcCurTableAssign( String& aAssign, ScRangeData* pRangeData );
// Handler:
DECL_LINK( OkBtnHdl, void * );
diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx
index b6b2801a3cc2..2d303f1ce615 100644
--- a/sc/source/ui/namedlg/namedlg.cxx
+++ b/sc/source/ui/namedlg/namedlg.cxx
@@ -271,11 +271,9 @@ void ScNameDlg::SetActive()
void ScNameDlg::UpdateChecks()
{
- sal_uInt16 nCurPos=0;
-
- if(aLocalRangeName.SearchName( aEdName.GetText(), nCurPos))
+ const ScRangeData* pData = aLocalRangeName.findByName(aEdName.GetText());
+ if (pData)
{
- ScRangeData* pData=(ScRangeData*)(aLocalRangeName.At( nCurPos ));
aBtnCriteria .Check( pData->HasType( RT_CRITERIA ) );
aBtnPrintArea.Check( pData->HasType( RT_PRINTAREA ) );
aBtnColHeader.Check( pData->HasType( RT_COLHEADER ) );
@@ -359,10 +357,8 @@ void ScNameDlg::UpdateNames()
//----------------------------------------------------------------------------
-void ScNameDlg::CalcCurTableAssign( String& aAssign, USHORT nCurPos )
+void ScNameDlg::CalcCurTableAssign( String& aAssign, ScRangeData* pRangeData )
{
- ScRangeData* pRangeData = (ScRangeData*)(aLocalRangeName.At( nCurPos ));
-
if ( pRangeData )
{
rtl::OUStringBuffer sBuffer;
@@ -448,13 +444,11 @@ IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG )
// in ein Token-Array uebersetzt werden?)
if ( 0 == pNewEntry->GetErrCode() )
{
- USHORT nFoundAt = 0;
- // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern)
- if ( aLocalRangeName.SearchName( aNewEntry, nFoundAt ) )
- { // alten Index uebernehmen
- pNewEntry->SetIndex(
- ((ScRangeData*)(aLocalRangeName.At(nFoundAt)))->GetIndex() );
- aLocalRangeName.AtFree( nFoundAt );
+ ScRangeData* pData = aLocalRangeName.findByName(aNewEntry);
+ if (pData)
+ {
+ pNewEntry->SetIndex(pData->GetIndex());
+ aLocalRangeName.erase(*pData);
}
else
pSaveObj->Clear();
@@ -503,10 +497,9 @@ IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG )
IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG )
{
- USHORT nRemoveAt = 0;
const String aStrEntry = aEdName.GetText();
-
- if ( aLocalRangeName.SearchName( aStrEntry, nRemoveAt ) )
+ ScRangeData* pData = aLocalRangeName.findByName(aStrEntry);
+ if (pData)
{
String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
String aMsg = aStrDelMsg.GetToken( 0, '#' );
@@ -517,7 +510,7 @@ IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG )
if ( RET_YES ==
QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() )
{
- aLocalRangeName.AtFree( nRemoveAt );
+ aLocalRangeName.erase(*pData);
UpdateNames();
UpdateChecks();
bSaved=FALSE;
@@ -536,21 +529,15 @@ IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG )
IMPL_LINK( ScNameDlg, NameSelectHdl, void *, EMPTYARG )
{
- USHORT nAtPos;
-
- if ( aLocalRangeName.SearchName( aEdName.GetText(), nAtPos ) )
+ ScRangeData* pData = aLocalRangeName.findByName(aEdName.GetText());
+ if (pData)
{
- String aSymbol;
- ScRangeData* pData = (ScRangeData*)(aLocalRangeName.At( nAtPos ));
-
- if ( pData )
- {
- pData->GetSymbol( aSymbol );
- CalcCurTableAssign( aSymbol, nAtPos );
- aEdAssign.SetText( aSymbol );
- aBtnAdd.SetText( aStrModify );
- theCurSel = Selection( 0, SELECTION_MAX );
- }
+ String aSymbol;
+ pData->GetSymbol( aSymbol );
+ CalcCurTableAssign( aSymbol, pData );
+ aEdAssign.SetText( aSymbol );
+ aBtnAdd.SetText( aStrModify );
+ theCurSel = Selection( 0, SELECTION_MAX );
}
UpdateChecks();
return 0;
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index 428c39f038b5..e6fe9aae19fc 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -1013,9 +1013,11 @@ BOOL lcl_GetRange( ScDocument* pDoc, USHORT nType, const String& rName, ScRange&
{
ScRangeName* pList = pDoc->GetRangeName();
if (pList)
- if (pList->SearchName( rName, nPos ))
- if ( (*pList)[nPos]->IsValidReference( rRange ) )
- bFound = TRUE;
+ {
+ const ScRangeData* p = pList->findByName(rName);
+ if (p && p->IsValidReference(rRange))
+ bFound = true;
+ }
}
else if ( nType == SC_CONTENT_DBAREA )
{
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
index 827ab7633e18..7ed1fc49c84f 100644
--- a/sc/source/ui/unoobj/nameuno.cxx
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -133,12 +133,9 @@ ScRangeData* ScNamedRangeObj::GetRangeData_Impl()
ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
if (pNames)
{
- sal_uInt16 nPos = 0;
- if (pNames->SearchName( aName, nPos ))
- {
- pRet = (*pNames)[nPos];
+ pRet = pNames->findByName(aName);
+ if (pRet)
pRet->ValidateTabRefs(); // adjust relative tab refs to valid tables
- }
}
}
return pRet;
@@ -150,6 +147,8 @@ void ScNamedRangeObj::Modify_Impl( const String* pNewName, const ScTokenArray* p
const ScAddress* pNewPos, const sal_uInt16* pNewType,
const formula::FormulaGrammar::Grammar eGrammar )
{
+#if NEW_RANGE_NAME
+#else
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
@@ -199,6 +198,7 @@ void ScNamedRangeObj::Modify_Impl( const String* pNewName, const ScTokenArray* p
}
}
}
+#endif
}
@@ -555,8 +555,6 @@ void SAL_CALL ScNamedRangesObj::addNewByName( const rtl::OUString& aName,
sal_Int32 nUnoType ) throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- String aNameStr(aName);
- String aContStr(aContent);
ScAddress aPos( (SCCOL)aPosition.Column, (SCROW)aPosition.Row, aPosition.Sheet );
sal_uInt16 nNewType = RT_NAME;
@@ -570,12 +568,11 @@ void SAL_CALL ScNamedRangesObj::addNewByName( const rtl::OUString& aName,
{
ScDocument* pDoc = pDocShell->GetDocument();
ScRangeName* pNames = pDoc->GetRangeName();
- USHORT nIndex = 0;
- if (pNames && !pNames->SearchName(aNameStr, nIndex))
+ if (pNames && !pNames->findByName(aName))
{
ScRangeName* pNewRanges = new ScRangeName( *pNames );
// GRAM_PODF_A1 for API compatibility.
- ScRangeData* pNew = new ScRangeData( pDoc, aNameStr, aContStr,
+ ScRangeData* pNew = new ScRangeData( pDoc, aName, aContent,
aPos, nNewType,formula::FormulaGrammar::GRAM_PODF_A1 );
if ( pNewRanges->Insert(pNew) )
{
@@ -626,23 +623,21 @@ void SAL_CALL ScNamedRangesObj::removeByName( const rtl::OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- BOOL bDone = FALSE;
+ bool bDone = false;
if (pDocShell)
{
ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
if (pNames)
{
- String aString(aName);
- sal_uInt16 nPos = 0;
- if (pNames->SearchName( aString, nPos ))
- if ( lcl_UserVisibleName((*pNames)[nPos]) )
- {
- ScRangeName* pNewRanges = new ScRangeName(*pNames);
- pNewRanges->AtFree(nPos);
- ScDocFunc aFunc(*pDocShell);
- aFunc.SetNewRangeNames( pNewRanges, mbModifyAndBroadcast);
- bDone = TRUE;
- }
+ const ScRangeData* pData = pNames->findByName(aName);
+ if (pData && lcl_UserVisibleName(pData))
+ {
+ ScRangeName* pNewRanges = new ScRangeName(*pNames);
+ pNewRanges->erase(*pData);
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.SetNewRangeNames( pNewRanges, mbModifyAndBroadcast);
+ bDone = true;
+ }
}
}
@@ -798,10 +793,9 @@ sal_Bool SAL_CALL ScNamedRangesObj::hasByName( const rtl::OUString& aName )
ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
if (pNames)
{
- sal_uInt16 nPos = 0;
- if (pNames->SearchName( String(aName), nPos ))
- if ( lcl_UserVisibleName((*pNames)[nPos]) )
- return sal_True;
+ const ScRangeData* pData = pNames->findByName(aName);
+ if (pData && lcl_UserVisibleName(pData))
+ return sal_True;
}
}
return sal_False;
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index bf61f22e1fa1..ac9f3a6b7cb1 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2934,11 +2934,11 @@ BOOL ScViewFunc::InsertName( const String& rName, const String& rSymbol,
pDoc->CompileNameFormula( TRUE ); // CreateFormulaString
// Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern)
- USHORT nFoundAt;
- if ( pList->SearchName( rName, nFoundAt ) )
+ ScRangeData* pData = pList->findByName(rName);
+ if (pData)
{ // alten Index uebernehmen
- pNewEntry->SetIndex( ((ScRangeData*)pList->At(nFoundAt))->GetIndex() );
- pList->AtFree( nFoundAt );
+ pNewEntry->SetIndex(pData->GetIndex());
+ pList->erase(*pData);
}
if ( pList->Insert( pNewEntry ) )