return by ref from ScDocument::GetRangeName

to make it obvious that it never returns nullptr

Change-Id: I8218f921583c49fcbd57a1693716317423a9febe
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/941
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 8a63916739a316a9432b47862d2212c1e689f9cf)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209451
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Noel Grandin
2026-08-21 16:26:06 +02:00
committed by Xisco Fauli
parent c4b307b8d2
commit 37d0bc1d77
60 changed files with 246 additions and 289 deletions
+1 -1
View File
@@ -783,7 +783,7 @@ public:
SC_DLLPUBLIC void SetAllRangeNames(const std::map<OUString, ScRangeName>& rRangeMap);
SC_DLLPUBLIC void GetRangeNameMap(std::map<OUString, ScRangeName*>& rRangeName);
SC_DLLPUBLIC ScRangeName* GetRangeName(SCTAB nTab) const;
SC_DLLPUBLIC ScRangeName* GetRangeName() const;
SC_DLLPUBLIC ScRangeName& GetRangeName() const;
void SetRangeName(SCTAB nTab, std::unique_ptr<ScRangeName> pNew);
void SetRangeName( std::unique_ptr<ScRangeName> pNewRangeName );
bool IsAddressInRangeName( RangeNameScope eScope, const ScAddress& rAddress);
+1 -1
View File
@@ -256,7 +256,7 @@ public:
class SC_DLLPUBLIC ScAreaNameIterator
{
private:
ScRangeName* pRangeName;
ScRangeName& rRangeName;
ScDBCollection* pDBCollection;
ScRangeName::const_iterator maRNPos;
ScRangeName::const_iterator maRNEnd;
+1 -1
View File
@@ -935,7 +935,7 @@ bool ScUcalcTestBase::insertRangeNames(
OUString ScUcalcTestBase::getRangeByName(const ScDocument* pDoc, const OUString& aRangeName)
{
ScRangeData* pName = pDoc->GetRangeName()->findByUpperName(aRangeName.toAsciiUpperCase());
ScRangeData* pName = pDoc->GetRangeName().findByUpperName(aRangeName.toAsciiUpperCase());
CPPUNIT_ASSERT(pName);
return pName->GetSymbol(pDoc->GetGrammar());
}
+2 -2
View File
@@ -165,7 +165,7 @@ void ScJumboSheetsTest::testRoundtripNamedRanges(const char* name, TestFilter eF
ScDocument* pDoc = getScDoc();
for (const auto& range : ranges)
{
ScRangeData* rangeData = pDoc->GetRangeName()->findByUpperName(range.first);
ScRangeData* rangeData = pDoc->GetRangeName().findByUpperName(range.first);
CPPUNIT_ASSERT(rangeData);
CPPUNIT_ASSERT_EQUAL(range.second, rangeData->GetSymbol());
}
@@ -176,7 +176,7 @@ void ScJumboSheetsTest::testRoundtripNamedRanges(const char* name, TestFilter eF
ScDocument* pDoc = getScDoc();
for (const auto& range : ranges)
{
ScRangeData* rangeData = pDoc->GetRangeName()->findByUpperName(range.first);
ScRangeData* rangeData = pDoc->GetRangeName().findByUpperName(range.first);
CPPUNIT_ASSERT(rangeData);
CPPUNIT_ASSERT_EQUAL(range.second, rangeData->GetSymbol());
}
+2 -2
View File
@@ -1247,7 +1247,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testNamedRangeBugfdo62729)
createScDoc("ods/fdo62729.ods");
ScDocument* pDoc = getScDoc();
ScRangeName* pNames = pDoc->GetRangeName();
ScRangeName* pNames = &pDoc->GetRangeName();
//should be just a single named range
CPPUNIT_ASSERT_EQUAL(size_t(1), pNames->size());
pDoc->DeleteTab(0);
@@ -1257,7 +1257,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testNamedRangeBugfdo62729)
pDoc = getScDoc();
pNames = pDoc->GetRangeName();
pNames = &pDoc->GetRangeName();
//after reload should still have a named range
CPPUNIT_ASSERT_EQUAL(size_t(1), pNames->size());
#endif
+1 -1
View File
@@ -1350,7 +1350,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest3, testAbsNamedRangeHTML)
pDocSh->DoHardRecalc();
ScDocument* pDoc = getScDoc();
ScRangeData* pRangeData = pDoc->GetRangeName()->findByUpperName(u"HTML_1"_ustr);
ScRangeData* pRangeData = pDoc->GetRangeName().findByUpperName(u"HTML_1"_ustr);
ScSingleRefData& rRef
= static_cast<ScDoubleRefToken*>(pRangeData->GetCode()->FirstToken())->GetSingleRef();
// see tdf#119141 for the reason why this isn't Sheet1.HTML_1
+1 -1
View File
@@ -979,7 +979,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest5, testTdf157318)
// Check if there is one global named range
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1),
static_cast<sal_uInt16>(pDoc->GetRangeName()->size()));
static_cast<sal_uInt16>(pDoc->GetRangeName().size()));
// Check if there is one named range in the first sheet
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1),
+14 -14
View File
@@ -49,7 +49,7 @@ void testRangeNameImpl(const ScDocument& rDoc)
{
//check one range data per sheet and one global more detailed
//add some more checks here
ScRangeData* pRangeData = rDoc.GetRangeName()->findByUpperName(u"GLOBAL1"_ustr);
ScRangeData* pRangeData = rDoc.GetRangeName().findByUpperName(u"GLOBAL1"_ustr);
CPPUNIT_ASSERT_MESSAGE("range name Global1 not found", pRangeData);
double aValue = rDoc.GetValue(1, 0, 0);
CPPUNIT_ASSERT_EQUAL_MESSAGE("range name Global1 should reference Sheet1.A1", 1.0, aValue);
@@ -528,12 +528,12 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenRangeNameODS)
ScDocument* pDoc = getScDoc();
// This named range is set to "hidden"
ScRangeData* pRangeData1 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE1"_ustr);
ScRangeData* pRangeData1 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(sheet::NamedRangeFlag::HIDDEN),
pRangeData1->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
// This named range is visible
ScRangeData* pRangeData2 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE2"_ustr);
ScRangeData* pRangeData2 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE2"_ustr);
CPPUNIT_ASSERT(pRangeData2);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(0),
pRangeData2->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
@@ -546,11 +546,11 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenRangeNameODS)
// Check if both named ranges are hidden after saving and reloading
saveAndReload(TestFilter::ODS);
pDoc = getScDoc();
pRangeData1 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE1"_ustr);
pRangeData1 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(sheet::NamedRangeFlag::HIDDEN),
pRangeData1->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
pRangeData2 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE2"_ustr);
pRangeData2 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE2"_ustr);
CPPUNIT_ASSERT(pRangeData2);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(sheet::NamedRangeFlag::HIDDEN),
pRangeData2->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
@@ -562,12 +562,12 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenRangeNameXLSX)
ScDocument* pDoc = getScDoc();
// This named range is set to "hidden"
ScRangeData* pRangeData1 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE1"_ustr);
ScRangeData* pRangeData1 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(sheet::NamedRangeFlag::HIDDEN),
pRangeData1->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
// This named range is visible
ScRangeData* pRangeData2 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE2"_ustr);
ScRangeData* pRangeData2 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE2"_ustr);
CPPUNIT_ASSERT(pRangeData2);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(0),
pRangeData2->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
@@ -575,11 +575,11 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenRangeNameXLSX)
// Save as ODS and test if the named ranges are still with the correct hidden flag
saveAndReload(TestFilter::ODS);
pDoc = getScDoc();
pRangeData1 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE1"_ustr);
pRangeData1 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(sheet::NamedRangeFlag::HIDDEN),
pRangeData1->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
pRangeData2 = pDoc->GetRangeName()->findByUpperName(u"NAMEDRANGE2"_ustr);
pRangeData2 = pDoc->GetRangeName().findByUpperName(u"NAMEDRANGE2"_ustr);
CPPUNIT_ASSERT(pRangeData2);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(0),
pRangeData2->GetUnoType() & sheet::NamedRangeFlag::HIDDEN);
@@ -591,7 +591,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenNamedExpression)
ScDocument* pDoc = getScDoc();
// Adds two hidden named expressions and two non-hidden named expressions
ScRangeName* pNamedRanges = pDoc->GetRangeName();
ScRangeName* pNamedRanges = &pDoc->GetRangeName();
ScRangeData* pRangeData1 = new ScRangeData(*pDoc, u"NAME1"_ustr, u"100"_ustr);
pRangeData1->AddType(ScRangeData::Type::Hidden);
pNamedRanges->insert(pRangeData1);
@@ -607,7 +607,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenNamedExpression)
// Save and reload to test whether the named expressions retain the hidden where applicable
saveAndReload(TestFilter::ODS);
pDoc = getScDoc();
pNamedRanges = pDoc->GetRangeName();
pNamedRanges = &pDoc->GetRangeName();
CPPUNIT_ASSERT_EQUAL(size_t(4), pNamedRanges->size());
pRangeData1 = pNamedRanges->findByUpperName(u"NAME1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
@@ -633,12 +633,12 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testHiddenNamedExpressionODS)
ScDocument* pDoc = getScDoc();
// The document has 2 named expressions; the first is hidden; the second is visible
ScRangeName* pNamedRanges = pDoc->GetRangeName();
ScRangeData* pRangeData1 = pNamedRanges->findByUpperName(u"NAME1"_ustr);
ScRangeName& rNamedRanges = pDoc->GetRangeName();
ScRangeData* pRangeData1 = rNamedRanges.findByUpperName(u"NAME1"_ustr);
CPPUNIT_ASSERT(pRangeData1);
CPPUNIT_ASSERT_EQUAL(ScRangeData::Type::Hidden, pRangeData1->GetType());
CPPUNIT_ASSERT_EQUAL(u"100"_ustr, pRangeData1->GetSymbol());
ScRangeData* pRangeData2 = pNamedRanges->findByUpperName(u"NAME2"_ustr);
ScRangeData* pRangeData2 = rNamedRanges.findByUpperName(u"NAME2"_ustr);
CPPUNIT_ASSERT(pRangeData2);
CPPUNIT_ASSERT_EQUAL(ScRangeData::Type::Name, pRangeData2->GetType());
CPPUNIT_ASSERT_EQUAL(u"200"_ustr, pRangeData2->GetSymbol());
+2 -2
View File
@@ -1507,9 +1507,9 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testNamedExpressionsXLSXML_Global)
CPPUNIT_ASSERT_EQUAL(u"=SUM(MyRange2)"_ustr,
pDoc->GetFormula(aPos.Col(), aPos.Row(), aPos.Tab()));
const ScRangeData* pRD = pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
const ScRangeData* pRD = pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pRD);
pRD = pDoc->GetRangeName()->findByUpperName(u"MYRANGE2"_ustr);
pRD = pDoc->GetRangeName().findByUpperName(u"MYRANGE2"_ustr);
CPPUNIT_ASSERT(pRD);
}
+2 -2
View File
@@ -399,8 +399,8 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest5, testTdf94627)
ScDocument* pDoc = getScDoc();
ScRangeName* pRangeName = pDoc->GetRangeName();
ScRangeData* pRangeData = pRangeName->findByUpperName("NAME1");
ScRangeName& rRangeName = pDoc->GetRangeName();
ScRangeData* pRangeData = rRangeName.findByUpperName("NAME1");
CPPUNIT_ASSERT(pRangeData);
OUString aFormula = pRangeData->GetSymbol();
+2 -2
View File
@@ -3173,9 +3173,9 @@ CPPUNIT_TEST_FIXTURE(SyncTest, testSync_InsertNameList_DefaultAndSheetView)
int nView3ID = aView3.getViewID();
// Add a named range so InsertNameList has something to insert
ScRangeName* pGlobalNames = pDocument->GetRangeName();
ScRangeName& rGlobalNames = pDocument->GetRangeName();
ScRangeData* pRangeData = new ScRangeData(*pDocument, u"TestRange"_ustr, u"$A$10:$B$20"_ustr);
pGlobalNames->insert(pRangeData);
rGlobalNames.insert(pRangeData);
// Create sheet view 1
{
+4 -5
View File
@@ -1971,13 +1971,12 @@ CPPUNIT_TEST_FIXTURE(Test, testNamedRange)
CPPUNIT_ASSERT_MESSAGE("Failed to insert range names.", bSuccess);
m_pDoc->SetRangeName(std::move(pNames));
ScRangeName* pNewRanges = m_pDoc->GetRangeName();
CPPUNIT_ASSERT(pNewRanges);
ScRangeName& rNewRanges = m_pDoc->GetRangeName();
// Make sure the index lookup does the right thing.
for (const auto& rName : aNames)
{
const ScRangeData* p = pNewRanges->findByIndex(rName.mnIndex);
const ScRangeData* p = rNewRanges.findByIndex(rName.mnIndex);
CPPUNIT_ASSERT_MESSAGE("lookup of range name by index failed.", p);
OUString aName = p->GetName();
CPPUNIT_ASSERT_MESSAGE("wrong range name is retrieved.", aName.equalsAscii(rName.mpName));
@@ -1991,12 +1990,12 @@ CPPUNIT_TEST_FIXTURE(Test, testNamedRange)
ASSERT_DOUBLES_EQUAL_MESSAGE ("calculation failed", 1.0, result);
// Test copy-ability of range names.
std::unique_ptr<ScRangeName> pCopiedRanges(new ScRangeName(*pNewRanges));
std::unique_ptr<ScRangeName> pCopiedRanges(new ScRangeName(rNewRanges));
m_pDoc->SetRangeName(std::move(pCopiedRanges));
// Make sure the index lookup still works.
for (const auto& rName : aNames)
{
const ScRangeData* p = m_pDoc->GetRangeName()->findByIndex(rName.mnIndex);
const ScRangeData* p = m_pDoc->GetRangeName().findByIndex(rName.mnIndex);
CPPUNIT_ASSERT_MESSAGE("lookup of range name by index failed with the copied instance.", p);
OUString aName = p->GetName();
CPPUNIT_ASSERT_MESSAGE("wrong range name is retrieved with the copied instance.", aName.equalsAscii(rName.mpName));
+1 -1
View File
@@ -402,7 +402,7 @@ CPPUNIT_TEST_FIXTURE(TestCopyPaste, testCopyPaste)
m_pDoc->CopyFromClip(aRange, aMark, InsertDeleteFlags::ALL, nullptr, &aClipDoc2);
// The global2 range must not have changed.
pGlobal2 = m_pDoc->GetRangeName()->findByUpperName(u"GLOBAL2"_ustr);
pGlobal2 = m_pDoc->GetRangeName().findByUpperName(u"GLOBAL2"_ustr);
CPPUNIT_ASSERT_MESSAGE("GLOBAL2 name not found", pGlobal2);
OUString aSymbol = pGlobal2->GetSymbol();
CPPUNIT_ASSERT_EQUAL_MESSAGE("GLOBAL2 named range changed", aGlobal2Symbol, aSymbol);
+34 -37
View File
@@ -112,9 +112,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaCreateStringFromTokens)
{ false, "sheetx", "Test.J1" }
};
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
ScRangeName* pSheetNames = m_pDoc->GetRangeName(0);
CPPUNIT_ASSERT_MESSAGE("Failed to obtain global named expression object.", pGlobalNames);
CPPUNIT_ASSERT_MESSAGE("Failed to obtain sheet-local named expression object.", pSheetNames);
for (size_t i = 0; i < SAL_N_ELEMENTS(aNames); ++i)
@@ -125,7 +124,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaCreateStringFromTokens)
if (aNames[i].bGlobal)
{
bool bInserted = pGlobalNames->insert(pName);
bool bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bInserted);
}
else
@@ -2473,7 +2472,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateInsertColumns)
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(3,3,0)));
// Check that the named reference points to the moved cell, now D2.
ScRangeData* pName = m_pDoc->GetRangeName()->findByUpperName(u"ROWRELATIVERANGE"_ustr);
ScRangeData* pName = m_pDoc->GetRangeName().findByUpperName(u"ROWRELATIVERANGE"_ustr);
CPPUNIT_ASSERT(pName);
OUString aSymbol = pName->GetSymbol(aNamePos, formula::FormulaGrammar::GRAM_ENGLISH);
CPPUNIT_ASSERT_EQUAL(u"$Formula.$D2"_ustr, aSymbol);
@@ -2484,7 +2483,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateInsertColumns)
CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(4,1,0)));
// Check that the named column reference points to the moved column, now D.
pName = m_pDoc->GetRangeName()->findByUpperName(u"ENTIRECOLUMN"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"ENTIRECOLUMN"_ustr);
CPPUNIT_ASSERT(pName);
aSymbol = pName->GetSymbol(aNamePos, formula::FormulaGrammar::GRAM_ENGLISH);
CPPUNIT_ASSERT_EQUAL(u"$D:$D"_ustr, aSymbol);
@@ -2496,7 +2495,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateInsertColumns)
// Check that the named row reference still points to the same entire row
// and does not have a #REF! error due to inserted columns.
pName = m_pDoc->GetRangeName()->findByUpperName(u"ENTIREROW"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"ENTIREROW"_ustr);
CPPUNIT_ASSERT(pName);
aSymbol = pName->GetSymbol(aNamePos, formula::FormulaGrammar::GRAM_ENGLISH);
CPPUNIT_ASSERT_EQUAL(u"$2:$2"_ustr, aSymbol);
@@ -3372,13 +3371,12 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
m_pDoc->SetValue(ScAddress(2,4,0), 4);
// Add a named expression that references the immediate left cell.
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
CPPUNIT_ASSERT_MESSAGE("Failed to obtain global named expression object.", pGlobalNames);
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
ScRangeData* pName = new ScRangeData(
*m_pDoc, u"ToLeft"_ustr, u"RC[-1]"_ustr, ScAddress(2,1,0),
ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1);
bool bInserted = pGlobalNames->insert(pName);
bool bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bInserted);
// Insert formulas in D2:D5 using the named expression.
@@ -3419,7 +3417,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
// Insert a new named expression that references these values as absolute range.
pName = new ScRangeData(
*m_pDoc, u"MyRange"_ustr, u"$B$10:$B$12"_ustr, ScAddress(0,0,0), ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE);
bInserted = pGlobalNames->insert(pName);
bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bInserted);
// Set formula at C8 that references this named expression.
@@ -3430,7 +3428,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
m_pDoc->InsertCol(ScRange(1,9,0,2,11,0));
// This should shift the absolute range B10:B12 that MyRange references.
pName = pGlobalNames->findByUpperName(u"MYRANGE"_ustr);
pName = rGlobalNames.findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT_MESSAGE("Failed to find named expression 'MyRange' in the global scope.", pName);
OUString aExpr = pName->GetSymbol();
CPPUNIT_ASSERT_EQUAL(u"$D$10:$D$12"_ustr, aExpr);
@@ -3450,7 +3448,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
m_pDoc->GetName(1, aName);
CPPUNIT_ASSERT_EQUAL(u"Formula"_ustr, aName);
pName = pGlobalNames->findByUpperName(u"MYRANGE"_ustr);
pName = rGlobalNames.findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT_MESSAGE("Failed to find named expression 'MyRange' in the global scope.", pName);
m_pDoc->SetValue(ScAddress(3,9,1), 10);
@@ -3463,7 +3461,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
m_pDoc->GetName(0, aName);
CPPUNIT_ASSERT_EQUAL(u"Formula"_ustr, aName);
pName = pGlobalNames->findByUpperName(u"MYRANGE"_ustr);
pName = rGlobalNames.findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT_MESSAGE("Failed to find named expression 'MyRange' in the global scope.", pName);
m_pDoc->SetValue(ScAddress(3,9,0), 11);
@@ -3471,11 +3469,11 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateName)
// Clear all and start over.
clearRange(m_pDoc, ScRange(0,0,0,100,100,0));
pGlobalNames->clear();
rGlobalNames.clear();
pName = new ScRangeData(
*m_pDoc, u"MyRange"_ustr, u"$B$1:$C$6"_ustr, ScAddress(0,0,0), ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE);
bInserted = pGlobalNames->insert(pName);
bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bInserted);
aExpr = pName->GetSymbol();
CPPUNIT_ASSERT_EQUAL(u"$B$1:$C$6"_ustr, aExpr);
@@ -3509,7 +3507,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameMove)
m_pDoc->SetString(ScAddress(0,9,0), u"=SUM(MyRange)"_ustr);
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0,9,0)));
ScRangeData* pData = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
ScRangeData* pData = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pData);
OUString aSymbol = pData->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$Test.$B$2:$B$4"_ustr, aSymbol);
@@ -3532,7 +3530,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameMove)
// Undo and check.
pUndoMgr->Undo();
pData = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pData = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pData);
aSymbol = pData->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$Test.$B$2:$B$4"_ustr, aSymbol);
@@ -3541,7 +3539,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameMove)
// Redo and check.
pUndoMgr->Redo();
pData = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pData = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pData);
aSymbol = pData->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$Test.$D$3:$D$5"_ustr, aSymbol);
@@ -3568,7 +3566,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameMove)
// Clear and start over.
clearSheet(m_pDoc, 0);
m_pDoc->GetRangeName()->clear();
m_pDoc->GetRangeName().clear();
// Set value to B2.
m_pDoc->SetValue(ScAddress(1,1,0), 2.0);
@@ -3615,7 +3613,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameExpandRef)
ScMarkData aMark(m_pDoc->GetSheetLimits());
aMark.SelectOneTable(0);
rFunc.InsertCells(ScRange(0,3,0,m_pDoc->MaxCol(),3,0), &aMark, INS_INSROWS_BEFORE, false, true);
ScRangeData* pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
ScRangeData* pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
OUString aSymbol = pName->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$A$1:$A$4"_ustr, aSymbol);
@@ -3628,7 +3626,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameExpandRef)
// Insert a new column at column 2, which should not expand the named
// range as it is only one column wide.
rFunc.InsertCells(ScRange(1,0,0,1,m_pDoc->MaxRow(),0), &aMark, INS_INSCOLS_BEFORE, false, true);
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
aSymbol = pName->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$A$1:$A$4"_ustr, aSymbol);
@@ -3640,7 +3638,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameExpandRef)
CPPUNIT_ASSERT_EQUAL(8.0, m_pDoc->GetValue(ScAddress(0,6,0)));
// Clear the document and start over.
m_pDoc->GetRangeName()->clear();
m_pDoc->GetRangeName().clear();
clearSheet(m_pDoc, 0);
// Set values to B4:B6.
@@ -3658,14 +3656,14 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameExpandRef)
// Insert rows over 3:5 which should expand the range by 3 rows.
rFunc.InsertCells(ScRange(0,2,0,m_pDoc->MaxCol(),4,0), &aMark, INS_INSROWS_BEFORE, false, true);
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
aSymbol = pName->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$B$4:$B$9"_ustr, aSymbol);
// Clear the document and start over.
m_pDoc->GetRangeName()->clear();
m_pDoc->GetRangeName().clear();
clearSheet(m_pDoc, 0);
// Set values to A1:A3.
@@ -3730,7 +3728,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameExpandRef2)
// Insert a new column at column 3, which should expand the named
rFunc.InsertCells(ScRange(1,0,0,1,m_pDoc->MaxRow(),0), &aMark, INS_INSCOLS_BEFORE, false, true);
ScRangeData* pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
ScRangeData* pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
OUString aSymbol = pName->GetSymbol(m_pDoc->GetGrammar());
CPPUNIT_ASSERT_EQUAL(u"$A$1:$C$3"_ustr, aSymbol);
@@ -3746,7 +3744,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
bool bInserted = m_pDoc->InsertNewRangeName(u"MyRange"_ustr, ScAddress(0,0,0), u"$B$2:$B$4"_ustr);
CPPUNIT_ASSERT(bInserted);
const ScRangeData* pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
const ScRangeData* pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
sc::TokenStringContext aCxt(*m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH);
@@ -3758,7 +3756,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
bInserted = m_pDoc->InsertNewRangeName(u"MyAddress"_ustr, ScAddress(0,0,0), u"$B$3"_ustr);
CPPUNIT_ASSERT(bInserted);
const ScRangeData* pName2 = m_pDoc->GetRangeName()->findByUpperName(u"MYADDRESS"_ustr);
const ScRangeData* pName2 = m_pDoc->GetRangeName().findByUpperName(u"MYADDRESS"_ustr);
CPPUNIT_ASSERT(pName2);
sc::TokenStringContext aCxt2(*m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH);
@@ -3792,7 +3790,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
pUndoMgr->Undo();
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
pCode = pName->GetCode();
@@ -3802,7 +3800,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
// Undo again and check.
pUndoMgr->Undo();
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
pCode = pName->GetCode();
@@ -3818,14 +3816,14 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
// Undo and check.
pUndoMgr->Undo();
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
pCode = pName->GetCode();
aExpr = pCode->CreateString(aCxt, ScAddress(0,0,0));
CPPUNIT_ASSERT_EQUAL(u"$B$2:$B$4"_ustr, aExpr);
pName2 = m_pDoc->GetRangeName()->findByUpperName(u"MYADDRESS"_ustr);
pName2 = m_pDoc->GetRangeName().findByUpperName(u"MYADDRESS"_ustr);
CPPUNIT_ASSERT(pName2);
pCode2 = pName2->GetCode();
@@ -3838,14 +3836,14 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDeleteRow)
aMark2.SelectOneTable(1);
rFunc.DeleteCells(ScRange(0,2,1,m_pDoc->MaxCol(),2,1), &aMark2, DelCellCmd::CellsUp, true);
pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
pCode = pName->GetCode();
aExpr = pCode->CreateString(aCxt, ScAddress(0,0,0));
CPPUNIT_ASSERT_EQUAL(u"$B$2:$B$4"_ustr, aExpr);
pName2 = m_pDoc->GetRangeName()->findByUpperName(u"MYADDRESS"_ustr);
pName2 = m_pDoc->GetRangeName().findByUpperName(u"MYADDRESS"_ustr);
CPPUNIT_ASSERT(pName2);
pCode2 = pName2->GetCode();
@@ -4193,7 +4191,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdateNameDelete)
bool bInserted = m_pDoc->InsertNewRangeName(u"MyRange"_ustr, ScAddress(0,0,0), u"$Test.$B$1"_ustr);
CPPUNIT_ASSERT(bInserted);
const ScRangeData* pName = m_pDoc->GetRangeName()->findByUpperName(u"MYRANGE"_ustr);
const ScRangeData* pName = m_pDoc->GetRangeName().findByUpperName(u"MYRANGE"_ustr);
CPPUNIT_ASSERT(pName);
m_pDoc->DeleteCol(1, 0, 3, 0, 0, 1);
@@ -4770,13 +4768,12 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFuncSUBTOTAL)
m_pDoc->SetValue(ScAddress(2, i, 0), i + 1);
// Add a named expression for a function.
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
CPPUNIT_ASSERT_MESSAGE("Failed to obtain global named expression object.", pGlobalNames);
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
ScRangeData* pName = new ScRangeData(
*m_pDoc, u"MyRelative"_ustr, u"$C1:$C$1000"_ustr, ScAddress(2, 999, 0),
ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE);
bool bInserted = pGlobalNames->insert(pName);
bool bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bInserted);
for (size_t i = 0; i < 1025; i++)
+12 -14
View File
@@ -1296,9 +1296,9 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFunc_MATCH_INDIRECT)
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto calculation.
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
ScRangeData* pRangeData = new ScRangeData(*m_pDoc, u"RoleAssignment"_ustr, u"$D$4:$D$13"_ustr);
pGlobalNames->insert(pRangeData);
rGlobalNames.insert(pRangeData);
// D6: data to match, in 3rd row of named range.
m_pDoc->SetString(3, 5, 0, u"Test1"_ustr);
@@ -1905,9 +1905,9 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testExternalRangeName)
rExtDoc.InsertTab(0, u"Data1"_ustr);
rExtDoc.SetValue(0, 0, 0, 123.456);
ScRangeName* pRangeName = rExtDoc.GetRangeName();
ScRangeName& rRangeName = rExtDoc.GetRangeName();
ScRangeData* pRangeData = new ScRangeData(rExtDoc, u"ExternalName"_ustr, u"$Data1.$A$1"_ustr);
pRangeName->insert(pRangeData);
rRangeName.insert(pRangeData);
m_pDoc->InsertTab(0, u"Test Sheet"_ustr);
m_pDoc->SetString(0, 1, 0, u"='file:///extdata.fake'#ExternalName"_ustr);
@@ -2487,8 +2487,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncTableRef)
{
// Insert named expressions.
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
CPPUNIT_ASSERT_MESSAGE("Failed to obtain global named expression object.", pGlobalNames);
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
for (size_t i = 0; i < SAL_N_ELEMENTS(aNames); ++i)
{
@@ -2499,7 +2498,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncTableRef)
= new ScRangeData(*m_pDoc, OUString::createFromAscii(aNames[i].pName),
OUString::createFromAscii(aNames[i].pExpr), ScAddress(2, 4, 0),
ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE);
bool bInserted = pGlobalNames->insert(pName);
bool bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE(OString(OString::Concat("Failed to insert named expression ")
+ aNames[i].pName + ".")
.getStr(),
@@ -2665,8 +2664,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncTableRef)
{
// Insert named expressions.
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
CPPUNIT_ASSERT_MESSAGE("Failed to obtain global named expression object.", pGlobalNames);
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
for (size_t i = 0; i < SAL_N_ELEMENTS(aHlNames); ++i)
{
@@ -2677,7 +2675,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncTableRef)
= new ScRangeData(*m_pDoc, OUString::createFromAscii(aHlNames[i].pName),
OUString::createFromAscii(aHlNames[i].pExpr), ScAddress(6, 12, 0),
ScRangeData::Type::Name, formula::FormulaGrammar::GRAM_NATIVE);
bool bInserted = pGlobalNames->insert(pName);
bool bInserted = rGlobalNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE(OString(OString::Concat("Failed to insert named expression ")
+ aHlNames[i].pName + ".")
.getStr(),
@@ -4186,11 +4184,11 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testIntersectionOpExcel)
{
CPPUNIT_ASSERT(m_pDoc->InsertTab(0, u"Test"_ustr));
ScRangeName* pGlobalNames = m_pDoc->GetRangeName();
ScRangeName& rGlobalNames = m_pDoc->GetRangeName();
// Horizontal cell range covering C2.
pGlobalNames->insert(new ScRangeData(*m_pDoc, u"horz"_ustr, u"$B$2:$D$2"_ustr));
rGlobalNames.insert(new ScRangeData(*m_pDoc, u"horz"_ustr, u"$B$2:$D$2"_ustr));
// Vertical cell range covering C2.
pGlobalNames->insert(new ScRangeData(*m_pDoc, u"vert"_ustr, u"$C$1:$C$3"_ustr));
rGlobalNames.insert(new ScRangeData(*m_pDoc, u"vert"_ustr, u"$C$1:$C$3"_ustr));
// Data in C2.
m_pDoc->SetValue(2, 1, 0, 1.0);
@@ -6963,7 +6961,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testImplicitIntersectionTakesOperandWhole)
{
// The wrapper encloses the whole operand, whatever form the operand takes.
m_pDoc->InsertTab(0, u"Sheet1"_ustr);
m_pDoc->GetRangeName()->insert(
m_pDoc->GetRangeName().insert(
new ScRangeData(*m_pDoc, u"myrange"_ustr, u"$Sheet1.$A$1:$A$3"_ustr, ScAddress(1, 0, 0)));
// A name reaches the writer as its own token rather than as a push.
+3 -4
View File
@@ -792,11 +792,10 @@ CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableNamedSource)
// Name this range.
OUString aRangeName(u"MyData"_ustr);
ScRangeName* pNames = m_pDoc->GetRangeName();
CPPUNIT_ASSERT_MESSAGE("Failed to get global range name container.", pNames);
ScRangeName& rNames = m_pDoc->GetRangeName();
ScRangeData* pName = new ScRangeData(
*m_pDoc, aRangeName, aRangeStr);
bool bSuccess = pNames->insert(pName);
bool bSuccess = rNames.insert(pName);
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new name.", bSuccess);
ScSheetSourceDesc aSheetDesc(m_pDoc);
@@ -859,7 +858,7 @@ CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableNamedSource)
CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more cache stored.",
size_t(0), pDPs->GetNameCaches().size());
pNames->clear();
rNames.clear();
m_pDoc->DeleteTab(1);
m_pDoc->DeleteTab(0);
}
+1 -1
View File
@@ -1073,7 +1073,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf118983)
xGlobalSheetSettings->setExpandReferences(true);
const ScRangeData* pRD = pDoc->GetRangeName()->findByUpperName(u"TEST"_ustr);
const ScRangeData* pRD = pDoc->GetRangeName().findByUpperName(u"TEST"_ustr);
CPPUNIT_ASSERT(pRD);
CPPUNIT_ASSERT_EQUAL(u"$Test.$A$3:$D$7"_ustr, pRD->GetSymbol());
+2 -2
View File
@@ -38,8 +38,8 @@ void sc::TableContentCopier::performCopy(const ScMarkData* pOnlyMarked, ScCloneF
if (pNames)
pNames->CopyUsedNames(mnSourceTabNo, nPreviousSourceTabNo, mnTargetTabNo, mrDoc, mrDoc,
bGlobalNamesToLocal);
mrDoc.GetRangeName()->CopyUsedNames(-1, nPreviousSourceTabNo, mnTargetTabNo, mrDoc, mrDoc,
bGlobalNamesToLocal);
mrDoc.GetRangeName().CopyUsedNames(-1, nPreviousSourceTabNo, mnTargetTabNo, mrDoc, mrDoc,
bGlobalNamesToLocal);
sc::CopyToDocContext aCopyDocCxt(mrDoc);
if (mrDoc.pDBCollection)
+1 -1
View File
@@ -1051,7 +1051,7 @@ bool ScDocument::TransferTab( ScDocument& rSrcDoc, SCTAB nSrcPos,
const ScRangeName* pNames = rSrcDoc.GetRangeName( nSrcPos);
if (pNames)
pNames->CopyUsedNames( nSrcPos, nSrcPos, nDestPos, rSrcDoc, *this, bGlobalNamesToLocal);
rSrcDoc.GetRangeName()->CopyUsedNames( -1, nSrcPos, nDestPos, rSrcDoc, *this, bGlobalNamesToLocal);
rSrcDoc.GetRangeName().CopyUsedNames( -1, nSrcPos, nDestPos, rSrcDoc, *this, bGlobalNamesToLocal);
}
rSrcDoc.maTabs[nSrcPos]->CopyToTable(aCxt, 0, 0, MaxCol(), MaxRow(),
( bResultsOnly ? InsertDeleteFlags::ALL & ~InsertDeleteFlags::FORMULA : InsertDeleteFlags::ALL),
+6 -8
View File
@@ -181,11 +181,11 @@ ScRangeName* ScDocument::GetRangeName(SCTAB nTab) const
return nullptr;
}
ScRangeName* ScDocument::GetRangeName() const
ScRangeName& ScDocument::GetRangeName() const
{
if (!pRangeName)
pRangeName.reset(new ScRangeName);
return pRangeName.get();
return *pRangeName;
}
void ScDocument::SetRangeName(SCTAB nTab, std::unique_ptr<ScRangeName> pNew)
@@ -205,7 +205,7 @@ bool ScDocument::IsAddressInRangeName( RangeNameScope eScope, const ScAddress& r
ScRange aNameRange;
if (eScope == RangeNameScope::GLOBAL)
pRangeNames= GetRangeName();
pRangeNames= &GetRangeName();
else
pRangeNames= GetRangeName(rAddress.Tab());
@@ -223,12 +223,10 @@ bool ScDocument::IsAddressInRangeName( RangeNameScope eScope, const ScAddress& r
bool ScDocument::InsertNewRangeName( const OUString& rName, const ScAddress& rPos, const OUString& rExpr )
{
ScRangeName* pGlobalNames = GetRangeName();
if (!pGlobalNames)
return false;
ScRangeName& rGlobalNames = GetRangeName();
ScRangeData* pName = new ScRangeData(*this, rName, rExpr, rPos, ScRangeData::Type::Name, GetGrammar());
return pGlobalNames->insert(pName);
return rGlobalNames.insert(pName);
}
bool ScDocument::InsertNewRangeName( SCTAB nTab, const OUString& rName, const ScAddress& rPos, const OUString& rExpr )
@@ -274,7 +272,7 @@ const ScRangeData* ScDocument::GetRangeAtBlock( const ScRange& rBlock, OUString&
ScRangeData* ScDocument::FindRangeNameBySheetAndIndex( SCTAB nTab, sal_uInt16 nIndex ) const
{
const ScRangeName* pRN = (nTab < 0 ? GetRangeName() : GetRangeName(nTab));
const ScRangeName* pRN = (nTab < 0 ?& GetRangeName() : GetRangeName(nTab));
return (pRN ? pRN->findByIndex( nIndex) : nullptr);
}
+1 -1
View File
@@ -783,7 +783,7 @@ bool ScDocument::MarkUsedExternalReferences( const ScTokenArray& rArr, const ScA
{
// this is a named range. Check if the range contains an external
// reference.
ScRangeData* pRangeData = GetRangeName()->findByIndex(static_cast<FormulaIndexToken*>(t)->GetIndex());
ScRangeData* pRangeData = GetRangeName().findByIndex(static_cast<FormulaIndexToken*>(t)->GetIndex());
if (!pRangeData)
continue;
+4 -4
View File
@@ -2447,7 +2447,7 @@ void ScDocument::TransposeClip(ScDocument* pTransClip, InsertDeleteFlags nFlags,
if (pRangeName)
{
pTransClip->GetRangeName()->clear();
pTransClip->GetRangeName().clear();
for (const auto& rEntry : *pRangeName)
{
sal_uInt16 nIndex = rEntry.second->GetIndex();
@@ -2545,10 +2545,10 @@ void ScDocument::TransposeClip(ScDocument* pTransClip, InsertDeleteFlags nFlags,
namespace {
void copyUsedNamesToClip(ScRangeName* pClipRangeName, ScRangeName* pRangeName,
void copyUsedNamesToClip(ScRangeName& rClipRangeName, ScRangeName* pRangeName,
const sc::UpdatedRangeNames::NameIndicesType& rUsedNames)
{
pClipRangeName->clear();
rClipRangeName.clear();
for (const auto& rEntry : *pRangeName) //TODO: also DB and Pivot regions!!!
{
sal_uInt16 nIndex = rEntry.second->GetIndex();
@@ -2557,7 +2557,7 @@ void copyUsedNamesToClip(ScRangeName* pClipRangeName, ScRangeName* pRangeName,
continue;
ScRangeData* pData = new ScRangeData(*rEntry.second);
if (pClipRangeName->insert(pData))
if (rClipRangeName.insert(pData))
pData->SetIndex(nIndex);
}
}
+6 -7
View File
@@ -741,7 +741,7 @@ ScRangeData* copyRangeName( const ScRangeData* pOldRangeData, ScDocument& rNewDo
bool bInserted;
if (nNewSheet < 0)
bInserted = rNewDoc.GetRangeName()->insert(pRangeData);
bInserted = rNewDoc.GetRangeName().insert(pRangeData);
else
bInserted = rNewDoc.GetRangeName(nNewSheet)->insert(pRangeData);
@@ -773,10 +773,10 @@ ScRangeData* copyRangeNames( SheetIndexMap& rSheetIndexMap, std::vector<ScRangeD
const SCTAB nOldSheet, const SCTAB nNewSheet, bool bSameDoc)
{
ScRangeData* pRangeData = nullptr;
const ScRangeName* pOldRangeName = (nTab < 0 ? rOldDoc.GetRangeName() : rOldDoc.GetRangeName(nTab));
const ScRangeName* pOldRangeName = (nTab < 0 ? &rOldDoc.GetRangeName() : rOldDoc.GetRangeName(nTab));
if (pOldRangeName)
{
const ScRangeName* pNewRangeName = (nNewSheet < 0 ? rNewDoc.GetRangeName() : rNewDoc.GetRangeName(nNewSheet));
const ScRangeName* pNewRangeName = (nNewSheet < 0 ? &rNewDoc.GetRangeName() : rNewDoc.GetRangeName(nNewSheet));
sc::UpdatedRangeNames::NameIndicesType aSet( rReferencingNames.getUpdatedNames(nTab));
for (auto const & rIndex : aSet)
{
@@ -876,7 +876,7 @@ bool ScDocument::CopyAdjustRangeName( SCTAB& rSheet, sal_uInt16& rIndex, ScRange
}
else
{
pOldRangeData = GetRangeName()->findByIndex(nOldIndex);
pOldRangeData = GetRangeName().findByIndex(nOldIndex);
if (!pOldRangeData)
return false; // might be an error in the formula array
aRangeName = pOldRangeData->GetUpperName();
@@ -895,9 +895,8 @@ bool ScDocument::CopyAdjustRangeName( SCTAB& rSheet, sal_uInt16& rIndex, ScRange
if (!rpRangeData && !bGlobalNamesToLocal)
{
nNewSheet = -1;
pNewNames = rNewDoc.GetRangeName();
if (pNewNames)
rpRangeData = pNewNames->findByUpperName(aRangeName);
pNewNames = &rNewDoc.GetRangeName();
rpRangeData = pNewNames->findByUpperName(aRangeName);
}
// If no range name was found copy it.
if (!rpRangeData)
+2 -5
View File
@@ -262,14 +262,11 @@ const ScRange& ScSheetSourceDesc::GetSourceRange() const
{
// Obtain the source range from the range name first.
maSourceRange = ScRange();
ScRangeName* pRangeName = mpDoc->GetRangeName();
ScRangeName& rRangeName = mpDoc->GetRangeName();
do
{
if (!pRangeName)
break;
OUString aUpper = ScGlobal::getCharClass().uppercase(maRangeName);
const ScRangeData* pData = pRangeName->findByUpperName(aUpper);
const ScRangeData* pData = rRangeName.findByUpperName(aUpper);
if (!pData)
break;
+3 -6
View File
@@ -258,7 +258,7 @@ bool ScGroupTokenConverter::convert( const ScTokenArray& rCode, sc::FormulaLogge
aArrays.push_back(aArray);
}
std::vector<formula::VectorRefArray> aArraysTmp = aArrays;
std::vector<formula::VectorRefArray> aArraysTmp = aArrays;
formula::DoubleVectorRefToken aTok( std::move(aArraysTmp), nArrayLength, nRefRowSize, bAbsFirst, bAbsLast );
mrGroupTokens.AddToken(aTok);
rScope.addRefMessage(mrPos, aAbs.aStart, nRequestedLength, aArrays);
@@ -283,12 +283,9 @@ bool ScGroupTokenConverter::convert( const ScTokenArray& rCode, sc::FormulaLogge
}
// Named range.
ScRangeName* pNames = mrDoc.GetRangeName();
if (!pNames)
// This should never fail.
return false;
ScRangeName& rNames = mrDoc.GetRangeName();
ScRangeData* pRange = pNames->findByIndex(static_cast<const FormulaIndexToken*>(p)->GetIndex());
ScRangeData* pRange = rNames.findByIndex(static_cast<const FormulaIndexToken*>(p)->GetIndex());
if (!pRange)
// No named range exists by that index.
return false;
+4 -5
View File
@@ -3835,9 +3835,8 @@ const ScRangeData* ScCompiler::GetRangeData( SCTAB& rSheet, const OUString& rUpp
pData = pRangeName->findByUpperName(rUpperName);
if (!pData)
{
pRangeName = rDoc.GetRangeName();
if (pRangeName)
pData = pRangeName->findByUpperName(rUpperName);
pRangeName = &rDoc.GetRangeName();
pData = pRangeName->findByUpperName(rUpperName);
if (pData)
rSheet = -1;
}
@@ -3846,8 +3845,8 @@ const ScRangeData* ScCompiler::GetRangeData( SCTAB& rSheet, const OUString& rUpp
bool ScCompiler::HasPossibleNamedRangeConflict( SCTAB nTab ) const
{
const ScRangeName* pRangeName = rDoc.GetRangeName();
if (pRangeName && pRangeName->hasPossibleAddressConflict())
const ScRangeName* pRangeName = &rDoc.GetRangeName();
if (pRangeName->hasPossibleAddressConflict())
return true;
pRangeName = rDoc.GetRangeName(nTab);
if (pRangeName && pRangeName->hasPossibleAddressConflict())
+7 -13
View File
@@ -286,7 +286,7 @@ bool ScRangeUtil::MakeRangeFromName (
pData = pRangeNames->findByUpperName(aName);
}
if (!pData && eScope != RUTL_NAMES_LOCAL)
pData = rDoc.GetRangeName()->findByUpperName(aName);
pData = rDoc.GetRangeName().findByUpperName(aName);
if (pData)
{
OUString aStrArea;
@@ -964,11 +964,8 @@ ScRangeData* ScRangeStringConverter::GetRangeDataFromString( const OUString& rSt
}
if (!pData)
{
ScRangeName* pGlobalRangeName = rDoc.GetRangeName();
if (pGlobalRangeName)
{
pData = pGlobalRangeName->findByUpperName(aUpperName);
}
ScRangeName& rGlobalRangeName = rDoc.GetRangeName();
pData = rGlobalRangeName.findByUpperName(aUpperName);
}
return pData;
}
@@ -992,15 +989,12 @@ bool ScArea::operator==( const ScArea& r ) const
}
ScAreaNameIterator::ScAreaNameIterator( const ScDocument& rDoc ) :
pRangeName(rDoc.GetRangeName()),
rRangeName(rDoc.GetRangeName()),
pDBCollection(rDoc.GetDBCollection()),
bFirstPass(true)
{
if (pRangeName)
{
maRNPos = pRangeName->begin();
maRNEnd = pRangeName->end();
}
maRNPos = rRangeName.begin();
maRNEnd = rRangeName.end();
}
bool ScAreaNameIterator::Next( OUString& rName, ScRange& rRange )
@@ -1009,7 +1003,7 @@ bool ScAreaNameIterator::Next( OUString& rName, ScRange& rRange )
{
if ( bFirstPass ) // first the area names
{
if ( pRangeName && maRNPos != maRNEnd )
if ( maRNPos != maRNEnd )
{
const ScRangeData& rData = *maRNPos->second;
++maRNPos;
+3 -4
View File
@@ -54,10 +54,9 @@ TokenStringContext::TokenStringContext( const ScDocument& rDoc, formula::Formula
}
// Fetch all named range names.
const ScRangeName* pNames = rDoc.GetRangeName();
if (pNames)
// global names
insertAllNames(maGlobalRangeNames, *pNames);
const ScRangeName& rNames = rDoc.GetRangeName();
// global names
insertAllNames(maGlobalRangeNames, rNames);
{
ScRangeName::TabNameCopyMap aTabRangeNames;
+1 -1
View File
@@ -523,7 +523,7 @@ sal_uInt16 XclExpNameManagerImpl::InsertName( SCTAB nTab, sal_uInt16 nScNameIdx,
{
sal_uInt16 nNameIdx = 0;
const ScRangeData* pData = nullptr;
ScRangeName* pRN = (nTab == SCTAB_GLOBAL) ? GetDoc().GetRangeName() : GetDoc().GetRangeName(nTab);
ScRangeName* pRN = (nTab == SCTAB_GLOBAL) ? &GetDoc().GetRangeName() : GetDoc().GetRangeName(nTab);
if (pRN)
pData = pRN->findByIndex(nScNameIdx);
+1 -1
View File
@@ -241,7 +241,7 @@ void XclImpName::InsertName(const ScTokenArray* pArray)
pData->SetIndex( mnNameIndex ); // used as unique identifier in formulas
if (mnXclTab == EXC_NAME_GLOBAL)
{
if (!GetDoc().GetRangeName()->insert(pData))
if (!GetDoc().GetRangeName().insert(pData))
pData = nullptr;
}
else
+1 -1
View File
@@ -309,7 +309,7 @@ ScStyleSheetPool& XclRoot::GetStyleSheetPool() const
ScRangeName& XclRoot::GetNamedRanges() const
{
return *GetDoc().GetRangeName();
return GetDoc().GetRangeName();
}
SdrPage* XclRoot::GetSdrPage( SCTAB nScTab ) const
+5 -5
View File
@@ -108,7 +108,7 @@ void ScHTMLImport::InsertRangeName( ScDocument& rDoc, const OUString& rName, con
ScTokenArray aTokArray(rDoc);
aTokArray.AddDoubleReference( aRefData );
ScRangeData* pRangeData = new ScRangeData( rDoc, rName, aTokArray );
rDoc.GetRangeName()->insert( pRangeData );
rDoc.GetRangeName().insert( pRangeData );
}
void ScHTMLImport::WriteToDocument(
@@ -191,7 +191,7 @@ void ScHTMLImport::WriteToDocument(
if (!pTable->GetTableCaption().isEmpty())
aName.append(" - " + pTable->GetTableCaption());
const OUString sName(aName.makeStringAndClear());
if (!mrDoc.GetRangeName()->findByUpperName(ScGlobal::getCharClass().uppercase(sName)))
if (!mrDoc.GetRangeName().findByUpperName(ScGlobal::getCharClass().uppercase(sName)))
InsertRangeName(mrDoc, sName, aNewRange);
}
}
@@ -207,19 +207,19 @@ OUString ScHTMLImport::GetHTMLRangeNameList( const ScDocument& rDoc, std::u16str
return OUString();
OUString aNewName;
ScRangeName* pRangeNames = rDoc.GetRangeName();
ScRangeName& rRangeNames = rDoc.GetRangeName();
ScRangeList aRangeList;
sal_Int32 nStringIx = 0;
do
{
OUString aToken( o3tl::getToken(rOrigName, 0, ';', nStringIx ) );
if( pRangeNames && ScfTools::IsHTMLTablesName( aToken ) )
if( ScfTools::IsHTMLTablesName( aToken ) )
{ // build list with all HTML tables
sal_uLong nIndex = 1;
for(;;)
{
aToken = ScfTools::GetNameFromHTMLIndex( nIndex++ );
const ScRangeData* pRangeData = pRangeNames->findByUpperName(ScGlobal::getCharClass().uppercase(aToken));
const ScRangeData* pRangeData = rRangeNames.findByUpperName(ScGlobal::getCharClass().uppercase(aToken));
if (!pRangeData)
break;
ScRange aRange;
+9 -9
View File
@@ -369,7 +369,7 @@ Reference< XStyle > WorkbookGlobals::getStyleObject( const OUString& rStyleName,
namespace {
WorkbookHelper::RangeDataRet lcl_addNewByName(ScDocument& rDoc, ScRangeName* pNames, const OUString& rName, sal_Int16 nIndex, sal_Int32 nUnoType)
WorkbookHelper::RangeDataRet lcl_addNewByName(ScDocument& rDoc, ScRangeName& rNames, const OUString& rName, sal_Int16 nIndex, sal_Int32 nUnoType)
{
bool bDone = false;
ScRangeData::Type nNewType = ScRangeData::Type::Name;
@@ -389,7 +389,7 @@ WorkbookHelper::RangeDataRet lcl_addNewByName(ScDocument& rDoc, ScRangeName* pNa
{
return WorkbookHelper::RangeDataRet(pNew, true);
}
if ( pNames->insert(pNew) )
if ( rNames.insert(pNew) )
bDone = true;
if (!bDone)
{
@@ -399,11 +399,11 @@ WorkbookHelper::RangeDataRet lcl_addNewByName(ScDocument& rDoc, ScRangeName* pNa
return WorkbookHelper::RangeDataRet(pNew, false);
}
OUString findUnusedName( const ScRangeName* pRangeName, const OUString& rSuggestedName )
OUString findUnusedName( const ScRangeName& rRangeName, const OUString& rSuggestedName )
{
OUString aNewName = rSuggestedName;
sal_Int32 nIndex = 0;
while(pRangeName->findByUpperName(ScGlobal::getCharClass().uppercase(aNewName)))
while(rRangeName.findByUpperName(ScGlobal::getCharClass().uppercase(aNewName)))
aNewName = rSuggestedName + OUStringChar('_') + OUString::number( nIndex++ );
return aNewName;
@@ -419,11 +419,11 @@ WorkbookHelper::RangeDataRet WorkbookGlobals::createNamedRangeObject(
if( !orName.isEmpty() )
{
ScDocument& rDoc = getScDocument();
ScRangeName* pNames = rDoc.GetRangeName();
ScRangeName& rNames = rDoc.GetRangeName();
// find an unused name
orName = findUnusedName( pNames, orName );
orName = findUnusedName( rNames, orName );
// create the named range
aScRangeData = lcl_addNewByName(rDoc, pNames, orName, nIndex, nNameFlags);
aScRangeData = lcl_addNewByName(rDoc, rNames, orName, nIndex, nNameFlags);
}
return aScRangeData;
}
@@ -440,9 +440,9 @@ WorkbookHelper::RangeDataRet WorkbookGlobals::createLocalNamedRangeObject(
if(!pNames)
throw RuntimeException(u"invalid sheet index used"_ustr);
// find an unused name
orName = findUnusedName( pNames, orName );
orName = findUnusedName( *pNames, orName );
// create the named range
aScRangeData = lcl_addNewByName(rDoc, pNames, orName, nIndex, nNameFlags);
aScRangeData = lcl_addNewByName(rDoc, *pNames, orName, nIndex, nNameFlags);
}
return aScRangeData;
}
+1 -1
View File
@@ -201,7 +201,7 @@ void ScOrcusNamedExpression::set_named_range(std::string_view /*name*/, std::str
void ScOrcusNamedExpression::commit()
{
ScRangeName* pNames
= mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : mrDoc.getDoc().GetRangeName();
= mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : &mrDoc.getDoc().GetRangeName();
if (!pNames)
return;
+3 -3
View File
@@ -143,7 +143,7 @@ void ScEEImport::WriteToDocument( bool bSizeColsRows, double nOutputFactor, SvNu
// Automatic language option selected. Check for the global 'use US English' option.
bNumbersEnglishUS = officecfg::Office::Common::Filter::HTML::Import::NumbersEnglishUS::get();
}
ScRangeName* pRangeNames = mrDoc.GetRangeName();
ScRangeName& rRangeNames = mrDoc.GetRangeName();
for ( size_t i = 0, n = mpParser->ListSize(); i < n; ++i )
{
pE = mpParser->ListEntry( i );
@@ -422,11 +422,11 @@ void ScEEImport::WriteToDocument( bool bSizeColsRows, double nOutputFactor, SvNu
bHasGraphics |= GraphicSize( nCol, nRow, pE );
if ( pE->pName )
{ // Anchor Name => RangeName
if (!pRangeNames->findByUpperName(ScGlobal::getCharClass().uppercase(*pE->pName)))
if (!rRangeNames.findByUpperName(ScGlobal::getCharClass().uppercase(*pE->pName)))
{
ScRangeData* pData = new ScRangeData( mrDoc, *pE->pName,
ScAddress( nCol, nRow, nTab ) );
pRangeNames->insert( pData );
rRangeNames.insert( pData );
}
}
}
+2 -2
View File
@@ -4274,8 +4274,8 @@ void ScXMLExport::WritePersons(const ScDocument& rDoc)
void ScXMLExport::WriteNamedExpressions(const ScDocument& rDoc)
{
ScRangeName* pNamedRanges = rDoc.GetRangeName();
WriteNamedRange(rDoc, pNamedRanges);
ScRangeName& rNamedRanges = rDoc.GetRangeName();
WriteNamedRange(rDoc, &rNamedRanges);
}
void ScXMLExport::WriteExternalDataMapping(ScDocument& rDoc)
+2 -2
View File
@@ -1314,9 +1314,9 @@ void ScXMLImport::SetNamedRanges()
return;
// Insert the namedRanges
ScRangeName* pRangeNames = mpDoc->GetRangeName();
ScRangeName& rRangeNames = mpDoc->GetRangeName();
::std::for_each(m_aMyNamedExpressions.begin(), m_aMyNamedExpressions.end(),
RangeNameInserter(*mpDoc, *pRangeNames, -1));
RangeNameInserter(*mpDoc, rRangeNames, -1));
}
void ScXMLImport::SetSheetNamedRanges()
+5 -5
View File
@@ -2342,8 +2342,8 @@ void ScPosWnd::FillRangeNames(bool initialize)
ScDocument& rDoc = pDocShell->GetDocument();
ScRange aDummy;
ScRangeName* pRangeNames = rDoc.GetRangeName();
for (const auto& rEntry : *pRangeNames)
ScRangeName& rRangeNames = rDoc.GetRangeName();
for (const auto& rEntry : rRangeNames)
{
if (rEntry.second->IsValidReference(aDummy))
aSet.insert(rEntry.second->GetName());
@@ -2615,12 +2615,12 @@ void ScPosWnd::DoEnter()
}
else if ( eType == SC_NAME_INPUT_DEFINE )
{
ScRangeName* pNames = rDoc.GetRangeName();
ScRangeName& rNames = rDoc.GetRangeName();
ScRange aSelection;
if ( pNames && !pNames->findByUpperName(ScGlobal::getCharClass().uppercase(aText)) &&
if ( !rNames.findByUpperName(ScGlobal::getCharClass().uppercase(aText)) &&
(rViewData.GetSimpleArea( aSelection ) == SC_MARK_SIMPLE) )
{
ScRangeName aNewRanges( *pNames );
ScRangeName aNewRanges( rNames );
ScAddress aCursor( rViewData.GetCurX(), rViewData.GetCurY(), rViewData.CurrentTabForData() );
OUString aContent(aSelection.Format(rDoc, ScRefFlags::RANGE_ABS_3D, rDoc.GetAddressConvention()));
ScRangeData* pNew = new ScRangeData( rDoc, aText, aContent, aCursor );
+2 -4
View File
@@ -54,11 +54,9 @@ namespace
ScRange lclGetRangeForNamedRange(OUString const & aName, const ScDocument& rDocument)
{
ScRange aInvalidRange(ScAddress::INITIALIZE_INVALID);
ScRangeName* pRangeName = rDocument.GetRangeName();
if (pRangeName == nullptr)
return aInvalidRange;
ScRangeName& rRangeName = rDocument.GetRangeName();
const ScRangeData* pData = pRangeName->findByUpperName(aName.toAsciiUpperCase());
const ScRangeData* pData = rRangeName.findByUpperName(aName.toAsciiUpperCase());
if (pData == nullptr)
return aInvalidRange;
+2 -2
View File
@@ -173,9 +173,9 @@ void ScConsolidateDlg::Init()
// Use the ScAreaData helper class to save those range names from the
// RangeNames and database ranges that appear in the ListBoxes.
ScRangeName* pRangeNames = rDoc.GetRangeName();
ScRangeName& rRangeNames = rDoc.GetRangeName();
ScDBCollection* pDbNames = rDoc.GetDBCollection();
size_t nRangeCount = pRangeNames ? pRangeNames->size() : 0;
size_t nRangeCount = rRangeNames.size();
size_t nDbCount = pDbNames ? pDbNames->getNamedDBs().size() : 0;
nAreaDataCount = nRangeCount+nDbCount;
+2 -2
View File
@@ -123,11 +123,11 @@ void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet )
if (m_rDoc.GetChangeTrack() != nullptr)
m_xBtnCopyResult->set_sensitive(false);
ScRangeName* pRangeNames = m_rDoc.GetRangeName();
ScRangeName& rRangeNames = m_rDoc.GetRangeName();
m_xLbFilterArea->clear();
m_xLbFilterArea->append_text(m_aStrUndefined);
for (const auto& rEntry : *pRangeNames)
for (const auto& rEntry : rRangeNames)
{
if (!rEntry.second->HasType(ScRangeData::Type::Criteria))
continue;
+7 -7
View File
@@ -184,13 +184,13 @@ bool ScAreaLink::FindExtRange( ScRange& rRange, const ScDocument& rSrcDoc, const
{
bool bFound = false;
OUString aUpperName = ScGlobal::getCharClass().uppercase(rAreaName);
ScRangeName* pNames = rSrcDoc.GetRangeName();
if (pNames) // named ranges
{
const ScRangeData* p = pNames->findByUpperName(aUpperName);
if (p && p->IsValidReference(rRange))
bFound = true;
}
ScRangeName& rNames = rSrcDoc.GetRangeName();
// named ranges
const ScRangeData* p = rNames.findByUpperName(aUpperName);
if (p && p->IsValidReference(rRange))
bFound = true;
if (!bFound) // database ranges
{
ScDBCollection* pDBColl = rSrcDoc.GetDBCollection();
+3 -3
View File
@@ -573,9 +573,9 @@ bool ScDBDocFunc::RepeatDB( const OUString& rDBName, bool bApi, bool bIsUnnamed,
rDoc.CopyToDocument(0, 0, 0, rDoc.MaxCol(), rDoc.MaxRow(), nTabCount-1, InsertDeleteFlags::FORMULA, false, *pUndoDoc);
// ranges of DB and other
ScRangeName* pDocRange = rDoc.GetRangeName();
if (!pDocRange->empty())
pUndoRange.reset(new ScRangeName( *pDocRange ));
ScRangeName& rDocRange = rDoc.GetRangeName();
if (!rDocRange.empty())
pUndoRange.reset(new ScRangeName( rDocRange ));
ScDBCollection* pDocDB = rDoc.GetDBCollection();
if (!pDocDB->empty())
pUndoDB.reset(new ScDBCollection( *pDocDB ));
+2 -2
View File
@@ -2238,7 +2238,7 @@ void ScDocFunc::SetNewRangeNames( std::unique_ptr<ScRangeName> pNewRanges, bool
}
else
{
pOld = rDoc.GetRangeName();
pOld = &rDoc.GetRangeName();
}
std::unique_ptr<ScRangeName> pUndoRanges(new ScRangeName(*pOld));
std::unique_ptr<ScRangeName> pRedoRanges(new ScRangeName(*pNewRanges));
@@ -2383,7 +2383,7 @@ bool ScDocFunc::CreateNames( const ScRange& rRange, CreateNameFlags nFlags, bool
if (aTab >=0)
pNames = rDoc.GetRangeName(nTab);
else
pNames = rDoc.GetRangeName();
pNames = &rDoc.GetRangeName();
if (!pNames)
return false; // shouldn't happen
+7 -10
View File
@@ -2985,17 +2985,14 @@ bool ScDocShell::DdeSetData( const OUString& rItem,
// named range?
OUString aPos = rItem;
ScRangeName* pRange = m_pDocument->GetRangeName();
if( pRange )
ScRangeName& rRange = m_pDocument->GetRangeName();
const ScRangeData* pData = rRange.findByUpperName(ScGlobal::getCharClass().uppercase(aPos));
if (pData)
{
const ScRangeData* pData = pRange->findByUpperName(ScGlobal::getCharClass().uppercase(aPos));
if (pData)
{
if( pData->HasType( ScRangeData::Type::RefArea )
|| pData->HasType( ScRangeData::Type::AbsArea )
|| pData->HasType( ScRangeData::Type::AbsPos ) )
aPos = pData->GetSymbol(); // continue with the name's contents
}
if( pData->HasType( ScRangeData::Type::RefArea )
|| pData->HasType( ScRangeData::Type::AbsArea )
|| pData->HasType( ScRangeData::Type::AbsPos ) )
aPos = pData->GetSymbol(); // continue with the name's contents
}
// Address in DDE function must be always parsed as CONV_OOO so that it
+7 -8
View File
@@ -2133,9 +2133,9 @@ namespace {
bool hasRangeName(const ScDocument& rDoc, const OUString& rName)
{
ScRangeName* pExtNames = rDoc.GetRangeName();
ScRangeName& rExtNames = rDoc.GetRangeName();
OUString aUpperName = ScGlobal::getCharClass().uppercase(rName);
const ScRangeData* pRangeData = pExtNames->findByUpperName(aUpperName);
const ScRangeData* pRangeData = rExtNames.findByUpperName(aUpperName);
return pRangeData != nullptr;
}
@@ -2354,9 +2354,9 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokensFromSr
ScExternalRefCache::TokenArrayRef ScExternalRefManager::getRangeNameTokensFromSrcDoc(
sal_uInt16 nFileId, const ScDocument& rSrcDoc, OUString& rName)
{
ScRangeName* pExtNames = rSrcDoc.GetRangeName();
ScRangeName& rExtNames = rSrcDoc.GetRangeName();
OUString aUpperName = ScGlobal::getCharClass().uppercase(rName);
const ScRangeData* pRangeData = pExtNames->findByUpperName(aUpperName);
const ScRangeData* pRangeData = rExtNames.findByUpperName(aUpperName);
if (!pRangeData)
return ScExternalRefCache::TokenArrayRef();
@@ -3067,14 +3067,13 @@ void ScExternalRefManager::breakLink(sal_uInt16 nFileId)
// Remove all named ranges that reference this document.
// Global named ranges.
ScRangeName* pRanges = mrDoc.GetRangeName();
if (pRanges)
removeRangeNamesBySrcDoc(*pRanges, nFileId);
ScRangeName& rRanges = mrDoc.GetRangeName();
removeRangeNamesBySrcDoc(rRanges, nFileId);
// Sheet-local named ranges.
for (SCTAB i = 0, n = mrDoc.GetTableCount(); i < n; ++i)
{
pRanges = mrDoc.GetRangeName(i);
ScRangeName* pRanges = mrDoc.GetRangeName(i);
if (pRanges)
removeRangeNamesBySrcDoc(*pRanges, nFileId);
}
+9 -10
View File
@@ -171,21 +171,20 @@ ScImportExport::ScImportExport( ScDocument& r, const OUString& rPos )
SCTAB nTab = ScDocShell::GetCurTab();
aRange.aStart.SetTab( nTab );
OUString aPos( rPos );
// Named range?
ScRangeName* pRange = rDoc.GetRangeName();
if (pRange)
ScRangeName& rRange = rDoc.GetRangeName();
const ScRangeData* pData = rRange.findByUpperName(ScGlobal::getCharClass().uppercase(aPos));
if (pData)
{
const ScRangeData* pData = pRange->findByUpperName(ScGlobal::getCharClass().uppercase(aPos));
if (pData)
if( pData->HasType( ScRangeData::Type::RefArea )
|| pData->HasType( ScRangeData::Type::AbsArea )
|| pData->HasType( ScRangeData::Type::AbsPos ) )
{
if( pData->HasType( ScRangeData::Type::RefArea )
|| pData->HasType( ScRangeData::Type::AbsArea )
|| pData->HasType( ScRangeData::Type::AbsPos ) )
{
aPos = pData->GetSymbol();
}
aPos = pData->GetSymbol();
}
}
formula::FormulaGrammar::AddressConvention eConv = rDoc.GetAddressConvention();
// Range?
if (aRange.Parse(aPos, rDoc, eConv) & ScRefFlags::VALID)
+5 -8
View File
@@ -37,15 +37,12 @@ static bool lcl_FillRangeFromName( ScRange& rRange, ScDocShell* pDocSh, const OU
if (pDocSh)
{
ScDocument& rDoc = pDocSh->GetDocument();
ScRangeName* pNames = rDoc.GetRangeName();
if (pNames)
ScRangeName& rNames = rDoc.GetRangeName();
const ScRangeData* pData = rNames.findByUpperName(ScGlobal::getCharClass().uppercase(rName));
if (pData)
{
const ScRangeData* pData = pNames->findByUpperName(ScGlobal::getCharClass().uppercase(rName));
if (pData)
{
if ( pData->IsValidReference( rRange ) )
return true;
}
if ( pData->IsValidReference( rRange ) )
return true;
}
}
return false;
+3 -3
View File
@@ -248,10 +248,10 @@ void ScLinkedAreaDlg::UpdateSourceRanges()
}
// tdf#142600 - list tables in order of their appearance in the document's source
const ScRangeName* pRangeName = m_pSourceShell->GetDocument().GetRangeName();
for (size_t i = 1; i <= pRangeName->index_size(); i++)
const ScRangeName& rRangeName = m_pSourceShell->GetDocument().GetRangeName();
for (size_t i = 1; i <= rRangeName.index_size(); i++)
{
if (const ScRangeData* pRangeData = pRangeName->findByIndex(i))
if (const ScRangeData* pRangeData = rRangeName.findByIndex(i))
{
m_xLbRanges->append_text(pRangeData->GetName());
}
+6 -9
View File
@@ -790,8 +790,8 @@ void ScContentTree::GetAreaNames()
ScRange aDummy;
std::set<OUString> aSet;
ScRangeName* pRangeNames = pDoc->GetRangeName();
for (const auto& rEntry : *pRangeNames)
ScRangeName& rRangeNames = pDoc->GetRangeName();
for (const auto& rEntry : rRangeNames)
{
if (rEntry.second->IsValidReference(aDummy))
aSet.insert(rEntry.second->GetName());
@@ -1108,13 +1108,10 @@ static bool lcl_GetRange( const ScDocument& rDoc, ScContentId nType, const OUStr
if ( nType == ScContentId::RANGENAME )
{
ScRangeName* pList = rDoc.GetRangeName();
if (pList)
{
const ScRangeData* p = pList->findByUpperName(ScGlobal::getCharClass().uppercase(rName));
if (p && p->IsValidReference(rRange))
bFound = true;
}
ScRangeName& rList = rDoc.GetRangeName();
const ScRangeData* p = rList.findByUpperName(ScGlobal::getCharClass().uppercase(rName));
if (p && p->IsValidReference(rRange))
bFound = true;
}
else if ( nType == ScContentId::DBAREA )
{
@@ -49,8 +49,8 @@ bool InsertNameListOperation::runImplementation()
if (!r.HasType(ScRangeData::Type::Database))
++nValidCount;
}
ScRangeName* pList = rDoc.GetRangeName();
for (const auto& rEntry : *pList)
ScRangeName& rList = rDoc.GetRangeName();
for (const auto& rEntry : rList)
{
const ScRangeData& r = *rEntry.second;
if (!r.HasType(ScRangeData::Type::Database)
@@ -89,7 +89,7 @@ bool InsertNameListOperation::runImplementation()
if (!r.HasType(ScRangeData::Type::Database))
ppSortArray[j++] = &r;
}
for (const auto & [ rName, rxData ] : *pList)
for (const auto & [ rName, rxData ] : rList)
{
ScRangeData& r = *rxData;
if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(rName))
@@ -139,9 +139,9 @@ bool SubTotalsOperation::runImplementation()
InsertDeleteFlags::FORMULA, false, *pUndoDoc);
// ranges of DB and other
ScRangeName* pDocRange = rDoc.GetRangeName();
if (!pDocRange->empty())
pUndoRange.reset(new ScRangeName(*pDocRange));
ScRangeName& rDocRange = rDoc.GetRangeName();
if (!rDocRange.empty())
pUndoRange.reset(new ScRangeName(rDocRange));
ScDBCollection* pDocDB = rDoc.GetDBCollection();
if (!pDocDB->empty())
pUndoDB.reset(new ScDBCollection(*pDocDB));
+3 -3
View File
@@ -389,13 +389,13 @@ void ScPrintAreasDlg::Impl_FillLists()
// Get ranges and remember in ListBoxen
ScRangeName* pRangeNames = rDoc.GetRangeName();
ScRangeName& rRangeNames = rDoc.GetRangeName();
if (!pRangeNames || pRangeNames->empty())
if (rRangeNames.empty())
// No range names to process.
return;
for (const auto& rEntry : *pRangeNames)
for (const auto& rEntry : rRangeNames)
{
if (!rEntry.second->HasType(ScRangeData::Type::AbsArea )
&& !rEntry.second->HasType(ScRangeData::Type::RefArea)
+5 -5
View File
@@ -41,9 +41,9 @@ ScRefUndoData::ScRefUndoData( ScDocument& rDoc, bool bForceDBSnapshot ) :
if (pOldDBColl && (bForceDBSnapshot || !pOldDBColl->empty()))
pDBCollection.reset(new ScDBCollection(*pOldDBColl));
const ScRangeName* pOldRanges = rDoc.GetRangeName();
if (pOldRanges && !pOldRanges->empty())
pRangeName.reset(new ScRangeName(*pOldRanges));
const ScRangeName& rOldRanges = rDoc.GetRangeName();
if (!rOldRanges.empty())
pRangeName.reset(new ScRangeName(rOldRanges));
// when handling Pivot solely keep the range?
@@ -85,8 +85,8 @@ void ScRefUndoData::DeleteUnchanged( ScDocument& rDoc )
}
if (pRangeName)
{
ScRangeName* pNewRanges = rDoc.GetRangeName();
if ( pNewRanges && *pRangeName == *pNewRanges )
ScRangeName& rNewRanges = rDoc.GetRangeName();
if ( *pRangeName == rNewRanges )
pRangeName.reset();
}
+3 -4
View File
@@ -1435,15 +1435,14 @@ void ScUndoDragDrop::Undo()
aCxt.mnTabDelta = nTabDelta;
// Global range names.
ScRangeName* pName = rDoc.GetRangeName();
if (pName)
pName->UpdateReference(aCxt);
ScRangeName& rName = rDoc.GetRangeName();
rName.UpdateReference(aCxt);
SCTAB nTabCount = rDoc.GetTableCount();
for (SCTAB nTab = 0; nTab < nTabCount; ++nTab)
{
// Sheet-local range names.
pName = rDoc.GetRangeName(nTab);
ScRangeName* pName = rDoc.GetRangeName(nTab);
if (pName)
pName->UpdateReference(aCxt, nTab);
}
+2 -2
View File
@@ -90,7 +90,7 @@ void ScUndoAddRangeData::Undo()
ScRangeName* pRangeName = nullptr;
if (mnTab == -1)
{
pRangeName = rDoc.GetRangeName();
pRangeName = &rDoc.GetRangeName();
}
else
{
@@ -107,7 +107,7 @@ void ScUndoAddRangeData::Redo()
ScRangeName* pRangeName = nullptr;
if (mnTab == -1)
{
pRangeName = rDoc.GetRangeName();
pRangeName = &rDoc.GetRangeName();
}
else
{
+5 -7
View File
@@ -120,7 +120,7 @@ ScRangeData* ScNamedRangeObj::GetRangeData_Impl()
if (nTab >= 0)
pNames = pDocShell->GetDocument().GetRangeName(nTab);
else
pNames = pDocShell->GetDocument().GetRangeName();
pNames = &pDocShell->GetDocument().GetRangeName();
if (pNames)
{
pRet = pNames->findByUpperName(ScGlobal::getCharClass().uppercase(aName));
@@ -163,7 +163,7 @@ void ScNamedRangeObj::Modify_Impl( const OUString* pNewName, const ScTokenArray*
if (nTab >= 0)
pNames = rDoc.GetRangeName(nTab);
else
pNames = rDoc.GetRangeName();
pNames = &rDoc.GetRangeName();
if (!pNames)
return;
@@ -785,12 +785,10 @@ rtl::Reference<ScNamedRangeObj> ScGlobalNamedRangesObj::GetObjectByIndex_Impl(sa
if (!pDocShell)
return nullptr;
ScRangeName* pNames = pDocShell->GetDocument().GetRangeName();
if (!pNames)
return nullptr;
ScRangeName& rNames = pDocShell->GetDocument().GetRangeName();
sal_uInt16 nPos = 0;
for (const auto& rName : *pNames)
for (const auto& rName : rNames)
{
if (lcl_UserVisibleName(*rName.second))
{
@@ -811,7 +809,7 @@ rtl::Reference<ScNamedRangeObj> ScGlobalNamedRangesObj::GetObjectByName_Impl(con
ScRangeName* ScGlobalNamedRangesObj::GetRangeName_Impl()
{
return pDocShell->GetDocument().GetRangeName();
return &pDocShell->GetDocument().GetRangeName();
}
SCTAB ScGlobalNamedRangesObj::GetTab_Impl()
+4 -7
View File
@@ -3684,13 +3684,10 @@ void ScCellShell::ExecuteDataPilotDialog()
pTabViewShell->GetFrameWeld(), bEnableExt));
// Populate named ranges (if any).
ScRangeName* pRangeName = rDoc.GetRangeName();
if (pRangeName)
{
ScRangeName::const_iterator itr = pRangeName->begin(), itrEnd = pRangeName->end();
for (; itr != itrEnd; ++itr)
pTypeDlg->AppendNamedRange(itr->second->GetName());
}
ScRangeName& rRangeName = rDoc.GetRangeName();
ScRangeName::const_iterator itr = rRangeName.begin(), itrEnd = rRangeName.end();
for (; itr != itrEnd; ++itr)
pTypeDlg->AppendNamedRange(itr->second->GetName());
pTypeDlg->StartExecuteAsync([this, pTypeDlg, pTabViewShell,
pScMod, pFact, &rDoc, &rMark, aDestPos](int nResult) mutable {
+6 -6
View File
@@ -520,9 +520,9 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
InsertDeleteFlags::FORMULA, false, *pUndoDoc );
// database and other ranges
ScRangeName* pDocRange = rDoc.GetRangeName();
if (!pDocRange->empty())
pUndoRange.reset(new ScRangeName( *pDocRange ));
ScRangeName& rDocRange = rDoc.GetRangeName();
if (!rDocRange.empty())
pUndoRange.reset(new ScRangeName( rDocRange ));
ScDBCollection* pDocDB = rDoc.GetDBCollection();
if (!pDocDB->empty())
pUndoDB.reset(new ScDBCollection( *pDocDB ));
@@ -2312,9 +2312,9 @@ void ScDBFunc::RepeatDB( bool bRecord )
rDoc.CopyToDocument( 0,0,0, rDoc.MaxCol(),rDoc.MaxRow(),nTabCount-1, InsertDeleteFlags::FORMULA, false, *pUndoDoc );
// data base and other ranges
ScRangeName* pDocRange = rDoc.GetRangeName();
if (!pDocRange->empty())
pUndoRange.reset(new ScRangeName( *pDocRange ));
ScRangeName& rDocRange = rDoc.GetRangeName();
if (!rDocRange.empty())
pUndoRange.reset(new ScRangeName( rDocRange ));
ScDBCollection* pDocDB = rDoc.GetDBCollection();
if (!pDocDB->empty())
pUndoDB.reset(new ScDBCollection( *pDocDB ));
+4 -4
View File
@@ -3136,7 +3136,7 @@ bool ScViewFunc::InsertName( const OUString& rName, const OUString& rSymbol,
ScDocShell* pDocSh = GetViewData().GetDocShell();
ScDocument& rDoc = pDocSh->GetDocument();
SCTAB nTab = GetViewData().CurrentTabForData();
ScRangeName* pList = rDoc.GetRangeName();
ScRangeName& rList = rDoc.GetRangeName();
ScRangeData::Type nType = ScRangeData::Type::Name;
auto pNewEntry = std::make_unique<ScRangeData>(
@@ -3160,15 +3160,15 @@ bool ScViewFunc::InsertName( const OUString& rName, const OUString& rSymbol,
rDoc.PreprocessRangeNameUpdate();
// input available yet? Then remove beforehand (=change)
ScRangeData* pData = pList->findByUpperName(ScGlobal::getCharClass().uppercase(rName));
ScRangeData* pData = rList.findByUpperName(ScGlobal::getCharClass().uppercase(rName));
if (pData)
{ // take old Index
pNewEntry->SetIndex(pData->GetIndex());
pList->erase(*pData);
rList.erase(*pData);
}
// don't delete, insert took ownership, even on failure!
if ( pList->insert( pNewEntry.release() ) )
if ( rList.insert( pNewEntry.release() ) )
bOk = true;
rDoc.CompileHybridFormula();