summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2018-01-18 18:20:12 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2018-01-22 06:26:00 +0100
commitf3d1b2e58c39618d99bf017702ef19f373464b34 (patch)
treeeee2d5e21b1bfe7fde0732e22f47ce02501b7b97
parentf1d1eb2c647af7b751b024faef09e01d849aacbb (diff)
starmath: Make SmParser::Parse() return std::unique_ptr
Change-Id: I6c8811f71ab40398043cdcfa3334eee4381b4c7e Reviewed-on: https://gerrit.libreoffice.org/48098 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Takeshi Abe <tabe@fixedpoint.jp>
-rw-r--r--starmath/inc/document.hxx6
-rw-r--r--starmath/inc/parse.hxx4
-rw-r--r--starmath/qa/cppunit/test_cursor.cxx8
-rw-r--r--starmath/qa/cppunit/test_node.cxx8
-rw-r--r--starmath/qa/cppunit/test_nodetotextvisitors.cxx26
-rw-r--r--starmath/qa/cppunit/test_parse.cxx4
-rw-r--r--starmath/source/document.cxx19
-rw-r--r--starmath/source/mathmlexport.cxx4
-rw-r--r--starmath/source/mathmlimport.cxx4
-rw-r--r--starmath/source/node.cxx2
-rw-r--r--starmath/source/parse.cxx6
11 files changed, 39 insertions, 52 deletions
diff --git a/starmath/inc/document.hxx b/starmath/inc/document.hxx
index 2d6e63da5f2f..af2ce9475fc3 100644
--- a/starmath/inc/document.hxx
+++ b/starmath/inc/document.hxx
@@ -89,7 +89,7 @@ class SM_DLLPUBLIC SmDocShell : public SfxObjectShell, public SfxListener
SmParser maParser;
OUString maAccText;
SvtLinguOptions maLinguOptions;
- SmTableNode *mpTree;
+ std::unique_ptr<SmTableNode> mpTree;
SfxItemPool *mpEditEngineItemPool;
EditEngine *mpEditEngine;
VclPtr<SfxPrinter> mpPrinter; //q.v. comment to SmPrinter Access!
@@ -177,8 +177,8 @@ public:
void Parse();
SmParser & GetParser() { return maParser; }
- const SmTableNode *GetFormulaTree() const { return mpTree; }
- void SetFormulaTree(SmTableNode *pTree) { mpTree = pTree; }
+ const SmTableNode *GetFormulaTree() const { return mpTree.get(); }
+ void SetFormulaTree(SmTableNode *pTree) { mpTree.reset(pTree); }
const std::set< OUString > & GetUsedSymbols() const { return maUsedSymbols; }
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
index 5c4646e28eb8..a2faa73a3b40 100644
--- a/starmath/inc/parse.hxx
+++ b/starmath/inc/parse.hxx
@@ -78,7 +78,7 @@ class SmParser
inline bool TokenInGroup( TG nGroup );
// grammar
- SmTableNode *DoTable();
+ std::unique_ptr<SmTableNode> DoTable();
SmLineNode *DoLine();
std::unique_ptr<SmNode> DoExpression(bool bUseExtraSpaces = true);
SmNode *DoRelation();
@@ -114,7 +114,7 @@ public:
SmParser();
/** Parse rBuffer to formula tree */
- SmTableNode *Parse(const OUString &rBuffer);
+ std::unique_ptr<SmTableNode> Parse(const OUString &rBuffer);
/** Parse rBuffer to formula subtree that constitutes an expression */
std::unique_ptr<SmNode> ParseExpression(const OUString &rBuffer);
diff --git a/starmath/qa/cppunit/test_cursor.cxx b/starmath/qa/cppunit/test_cursor.cxx
index 702777a614f8..403994707d27 100644
--- a/starmath/qa/cppunit/test_cursor.cxx
+++ b/starmath/qa/cppunit/test_cursor.cxx
@@ -68,7 +68,7 @@ void Test::tearDown()
void Test::testCopyPaste()
{
OUString const sInput("a * b + c");
- std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
+ auto xTree = SmParser().Parse(sInput);
xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
SmCursor aCursor(xTree.get(), xDocShRef.get());
@@ -91,7 +91,7 @@ void Test::testCopyPaste()
void Test::testCopySelectPaste()
{
OUString const sInput("a * b + c");
- std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
+ auto xTree = SmParser().Parse(sInput);
xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
SmCursor aCursor(xTree.get(), xDocShRef.get());
@@ -118,7 +118,7 @@ void Test::testCopySelectPaste()
void Test::testCutPaste()
{
OUString const sInput("a * b + c");
- std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
+ auto xTree = SmParser().Parse(sInput);
xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
SmCursor aCursor(xTree.get(), xDocShRef.get());
@@ -141,7 +141,7 @@ void Test::testCutPaste()
void Test::testCutSelectPaste()
{
OUString const sInput("a * b + c");
- std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
+ auto xTree = SmParser().Parse(sInput);
xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
SmCursor aCursor(xTree.get(), xDocShRef.get());
diff --git a/starmath/qa/cppunit/test_node.cxx b/starmath/qa/cppunit/test_node.cxx
index 2a35bdffbe4c..ebf0682f531e 100644
--- a/starmath/qa/cppunit/test_node.cxx
+++ b/starmath/qa/cppunit/test_node.cxx
@@ -64,10 +64,10 @@ void NodeTest::testTdf47813()
{
SmParser aParser;
#define MATRIX "matrix {-2#33##4#-5##6,0#7}"
- std::unique_ptr<SmTableNode> pNodeA(aParser.Parse(MATRIX));
- std::unique_ptr<SmTableNode> pNodeC(aParser.Parse("alignc " MATRIX));
- std::unique_ptr<SmTableNode> pNodeL(aParser.Parse("alignl " MATRIX));
- std::unique_ptr<SmTableNode> pNodeR(aParser.Parse("alignr " MATRIX));
+ auto pNodeA = aParser.Parse(MATRIX);
+ auto pNodeC = aParser.Parse("alignc " MATRIX);
+ auto pNodeL = aParser.Parse("alignl " MATRIX);
+ auto pNodeR = aParser.Parse("alignr " MATRIX);
#undef MATRIX
ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
SmFormat aFmt;
diff --git a/starmath/qa/cppunit/test_nodetotextvisitors.cxx b/starmath/qa/cppunit/test_nodetotextvisitors.cxx
index 5399e68ec338..5c92b712334b 100644
--- a/starmath/qa/cppunit/test_nodetotextvisitors.cxx
+++ b/starmath/qa/cppunit/test_nodetotextvisitors.cxx
@@ -503,14 +503,13 @@ void Test::ParseAndCompare(const char *formula1, const char *formula2, const cha
void Test::testBinomInBinHor()
{
OUString sInput, sExpected;
- SmNode* pTree;
// set up a binom (table) node
sInput += "binom a b + c";
- pTree = SmParser().Parse(sInput);
+ auto pTree = SmParser().Parse(sInput);
pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
- SmCursor aCursor(pTree, xDocShRef.get());
+ SmCursor aCursor(pTree.get(), xDocShRef.get());
ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
// move forward (more than) enough places to be at the end
@@ -524,21 +523,18 @@ void Test::testBinomInBinHor()
sExpected += " { { binom a b + c } + d } ";
CPPUNIT_ASSERT_EQUAL_MESSAGE("Binom Node in BinHor Node", sExpected, xDocShRef->GetText());
-
- delete pTree;
}
void Test::testBinVerInUnary()
{
OUString sInput, sExpected;
- SmNode* pTree;
// set up a unary operator with operand
sInput += "- 1";
- pTree = SmParser().Parse(sInput);
+ auto pTree = SmParser().Parse(sInput);
pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
- SmCursor aCursor(pTree, xDocShRef.get());
+ SmCursor aCursor(pTree.get(), xDocShRef.get());
ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
// move forward (more than) enough places to be at the end
@@ -555,17 +551,15 @@ void Test::testBinVerInUnary()
sExpected += " - { 1 over 2 } ";
CPPUNIT_ASSERT_EQUAL_MESSAGE("Binary Vertical in Unary Operator", sExpected, xDocShRef->GetText());
-
- delete pTree;
}
void Test::testBinHorInSubSup()
{
// set up a blank formula
- SmNode* pTree = SmParser().Parse(OUString());
+ auto pTree = SmParser().Parse(OUString());
pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
- SmCursor aCursor(pTree, xDocShRef.get());
+ SmCursor aCursor(pTree.get(), xDocShRef.get());
ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
// Insert an RSup expression with a BinHor for the exponent
@@ -582,18 +576,16 @@ void Test::testBinHorInSubSup()
OUString sExpected = " { a ^ { b + c } + d } ";
CPPUNIT_ASSERT_EQUAL_MESSAGE("BinHor in SubSup", sExpected, xDocShRef->GetText());
-
- delete pTree;
}
void Test::testUnaryInMixedNumberAsNumerator()
{
// set up a unary operator
OUString sInput = "- 1";
- SmNode* pTree = SmParser().Parse(sInput);
+ auto pTree = SmParser().Parse(sInput);
pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
- SmCursor aCursor(pTree, xDocShRef.get());
+ SmCursor aCursor(pTree.get(), xDocShRef.get());
ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
// move forward (more than) enough places to be at the end
@@ -625,8 +617,6 @@ void Test::testUnaryInMixedNumberAsNumerator()
OUString sExpected = " { 2 { - 1 over 2 } + 4 } ";
CPPUNIT_ASSERT_EQUAL_MESSAGE("Unary in mixed number as Numerator", sExpected, xDocShRef->GetText());
-
- delete pTree;
}
void Test::testMiscEquivalent()
diff --git a/starmath/qa/cppunit/test_parse.cxx b/starmath/qa/cppunit/test_parse.cxx
index c99a80568839..ff5a12e72425 100644
--- a/starmath/qa/cppunit/test_parse.cxx
+++ b/starmath/qa/cppunit/test_parse.cxx
@@ -65,7 +65,7 @@ void ParseTest::tearDown()
*/
void ParseTest::testMinus()
{
- std::unique_ptr<SmTableNode> pNode(SmParser().Parse("-1.2"));
+ auto pNode = SmParser().Parse("-1.2");
CPPUNIT_ASSERT_EQUAL(size_t(1), pNode->GetNumSubNodes());
const SmNode *pNode0 = pNode->GetSubNode(0);
CPPUNIT_ASSERT(pNode0);
@@ -98,7 +98,7 @@ void ParseTest::testMinus()
*/
void ParseTest::testNospace()
{
- std::unique_ptr<SmTableNode> pNode(SmParser().Parse("nospace{ nitalic d {F(x) G(x)} }"));
+ auto pNode = SmParser().Parse("nospace{ nitalic d {F(x) G(x)} }");
CPPUNIT_ASSERT_EQUAL(size_t(1), pNode->GetNumSubNodes());
const SmNode *pNode0 = pNode->GetSubNode(0);
CPPUNIT_ASSERT(pNode0);
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index 2d5a29e2f6ba..d1ab6b0d02fe 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -213,7 +213,7 @@ OUString const & SmDocShell::GetAccessibleText()
void SmDocShell::Parse()
{
- delete mpTree;
+ mpTree.reset();
ReplaceBadChars();
mpTree = maParser.Parse(maText);
mnModifyCount++; //! see comment for SID_GAPHIC_SM in SmDocShell::GetState
@@ -412,11 +412,11 @@ void SmDocShell::DrawFormula(OutputDevice &rDev, Point &rPosition, bool bDrawSel
//Set selection if any
if(mpCursor && bDrawSelection){
mpCursor->AnnotateSelection();
- SmSelectionDrawingVisitor(rDev, mpTree, rPosition);
+ SmSelectionDrawingVisitor(rDev, mpTree.get(), rPosition);
}
//Drawing using visitor
- SmDrawingVisitor(rDev, rPosition, mpTree);
+ SmDrawingVisitor(rDev, rPosition, mpTree.get());
rDev.SetLayoutMode( nLayoutMode );
@@ -459,7 +459,7 @@ void SmDocShell::InvalidateCursor(){
SmCursor& SmDocShell::GetCursor(){
if(!mpCursor)
- mpCursor.reset(new SmCursor(mpTree, this));
+ mpCursor.reset(new SmCursor(mpTree.get(), this));
return *mpCursor;
}
@@ -611,7 +611,6 @@ void SmDocShell::Repaint()
SmDocShell::SmDocShell( SfxModelFlags i_nSfxCreationFlags )
: SfxObjectShell(i_nSfxCreationFlags)
- , mpTree(nullptr)
, mpEditEngineItemPool(nullptr)
, mpEditEngine(nullptr)
, mpPrinter(nullptr)
@@ -642,7 +641,6 @@ SmDocShell::~SmDocShell()
mpCursor.reset();
delete mpEditEngine;
SfxItemPool::Free(mpEditEngineItemPool);
- delete mpTree;
mpPrinter.disposeAndClear();
}
@@ -657,8 +655,7 @@ bool SmDocShell::ConvertFrom(SfxMedium &rMedium)
{
if (mpTree)
{
- delete mpTree;
- mpTree = nullptr;
+ mpTree.reset();
InvalidateCursor();
}
Reference<css::frame::XModel> xModel(GetModel());
@@ -867,7 +864,7 @@ void SmDocShell::writeFormulaOoxml(
Parse();
if( mpTree )
ArrangeFormula();
- SmOoxmlExport aEquation(mpTree, version, documentType);
+ SmOoxmlExport aEquation(mpTree.get(), version, documentType);
aEquation.ConvertFromStarMath( pSerializer );
}
@@ -877,7 +874,7 @@ void SmDocShell::writeFormulaRtf(OStringBuffer& rBuffer, rtl_TextEncoding nEncod
Parse();
if (mpTree)
ArrangeFormula();
- SmRtfExport aEquation(mpTree);
+ SmRtfExport aEquation(mpTree.get());
aEquation.ConvertFromStarMath(rBuffer, nEncoding);
}
@@ -1287,7 +1284,7 @@ void SmDocShell::SetModified(bool bModified)
bool SmDocShell::WriteAsMathType3( SfxMedium& rMedium )
{
- MathType aEquation( maText, mpTree );
+ MathType aEquation( maText, mpTree.get() );
return aEquation.ConvertFromStarMath( rMedium );
}
diff --git a/starmath/source/mathmlexport.cxx b/starmath/source/mathmlexport.cxx
index 780bf226c6ef..61827cefa36d 100644
--- a/starmath/source/mathmlexport.cxx
+++ b/starmath/source/mathmlexport.cxx
@@ -482,9 +482,9 @@ void SmXMLExport::ExportContent_()
SmParser &rParser = pDocShell->GetParser();
bool bVal = rParser.IsExportSymbolNames();
rParser.SetExportSymbolNames( true );
- SmNode *pTmpTree = rParser.Parse( aText );
+ auto pTmpTree = rParser.Parse( aText );
aText = rParser.GetText();
- delete pTmpTree;
+ pTmpTree.reset();
rParser.SetExportSymbolNames( bVal );
}
diff --git a/starmath/source/mathmlimport.cxx b/starmath/source/mathmlimport.cxx
index 62a705cae930..b22cb0c5387b 100644
--- a/starmath/source/mathmlimport.cxx
+++ b/starmath/source/mathmlimport.cxx
@@ -516,9 +516,9 @@ void SmXMLImport::endDocument()
SmParser &rParser = pDocShell->GetParser();
bool bVal = rParser.IsImportSymbolNames();
rParser.SetImportSymbolNames( true );
- SmNode *pTmpTree = rParser.Parse( aText );
+ auto pTmpTree = rParser.Parse( aText );
aText = rParser.GetText();
- delete pTmpTree;
+ pTmpTree.reset();
rParser.SetImportSymbolNames( bVal );
pDocShell->SetText( aText );
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index b7a138e2da9b..d44845411267 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -2097,7 +2097,7 @@ void SmTextNode::CreateTextFromNode(OUString &rText)
else
{
SmParser aParseTest;
- std::unique_ptr<SmTableNode> pTable(aParseTest.Parse(GetToken().aText));
+ auto pTable = aParseTest.Parse(GetToken().aText);
assert(pTable->GetType() == SmNodeType::Table);
bQuoted=true;
if (pTable->GetNumSubNodes() == 1)
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index 6d299ce1fee5..7e026673a69a 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -950,7 +950,7 @@ namespace
// grammar
-SmTableNode *SmParser::DoTable()
+std::unique_ptr<SmTableNode> SmParser::DoTable()
{
DepthProtect aDepthGuard(m_nParseDepth);
if (aDepthGuard.TooDeep())
@@ -966,7 +966,7 @@ SmTableNode *SmParser::DoTable()
assert(m_aCurToken.eType == TEND);
std::unique_ptr<SmTableNode> xSNode(new SmTableNode(m_aCurToken));
xSNode->SetSubNodes(buildNodeArray(aLineArray));
- return xSNode.release();
+ return xSNode;
}
SmNode *SmParser::DoAlign(bool bUseExtraSpaces)
@@ -2314,7 +2314,7 @@ SmParser::SmParser()
{
}
-SmTableNode *SmParser::Parse(const OUString &rBuffer)
+std::unique_ptr<SmTableNode> SmParser::Parse(const OUString &rBuffer)
{
m_aUsedSymbols.clear();