sc/inc/cellvalue.hxx | 2 ++ sc/qa/unit/ucalc_sharedformula.cxx | 2 +- sc/source/core/data/column3.cxx | 2 +- sc/source/core/data/column4.cxx | 4 ++-- sc/source/core/data/conditio.cxx | 2 +- sc/source/core/data/dociter.cxx | 2 +- sc/source/core/data/documen8.cxx | 4 ++-- sc/source/core/data/documentimport.cxx | 4 ++-- sc/source/core/data/table3.cxx | 6 +++--- sc/source/core/data/table4.cxx | 4 ++-- sc/source/core/data/validat.cxx | 2 +- sc/source/core/tool/cellform.cxx | 2 +- sc/source/core/tool/chgtrack.cxx | 4 ++-- sc/source/filter/excel/xetable.cxx | 2 +- sc/source/filter/xcl97/XclExpChangeTrack.cxx | 2 +- sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx | 4 ++-- sc/source/ui/docshell/docsh.cxx | 4 ++-- sc/source/ui/undo/undocell.cxx | 2 +- sc/source/ui/view/spellcheckcontext.cxx | 6 +++--- sc/source/ui/view/tabvwsh5.cxx | 2 +- 20 files changed, 32 insertions(+), 30 deletions(-)
New commits: commit 12b817140641a94ebb3ef8271c5e955eb80e56f2 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Thu Jun 16 17:57:37 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Jun 17 15:59:42 2022 +0200 create getter for ScCellValue::mpString so we can assert that it has the correct tag type Change-Id: I8933919aefc2bb22694a283b54dc3de11d16e5a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136002 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/inc/cellvalue.hxx b/sc/inc/cellvalue.hxx index 9513fcfc99d5..643889e2c154 100644 --- a/sc/inc/cellvalue.hxx +++ b/sc/inc/cellvalue.hxx @@ -63,6 +63,7 @@ public: CellType getType() const { return meType; } double getDouble() const { assert(meType == CELLTYPE_VALUE); return mfValue1; } + svl::SharedString* getSharedString() const { assert(meType == CELLTYPE_STRING); return mpString; } /** * Take cell value from specified position in specified document. @@ -134,6 +135,7 @@ public: CellType getType() const { return meType; } double getDouble() const { assert(meType == CELLTYPE_VALUE); return mfValue1; } + const svl::SharedString* getSharedString() const { assert(meType == CELLTYPE_STRING); return mpString; } /** * Take cell value from specified position in specified document. diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx index 64f248c91cf8..69f3e3be3d42 100644 --- a/sc/qa/unit/ucalc_sharedformula.cxx +++ b/sc/qa/unit/ucalc_sharedformula.cxx @@ -284,7 +284,7 @@ void TestSharedFormula::testSharedFormulas() ScCellValue aCell(svl::SharedString("Test")); CPPUNIT_ASSERT_EQUAL_MESSAGE("This should be a string value.", CELLTYPE_STRING, aCell.getType()); aCell.commit(*m_pDoc, aPos); - CPPUNIT_ASSERT_EQUAL(aCell.mpString->getString(), m_pDoc->GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(aCell.getSharedString()->getString(), m_pDoc->GetString(aPos)); aPos.SetRow(16); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT(pFC); diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index e8a14b75b498..7586b000768d 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -2885,7 +2885,7 @@ public: rColumn.SetValue(aBlockPos, r.mnRow, r.maValue.getDouble(), false); break; case CELLTYPE_STRING: - rColumn.SetRawString(aBlockPos, r.mnRow, *r.maValue.mpString, false); + rColumn.SetRawString(aBlockPos, r.mnRow, *r.maValue.getSharedString(), false); break; default: ; diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index 7861ed5ce55e..6c710d9ed22e 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -291,8 +291,8 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, // same document. If not, re-intern shared strings. svl::SharedStringPool* pSharedStringPool = (bSameDocPool ? nullptr : &rDocument.GetSharedStringPool()); svl::SharedString aStr = (pSharedStringPool ? - pSharedStringPool->intern( rSrcCell.mpString->getString()) : - *rSrcCell.mpString); + pSharedStringPool->intern( rSrcCell.getSharedString()-> getString()) : + *rSrcCell.getSharedString()); std::vector<svl::SharedString> aStrs(nDestSize, aStr); pBlockPos->miCellPos = diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 6c4213888017..90ea65ba1b0c 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -746,7 +746,7 @@ static bool lcl_GetCellContent( ScRefCellValue& rCell, bool bIsStr1, double& rAr case CELLTYPE_EDIT: bVal = false; if (rCell.getType() == CELLTYPE_STRING) - rArgStr = rCell.mpString->getString(); + rArgStr = rCell.getSharedString()->getString(); else if (rCell.mpEditText) rArgStr = ScEditUtil::GetString(*rCell.mpEditText, pDoc); break; diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index 3efaa48d7b5a..3eb95c8eaeb9 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -975,7 +975,7 @@ ScCellValue ScCellIterator::getCellValue() const switch (maCurCell.getType()) { case CELLTYPE_STRING: - return ScCellValue(new svl::SharedString(*maCurCell.mpString)); + return ScCellValue(maCurCell.getSharedString()); break; case CELLTYPE_EDIT: return ScCellValue(maCurCell.mpEditText->Clone()); diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index c09bd16d3dc8..2da4ddfa53fb 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -1262,7 +1262,7 @@ void ScDocument::TransliterateText( const ScMarkData& rMultiMark, Transliteratio } pEngine->SetDefaults( std::move(aDefaults) ); if (aCell.getType() == CELLTYPE_STRING) - pEngine->SetTextCurrentDefaults(aCell.mpString->getString()); + pEngine->SetTextCurrentDefaults(aCell.getSharedString()->getString()); else if (aCell.mpEditText) pEngine->SetTextCurrentDefaults(*aCell.mpEditText); @@ -1298,7 +1298,7 @@ void ScDocument::TransliterateText( const ScMarkData& rMultiMark, Transliteratio else if (aCell.getType() == CELLTYPE_STRING) { - OUString aOldStr = aCell.mpString->getString(); + OUString aOldStr = aCell.getSharedString()->getString(); sal_Int32 nOldLen = aOldStr.getLength(); if ( bConsiderLanguage ) diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx index 867a16a6f1ec..b091b99ff152 100644 --- a/sc/source/core/data/documentimport.cxx +++ b/sc/source/core/data/documentimport.cxx @@ -224,7 +224,7 @@ void ScDocumentImport::setAutoInput(const ScAddress& rPos, const OUString& rStr, { case CELLTYPE_STRING: // string is copied. - pBlockPos->miCellPos = rCells.set(pBlockPos->miCellPos, rPos.Row(), *aCell.mpString); + pBlockPos->miCellPos = rCells.set(pBlockPos->miCellPos, rPos.Row(), *aCell.getSharedString()); break; case CELLTYPE_EDIT: // Cell takes the ownership of the text object. @@ -583,7 +583,7 @@ void ScDocumentImport::fillDownCells(const ScAddress& rPos, SCROW nFillSize) } case CELLTYPE_STRING: { - std::vector<svl::SharedString> aCopied(nFillSize, *aRefCell.mpString); + std::vector<svl::SharedString> aCopied(nFillSize, *aRefCell.getSharedString()); pBlockPos->miCellPos = rCells.set( pBlockPos->miCellPos, rPos.Row()+1, aCopied.begin(), aCopied.end()); break; diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 19db5e6c08dc..f1027716f03e 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -728,7 +728,7 @@ void fillSortedColumnArray( { case CELLTYPE_STRING: assert(rCell.mpAttr); - rCellStore.push_back(*rCell.maCell.mpString); + rCellStore.push_back(*rCell.maCell.getSharedString()); break; case CELLTYPE_VALUE: assert(rCell.mpAttr); @@ -1570,11 +1570,11 @@ short ScTable::CompareCell( OUString aStr1; OUString aStr2; if (eType1 == CELLTYPE_STRING) - aStr1 = rCell1.mpString->getString(); + aStr1 = rCell1.getSharedString()->getString(); else aStr1 = GetString(nCell1Col, nCell1Row); if (eType2 == CELLTYPE_STRING) - aStr2 = rCell2.mpString->getString(); + aStr2 = rCell2.getSharedString()->getString(); else aStr2 = GetString(nCell2Col, nCell2Row); diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 80d656d4dd59..8877e90d20e0 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -1916,7 +1916,7 @@ void ScTable::FillAutoSimple( case CELLTYPE_STRING: case CELLTYPE_EDIT: if (aSrcCell.getType() == CELLTYPE_STRING) - aValue = aSrcCell.mpString->getString(); + aValue = aSrcCell.getSharedString()->getString(); else aValue = ScEditUtil::GetString(*aSrcCell.mpEditText, &rDocument); if ( !(nScFillModeMouseModifier & KEY_MOD1) && !bHasFiltered ) @@ -2460,7 +2460,7 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, } OUString aValue; if (eCellType == CELLTYPE_STRING) - aValue = aSrcCell.mpString->getString(); + aValue = aSrcCell.getSharedString()->getString(); else aValue = ScEditUtil::GetString(*aSrcCell.mpEditText, &rDocument); sal_Int32 nStringValue; diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index abe48eecb3a9..4c8617a47c9e 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -579,7 +579,7 @@ bool ScValidationData::IsDataValid( ScRefCellValue& rCell, const ScAddress& rPos nVal = rCell.getDouble(); break; case CELLTYPE_STRING: - aString = rCell.mpString->getString(); + aString = rCell.getSharedString()->getString(); bIsVal = false; break; case CELLTYPE_EDIT: diff --git a/sc/source/core/tool/cellform.cxx b/sc/source/core/tool/cellform.cxx index 742e896e03b1..7e75ced777ab 100644 --- a/sc/source/core/tool/cellform.cxx +++ b/sc/source/core/tool/cellform.cxx @@ -39,7 +39,7 @@ OUString ScCellFormat::GetString( const ScRefCellValue& rCell, sal_uInt32 nForma case CELLTYPE_STRING: { OUString str; - rFormatter.GetOutputString(rCell.mpString->getString(), nFormat, str, ppColor, bUseStarFormat); + rFormatter.GetOutputString(rCell.getSharedString()->getString(), nFormat, str, ppColor, bUseStarFormat); return str; } case CELLTYPE_EDIT: diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index cf6cd43ffd0c..d89f38dbb06d 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -1564,7 +1564,7 @@ OUString ScChangeActionContent::GetStringOfCell( return str; } case CELLTYPE_STRING: - return rCell.mpString->getString(); + return rCell.getSharedString()->getString(); case CELLTYPE_EDIT: if (rCell.mpEditText) return ScEditUtil::GetString(*rCell.mpEditText, pDoc); @@ -1705,7 +1705,7 @@ OUString ScChangeActionContent::GetValueString( switch (rCell.getType()) { case CELLTYPE_STRING : - return rCell.mpString->getString(); + return rCell.getSharedString()->getString(); case CELLTYPE_EDIT : if (rCell.mpEditText) return ScEditUtil::GetString(*rCell.mpEditText, pDoc); diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx index 6a65d5c7dd8f..0df688d335bd 100644 --- a/sc/source/filter/excel/xetable.cxx +++ b/sc/source/filter/excel/xetable.cxx @@ -2666,7 +2666,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) : case CELLTYPE_STRING: { xCell = new XclExpLabelCell( - GetRoot(), aXclPos, pPattern, nMergeBaseXFId, rScCell.mpString->getString()); + GetRoot(), aXclPos, pPattern, nMergeBaseXFId, rScCell.getSharedString()->getString()); } break; diff --git a/sc/source/filter/xcl97/XclExpChangeTrack.cxx b/sc/source/filter/xcl97/XclExpChangeTrack.cxx index 93fce08f6f24..ed0a8c94a7c8 100644 --- a/sc/source/filter/xcl97/XclExpChangeTrack.cxx +++ b/sc/source/filter/xcl97/XclExpChangeTrack.cxx @@ -870,7 +870,7 @@ void XclExpChTrCellContent::GetCellData( OUString sCellStr; if (rScCell.getType() == CELLTYPE_STRING) { - sCellStr = rScCell.mpString->getString(); + sCellStr = rScCell.getSharedString()->getString(); rpData->mpFormattedString = XclExpStringHelper::CreateCellString( rRoot, sCellStr, nullptr); } diff --git a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx index 4263c0b0740e..843b9a0a3d21 100644 --- a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx @@ -264,11 +264,11 @@ void ScChangeTrackingExportHelper::WriteStringCell(const ScCellValue& rCell) rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_STRING); SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_CHANGE_TRACK_TABLE_CELL, true, true); - if (!rCell.mpString->isEmpty()) + if (!rCell.getSharedString()->isEmpty()) { SvXMLElementExport aElemP(rExport, XML_NAMESPACE_TEXT, XML_P, true, false); bool bPrevCharWasSpace(true); - rExport.GetTextParagraphExport()->exportCharacterData(rCell.mpString->getString(), bPrevCharWasSpace); + rExport.GetTextParagraphExport()->exportCharacterData(rCell.getSharedString()->getString(), bPrevCharWasSpace); } } diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index a5935402ba1d..644afc8d14e6 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -2005,7 +2005,7 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, { if (pCell->getType() == CELLTYPE_STRING) { - aString = pCell->mpString->getString(); + aString = pCell->getSharedString()->getString(); if (aString.getLength() <= 5 && aString.startsWithIgnoreAsciiCase("sep=")) { // Cell content is /^sep=.?$/ so write current separator. @@ -2170,7 +2170,7 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, aString = ScCellFormat::GetString(*pCell, nFormat, &pDummy, rFormatter, *m_pDocument); } else - aString = pCell->mpString->getString(); + aString = pCell->getSharedString()->getString(); bString = true; break; case CELLTYPE_EDIT : diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx index 007c0f862c9d..6690c05c5a3b 100644 --- a/sc/source/ui/undo/undocell.cxx +++ b/sc/source/ui/undo/undocell.cxx @@ -464,7 +464,7 @@ void ScUndoSetCell::SetValue( const ScCellValue& rVal ) aParam.setTextInput(); // Undo only cell content, without setting any number format. aParam.meSetTextNumFormat = ScSetStringParam::Keep; - rDoc.SetString(maPos, rVal.mpString->getString(), &aParam); + rDoc.SetString(maPos, rVal.getSharedString()->getString(), &aParam); } break; case CELLTYPE_EDIT: diff --git a/sc/source/ui/view/spellcheckcontext.cxx b/sc/source/ui/view/spellcheckcontext.cxx index 3f0d917126cf..1b29c17371af 100644 --- a/sc/source/ui/view/spellcheckcontext.cxx +++ b/sc/source/ui/view/spellcheckcontext.cxx @@ -77,7 +77,7 @@ public: CellType eType = rCell.getType(); if (eType == CELLTYPE_STRING) { - SharedStringMapType::const_iterator it = maStringMisspells.find(rCell.mpString->getData()); + SharedStringMapType::const_iterator it = maStringMisspells.find(rCell.getSharedString()->getData()); if (it == maStringMisspells.end()) return false; // Not available @@ -103,7 +103,7 @@ public: { CellType eType = rCell.getType(); if (eType == CELLTYPE_STRING) - maStringMisspells.insert_or_assign(rCell.mpString->getData(), std::move(pRanges)); + maStringMisspells.insert_or_assign(rCell.getSharedString()->getData(), std::move(pRanges)); else if (eType == CELLTYPE_EDIT) maEditTextMisspells.insert_or_assign(CellPos(nCol, nRow), std::move(pRanges)); } @@ -328,7 +328,7 @@ void SpellCheckContext::ensureResults(SCCOL nCol, SCROW nRow) // Cache miss, the cell needs spell-check.. if (eType == CELLTYPE_STRING) - mpEngine->SetText(aCell.mpString->getString()); + mpEngine->SetText(aCell.getSharedString()->getString()); else mpEngine->SetText(*aCell.mpEditText); diff --git a/sc/source/ui/view/tabvwsh5.cxx b/sc/source/ui/view/tabvwsh5.cxx index 7a6bde95c7fd..6b35721986a8 100644 --- a/sc/source/ui/view/tabvwsh5.cxx +++ b/sc/source/ui/view/tabvwsh5.cxx @@ -332,7 +332,7 @@ std::unique_ptr<SvxNumberInfoItem> ScTabViewShell::MakeNumberInfoItem( ScDocumen case CELLTYPE_STRING: { - aCellString = aCell.mpString->getString(); + aCellString = aCell.getSharedString()->getString(); eValType = SvxNumberValueType::String; } break;