summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorMarcel Metz <mmetz@adrian-broher.net>2011-12-05 20:08:35 +0100
committerEike Rathke <erack@redhat.com>2011-12-05 22:53:17 +0100
commitf5b63844cc6a4b96fcf0db0c0c9c1194847fc914 (patch)
treef627bfa5ff29940a8b7af8d76e68652cdc06430b /starmath
parent6c6bc18961eb74074183a68d8dbea7e4bbefe059 (diff)
Replace SmNodeStack with std::stack< SmNode* >
Diffstat (limited to 'starmath')
-rw-r--r--starmath/inc/parse.hxx3
-rw-r--r--starmath/source/math_pch.cxx1
-rw-r--r--starmath/source/mathmlimport.cxx224
-rw-r--r--starmath/source/mathmlimport.hxx8
-rw-r--r--starmath/source/parse.cxx225
5 files changed, 282 insertions, 179 deletions
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
index b8834becb8a3..5e4ce31db759 100644
--- a/starmath/inc/parse.hxx
+++ b/starmath/inc/parse.hxx
@@ -30,7 +30,6 @@
#include <vcl/svapp.hxx>
-#include <tools/stack.hxx>
#include <tools/string.hxx>
#include <set>
@@ -167,7 +166,7 @@ struct SmErrorDesc
};
-DECLARE_STACK(SmNodeStack, SmNode *)
+typedef ::std::stack< SmNode* > SmNodeStack;
typedef ::std::vector< SmErrorDesc* > SmErrDescList;
/**************************************************************************/
diff --git a/starmath/source/math_pch.cxx b/starmath/source/math_pch.cxx
index 1119a1941c14..b9e227051e5c 100644
--- a/starmath/source/math_pch.cxx
+++ b/starmath/source/math_pch.cxx
@@ -141,7 +141,6 @@
#include <tools/datetime.hxx>
#include <tools/wldcrd.hxx>
#include <parse.hxx>
-#include <tools/stack.hxx>
#include <types.hxx>
#include <config.hxx>
#include <svtools/confitem.hxx>
diff --git a/starmath/source/mathmlimport.cxx b/starmath/source/mathmlimport.cxx
index b4d57bb61837..0db8cc499d6f 100644
--- a/starmath/source/mathmlimport.cxx
+++ b/starmath/source/mathmlimport.cxx
@@ -747,8 +747,9 @@ void SmXMLContext_Helper::ApplyAttrs()
aToken.eType = TNBOLD;
SmStructureNode *pFontNode = static_cast<SmStructureNode *>
(new SmFontNode(aToken));
- pFontNode->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pFontNode);
+ pFontNode->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pFontNode);
}
if (nIsItalic != -1)
{
@@ -758,8 +759,9 @@ void SmXMLContext_Helper::ApplyAttrs()
aToken.eType = TNITALIC;
SmStructureNode *pFontNode = static_cast<SmStructureNode *>
(new SmFontNode(aToken));
- pFontNode->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pFontNode);
+ pFontNode->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pFontNode);
}
if (nFontSize != 0.0)
{
@@ -779,8 +781,9 @@ void SmXMLContext_Helper::ApplyAttrs()
else
pFontNode->SetSizeParameter(Fraction(nFontSize),FNTSIZ_ABSOLUT);
- pFontNode->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pFontNode);
+ pFontNode->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pFontNode);
}
if (sFontFamily.getLength())
{
@@ -798,8 +801,9 @@ void SmXMLContext_Helper::ApplyAttrs()
aToken.aText = sFontFamily;
SmFontNode *pFontNode = new SmFontNode(aToken);
- pFontNode->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pFontNode);
+ pFontNode->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pFontNode);
}
if (sColor.getLength())
{
@@ -812,8 +816,9 @@ void SmXMLContext_Helper::ApplyAttrs()
if (aToken.eType != -1)
{
SmFontNode *pFontNode = new SmFontNode(aToken);
- pFontNode->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pFontNode);
+ pFontNode->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pFontNode);
}
}
@@ -846,7 +851,7 @@ public:
SmXMLRowContext_Impl(SmXMLImport &rImport,sal_uInt16 nPrefix,
const OUString& rLName)
: SmXMLDocContext_Impl(rImport,nPrefix,rLName)
- { nElementCount = GetSmImport().GetNodeStack().Count(); }
+ { nElementCount = GetSmImport().GetNodeStack().size(); }
virtual SvXMLImportContext *CreateChildContext(sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference< xml::sax::XAttributeList > &xAttrList);
@@ -925,7 +930,7 @@ void SmXMLStyleContext_Impl::EndElement()
arguments
*/
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- if (rNodeStack.Count() - nElementCount > 1)
+ if (rNodeStack.size() - nElementCount > 1)
SmXMLRowContext_Impl::EndElement();
aStyleHelper.ApplyAttrs();
}
@@ -950,7 +955,7 @@ void SmXMLPaddedContext_Impl::EndElement()
contents are treated as a single "inferred <mrow>" containing its
arguments
*/
- if (GetSmImport().GetNodeStack().Count() - nElementCount > 1)
+ if (GetSmImport().GetNodeStack().size() - nElementCount > 1)
SmXMLRowContext_Impl::EndElement();
}
@@ -974,7 +979,7 @@ void SmXMLPhantomContext_Impl::EndElement()
contents are treated as a single "inferred <mrow>" containing its
arguments
*/
- if (GetSmImport().GetNodeStack().Count() - nElementCount > 1)
+ if (GetSmImport().GetNodeStack().size() - nElementCount > 1)
SmXMLRowContext_Impl::EndElement();
SmToken aToken;
@@ -986,8 +991,9 @@ void SmXMLPhantomContext_Impl::EndElement()
SmStructureNode *pPhantom = static_cast<SmStructureNode *>
(new SmFontNode(aToken));
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- pPhantom->SetSubNodes(0,rNodeStack.Pop());
- rNodeStack.Push(pPhantom);
+ pPhantom->SetSubNodes(0,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pPhantom);
}
////////////////////////////////////////////////////////////
@@ -1064,14 +1070,15 @@ void SmXMLFencedContext_Impl::EndElement()
aToken.aText = ',';
aToken.eType = TIDENT;
- sal_uLong i = rNodeStack.Count() - nElementCount;
- if (rNodeStack.Count() - nElementCount > 1)
- i += rNodeStack.Count() - 1 - nElementCount;
+ sal_uLong i = rNodeStack.size() - nElementCount;
+ if (rNodeStack.size() - nElementCount > 1)
+ i += rNodeStack.size() - 1 - nElementCount;
aRelationArray.resize(i);
- while (rNodeStack.Count() > nElementCount)
+ while (rNodeStack.size() > nElementCount)
{
- aRelationArray[--i] = rNodeStack.Pop();
- if (i > 1 && rNodeStack.Count() > 1)
+ aRelationArray[--i] = rNodeStack.top();
+ rNodeStack.pop();
+ if (i > 1 && rNodeStack.size() > 1)
aRelationArray[--i] = new SmGlyphSpecialNode(aToken);
}
@@ -1082,7 +1089,7 @@ void SmXMLFencedContext_Impl::EndElement()
pSNode->SetSubNodes(pLeft,pBody,pRight);
pSNode->SetScaleMode(SCALE_HEIGHT);
- GetSmImport().GetNodeStack().Push(pSNode);
+ GetSmImport().GetNodeStack().push(pSNode);
}
@@ -1108,10 +1115,10 @@ void SmXMLErrorContext_Impl::EndElement()
of something. For now just throw them all away.
*/
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- while (rNodeStack.Count() > nElementCount)
+ while (rNodeStack.size() > nElementCount)
{
- SmNode *pNode = rNodeStack.Pop();
- delete pNode;
+ delete rNodeStack.top();
+ rNodeStack.pop();
}
}
@@ -1145,7 +1152,7 @@ void SmXMLNumberContext_Impl::TCharacters(const OUString &rChars)
void SmXMLNumberContext_Impl::EndElement()
{
- GetSmImport().GetNodeStack().Push(new SmTextNode(aToken,FNT_NUMBER));
+ GetSmImport().GetNodeStack().push(new SmTextNode(aToken,FNT_NUMBER));
}
////////////////////////////////////////////////////////////
@@ -1226,7 +1233,7 @@ void SmXMLTextContext_Impl::TCharacters(const OUString &rChars)
void SmXMLTextContext_Impl::EndElement()
{
- GetSmImport().GetNodeStack().Push(new SmTextNode(aToken,FNT_TEXT));
+ GetSmImport().GetNodeStack().push(new SmTextNode(aToken,FNT_TEXT));
}
////////////////////////////////////////////////////////////
@@ -1272,7 +1279,7 @@ void SmXMLStringContext_Impl::TCharacters(const OUString &rChars)
void SmXMLStringContext_Impl::EndElement()
{
- GetSmImport().GetNodeStack().Push(new SmTextNode(aToken,FNT_FIXED));
+ GetSmImport().GetNodeStack().push(new SmTextNode(aToken,FNT_FIXED));
}
////////////////////////////////////////////////////////////
@@ -1332,7 +1339,7 @@ void SmXMLIdentifierContext_Impl::EndElement()
aStyleHelper.bFontNodeNeeded=sal_False;
if (aStyleHelper.bFontNodeNeeded)
aStyleHelper.ApplyAttrs();
- GetSmImport().GetNodeStack().Push(pNode);
+ GetSmImport().GetNodeStack().push(pNode);
}
void SmXMLIdentifierContext_Impl::TCharacters(const OUString &rChars)
@@ -1377,7 +1384,7 @@ void SmXMLOperatorContext_Impl::EndElement()
//to scale the operator to the height of the expression itself
if (bIsStretchy)
pNode->SetScaleMode(SCALE_HEIGHT);
- GetSmImport().GetNodeStack().Push(pNode);
+ GetSmImport().GetNodeStack().push(pNode);
}
@@ -1431,7 +1438,7 @@ void SmXMLSpaceContext_Impl::StartElement(
aToken.nLevel = 5;
SmBlankNode *pBlank = new SmBlankNode(aToken);
pBlank->IncreaseBy(aToken);
- GetSmImport().GetNodeStack().Push(pBlank);
+ GetSmImport().GetNodeStack().push(pBlank);
}
////////////////////////////////////////////////////////////
@@ -1456,7 +1463,7 @@ public:
void SmXMLSubContext_Impl::GenericEndElement(SmTokenType eType, SmSubSup eSubSup)
{
/*The <msub> element requires exactly 2 arguments.*/
- const bool bNodeCheck = GetSmImport().GetNodeStack().Count() - nElementCount == 2;
+ const bool bNodeCheck = GetSmImport().GetNodeStack().size() - nElementCount == 2;
OSL_ENSURE( bNodeCheck, "Sub has not two arguments" );
if (!bNodeCheck)
return;
@@ -1475,10 +1482,12 @@ void SmXMLSubContext_Impl::GenericEndElement(SmTokenType eType, SmSubSup eSubSup
for (sal_uLong i = 1; i < aSubNodes.size(); i++)
aSubNodes[i] = NULL;
- aSubNodes[eSubSup+1] = rNodeStack.Pop();
- aSubNodes[0] = rNodeStack.Pop();
+ aSubNodes[eSubSup+1] = rNodeStack.top();
+ rNodeStack.pop();
+ aSubNodes[0] = rNodeStack.top();
+ rNodeStack.pop();
pNode->SetSubNodes(aSubNodes);
- rNodeStack.Push(pNode);
+ rNodeStack.push(pNode);
}
////////////////////////////////////////////////////////////
@@ -1518,7 +1527,7 @@ void SmXMLSubSupContext_Impl::GenericEndElement(SmTokenType eType,
SmSubSup aSub,SmSubSup aSup)
{
/*The <msub> element requires exactly 3 arguments.*/
- const bool bNodeCheck = GetSmImport().GetNodeStack().Count() - nElementCount == 3;
+ const bool bNodeCheck = GetSmImport().GetNodeStack().size() - nElementCount == 3;
OSL_ENSURE( bNodeCheck, "SubSup has not three arguments" );
if (!bNodeCheck)
return;
@@ -1537,11 +1546,14 @@ void SmXMLSubSupContext_Impl::GenericEndElement(SmTokenType eType,
for (sal_uLong i = 1; i < aSubNodes.size(); i++)
aSubNodes[i] = NULL;
- aSubNodes[aSup+1] = rNodeStack.Pop();
- aSubNodes[aSub+1] = rNodeStack.Pop();
- aSubNodes[0] = rNodeStack.Pop();
+ aSubNodes[aSup+1] = rNodeStack.top();
+ rNodeStack.pop();
+ aSubNodes[aSub+1] = rNodeStack.top();
+ rNodeStack.pop();
+ aSubNodes[0] = rNodeStack.top();
+ rNodeStack.pop();
pNode->SetSubNodes(aSubNodes);
- rNodeStack.Push(pNode);
+ rNodeStack.push(pNode);
}
////////////////////////////////////////////////////////////
@@ -1569,14 +1581,15 @@ void SmXMLUnderContext_Impl::StartElement(const uno::Reference<
void SmXMLUnderContext_Impl::HandleAccent()
{
- const bool bNodeCheck = GetSmImport().GetNodeStack().Count() - nElementCount == 2;
+ const bool bNodeCheck = GetSmImport().GetNodeStack().size() - nElementCount == 2;
OSL_ENSURE( bNodeCheck, "Sub has not two arguments" );
if (!bNodeCheck)
return;
/*Just one special case for the underline thing*/
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- SmNode *pTest = rNodeStack.Pop();
+ SmNode *pTest = rNodeStack.top();
+ rNodeStack.pop();
SmToken aToken;
aToken.cMathChar = '\0';
aToken.nGroup = 0;
@@ -1596,10 +1609,11 @@ void SmXMLUnderContext_Impl::HandleAccent()
else
aSubNodes[0] = pTest;
- aSubNodes[1] = rNodeStack.Pop();
+ aSubNodes[1] = rNodeStack.top();
+ rNodeStack.pop();
pNode->SetSubNodes(aSubNodes);
pNode->SetScaleMode(SCALE_WIDTH);
- rNodeStack.Push(pNode);
+ rNodeStack.push(pNode);
}
@@ -1647,7 +1661,7 @@ void SmXMLOverContext_Impl::EndElement()
void SmXMLOverContext_Impl::HandleAccent()
{
- const bool bNodeCheck = GetSmImport().GetNodeStack().Count() - nElementCount == 2;
+ const bool bNodeCheck = GetSmImport().GetNodeStack().size() - nElementCount == 2;
OSL_ENSURE (bNodeCheck, "Sub has not two arguments");
if (!bNodeCheck)
return;
@@ -1663,11 +1677,13 @@ void SmXMLOverContext_Impl::HandleAccent()
SmNodeArray aSubNodes;
aSubNodes.resize(2);
- aSubNodes[0] = rNodeStack.Pop();
- aSubNodes[1] = rNodeStack.Pop();
+ aSubNodes[0] = rNodeStack.top();
+ rNodeStack.pop();
+ aSubNodes[1] = rNodeStack.top();
+ rNodeStack.pop();
pNode->SetSubNodes(aSubNodes);
pNode->SetScaleMode(SCALE_WIDTH);
- rNodeStack.Push(pNode);
+ rNodeStack.push(pNode);
}
@@ -1727,7 +1743,7 @@ void SmXMLNoneContext_Impl::EndElement(void)
aToken.aText.Erase();
aToken.nLevel = 5;
aToken.eType = TIDENT;
- GetSmImport().GetNodeStack().Push(
+ GetSmImport().GetNodeStack().push(
new SmTextNode(aToken,FNT_VARIABLE));
}
@@ -2179,27 +2195,33 @@ void SmXMLDocContext_Impl::EndElement()
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
for (sal_uLong i=0;i< 1;i++)
- ContextArray[i] = rNodeStack.Pop();
+ {
+ ContextArray[i] = rNodeStack.top();
+ rNodeStack.pop();
+ }
SmToken aDummy;
SmStructureNode *pSNode = new SmLineNode(aDummy);
pSNode->SetSubNodes(ContextArray);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
SmNodeArray LineArray;
- sal_uLong n = rNodeStack.Count();
+ sal_uLong n = rNodeStack.size();
LineArray.resize(n);
for (sal_uLong j = 0; j < n; j++)
- LineArray[n - (j + 1)] = rNodeStack.Pop();
+ {
+ LineArray[n - (j + 1)] = rNodeStack.top();
+ rNodeStack.pop();
+ }
SmStructureNode *pSNode2 = new SmTableNode(aDummy);
pSNode2->SetSubNodes(LineArray);
- rNodeStack.Push(pSNode2);
+ rNodeStack.push(pSNode2);
}
void SmXMLFracContext_Impl::EndElement()
{
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- const bool bNodeCheck = rNodeStack.Count() - nElementCount == 2;
+ const bool bNodeCheck = rNodeStack.size() - nElementCount == 2;
OSL_ENSURE( bNodeCheck, "Fraction (mfrac) tag is missing component" );
if (!bNodeCheck)
return;
@@ -2211,16 +2233,18 @@ void SmXMLFracContext_Impl::EndElement()
aToken.eType = TOVER;
SmStructureNode *pSNode = new SmBinVerNode(aToken);
SmNode *pOper = new SmRectangleNode(aToken);
- SmNode *pSecond = rNodeStack.Pop();
- SmNode *pFirst = rNodeStack.Pop();
+ SmNode *pSecond = rNodeStack.top();
+ rNodeStack.pop();
+ SmNode *pFirst = rNodeStack.top();
+ rNodeStack.pop();
pSNode->SetSubNodes(pFirst,pOper,pSecond);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
}
void SmXMLRootContext_Impl::EndElement()
{
/*The <mroot> element requires exactly 2 arguments.*/
- const bool bNodeCheck = GetSmImport().GetNodeStack().Count() - nElementCount == 2;
+ const bool bNodeCheck = GetSmImport().GetNodeStack().size() - nElementCount == 2;
OSL_ENSURE( bNodeCheck, "Root tag is missing component");
if (!bNodeCheck)
return;
@@ -2233,10 +2257,12 @@ void SmXMLRootContext_Impl::EndElement()
SmStructureNode *pSNode = new SmRootNode(aToken);
SmNode *pOper = new SmRootSymbolNode(aToken);
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- SmNode *pIndex = rNodeStack.Pop();
- SmNode *pBase = rNodeStack.Pop();
+ SmNode *pIndex = rNodeStack.top();
+ rNodeStack.pop();
+ SmNode *pBase = rNodeStack.top();
+ rNodeStack.pop();
pSNode->SetSubNodes(pIndex,pOper,pBase);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
}
void SmXMLSqrtContext_Impl::EndElement()
@@ -2246,7 +2272,7 @@ void SmXMLSqrtContext_Impl::EndElement()
contents are treated as a single "inferred <mrow>" containing its
arguments
*/
- if (GetSmImport().GetNodeStack().Count() - nElementCount > 1)
+ if (GetSmImport().GetNodeStack().size() - nElementCount > 1)
SmXMLRowContext_Impl::EndElement();
SmToken aToken;
@@ -2257,22 +2283,25 @@ void SmXMLSqrtContext_Impl::EndElement()
SmStructureNode *pSNode = new SmRootNode(aToken);
SmNode *pOper = new SmRootSymbolNode(aToken);
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- pSNode->SetSubNodes(0,pOper,rNodeStack.Pop());
- rNodeStack.Push(pSNode);
+ pSNode->SetSubNodes(0,pOper,rNodeStack.top());
+ rNodeStack.pop();
+ rNodeStack.push(pSNode);
}
void SmXMLRowContext_Impl::EndElement()
{
SmNodeArray aRelationArray;
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- sal_uLong nSize = rNodeStack.Count()-nElementCount;
+ sal_uLong nSize = rNodeStack.size()-nElementCount;
if (nSize > 0)
{
aRelationArray.resize(nSize);
- for (sal_uLong j=rNodeStack.Count()-nElementCount;j > 0;j--)
- aRelationArray[j-1] = rNodeStack.Pop();
-
+ for (sal_uLong j=rNodeStack.size()-nElementCount;j > 0;j--)
+ {
+ aRelationArray[j-1] = rNodeStack.top();
+ rNodeStack.pop();
+ }
//If the first or last element is an operator with stretchyness
//set then we must create a brace node here from those elements,
@@ -2332,7 +2361,7 @@ void SmXMLRowContext_Impl::EndElement()
pSNode->SetSubNodes(pLeft,pBody,pRight);
pSNode->SetScaleMode(SCALE_HEIGHT);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
return;
}
}
@@ -2350,7 +2379,7 @@ void SmXMLRowContext_Impl::EndElement()
SmToken aDummy;
SmStructureNode *pSNode = new SmExpressionNode(aDummy);
pSNode->SetSubNodes(aRelationArray);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
}
@@ -2461,10 +2490,10 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
{
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- if (rNodeStack.Count() <= nElementCount)
+ if (rNodeStack.size() <= nElementCount)
return;
- sal_uLong nCount = rNodeStack.Count() - nElementCount - 1;
+ sal_uLong nCount = rNodeStack.size() - nElementCount - 1;
if (nCount == 0)
return;
@@ -2478,7 +2507,10 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
SmNodeStack aReverseStack;
for (sal_uLong i = 0; i < nCount + 1; i++)
- aReverseStack.Push(rNodeStack.Pop());
+ {
+ aReverseStack.push(rNodeStack.top());
+ rNodeStack.pop();
+ }
SmSubSup eSub = bIsPrescript ? LSUB : RSUB;
SmSubSup eSup = bIsPrescript ? LSUP : RSUP;
@@ -2493,28 +2525,35 @@ void SmXMLMultiScriptsContext_Impl::ProcessSubSupPairs(bool bIsPrescript)
/*On each loop the base and its sub sup pair becomes the
base for the next loop to which the next sub sup pair is
attached, i.e. wheels within wheels*/
- aSubNodes[0] = aReverseStack.Pop();
+ aSubNodes[0] = aReverseStack.top();
+ aReverseStack.pop();
- SmNode *pScriptNode = aReverseStack.Pop();
+ SmNode *pScriptNode = aReverseStack.top();
+ aReverseStack.pop();
if (pScriptNode && ((pScriptNode->GetToken().eType != TIDENT) ||
(pScriptNode->GetToken().aText.Len())))
aSubNodes[eSub+1] = pScriptNode;
- pScriptNode = aReverseStack.Pop();
+ pScriptNode = aReverseStack.top();
+ aReverseStack.pop();
if (pScriptNode && ((pScriptNode->GetToken().eType != TIDENT) ||
(pScriptNode->GetToken().aText.Len())))
aSubNodes[eSup+1] = pScriptNode;
pNode->SetSubNodes(aSubNodes);
- aReverseStack.Push(pNode);
+ aReverseStack.push(pNode);
}
- rNodeStack.Push(aReverseStack.Pop());
+ rNodeStack.push(aReverseStack.top());
+ aReverseStack.pop();
}
else
{
// Ignore odd number of elements.
for (sal_uLong i = 0; i < nCount; i++)
- delete rNodeStack.Pop();
+ {
+ delete rNodeStack.top();
+ rNodeStack.pop();
+ }
}
}
@@ -2524,15 +2563,16 @@ void SmXMLTableContext_Impl::EndElement()
SmNodeArray aExpressionArray;
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
SmNodeStack aReverseStack;
- aExpressionArray.resize(rNodeStack.Count()-nElementCount);
+ aExpressionArray.resize(rNodeStack.size()-nElementCount);
- sal_uLong nRows = rNodeStack.Count()-nElementCount;
+ sal_uLong nRows = rNodeStack.size()-nElementCount;
sal_uInt16 nCols = 0;
SmStructureNode *pArray;
- for (sal_uLong i=rNodeStack.Count()-nElementCount;i > 0;i--)
+ for (sal_uLong i=rNodeStack.size()-nElementCount;i > 0;i--)
{
- pArray = (SmStructureNode *)rNodeStack.Pop();
+ pArray = (SmStructureNode *)rNodeStack.top();
+ rNodeStack.pop();
if (pArray->GetNumSubNodes() == 0)
{
//This is a little tricky, it is possible that there was
@@ -2553,13 +2593,14 @@ void SmXMLTableContext_Impl::EndElement()
if (pArray->GetNumSubNodes() > nCols)
nCols = pArray->GetNumSubNodes();
- aReverseStack.Push(pArray);
+ aReverseStack.push(pArray);
}
aExpressionArray.resize(nCols*nRows);
sal_uLong j=0;
- while (aReverseStack.Count())
+ while ( !aReverseStack.empty() )
{
- pArray = (SmStructureNode *)aReverseStack.Pop();
+ pArray = (SmStructureNode *)aReverseStack.top();
+ aReverseStack.pop();
for (sal_uInt16 i=0;i<pArray->GetNumSubNodes();i++)
aExpressionArray[j++] = pArray->GetSubNode(i);
}
@@ -2572,7 +2613,7 @@ void SmXMLTableContext_Impl::EndElement()
SmMatrixNode *pSNode = new SmMatrixNode(aToken);
pSNode->SetSubNodes(aExpressionArray);
pSNode->SetRowCol(static_cast<sal_uInt16>(nRows),nCols);
- rNodeStack.Push(pSNode);
+ rNodeStack.push(pSNode);
}
SvXMLImportContext *SmXMLTableRowContext_Impl::CreateChildContext(
@@ -2634,9 +2675,10 @@ void SmXMLActionContext_Impl::EndElement()
first pushed one*/
SmNodeStack &rNodeStack = GetSmImport().GetNodeStack();
- for (sal_uLong i=rNodeStack.Count()-nElementCount;i > 1;i--)
+ for (sal_uLong i=rNodeStack.size()-nElementCount;i > 1;i--)
{
- delete rNodeStack.Pop();
+ delete rNodeStack.top();
+ rNodeStack.pop();
}
}
diff --git a/starmath/source/mathmlimport.hxx b/starmath/source/mathmlimport.hxx
index db44e4a336ea..5ed8096300ac 100644
--- a/starmath/source/mathmlimport.hxx
+++ b/starmath/source/mathmlimport.hxx
@@ -252,7 +252,13 @@ public:
const SvXMLTokenMap &GetColorTokenMap();
SmNodeStack & GetNodeStack() { return aNodeStack; }
- SmNode *GetTree() { return aNodeStack.Pop(); }
+ SmNode *GetTree()
+ {
+ SmNode* result = aNodeStack.top();
+ aNodeStack.pop();
+ return result;
+ }
+
sal_Bool GetSuccess() { return bSuccess; }
String &GetText() { return aText; }
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index a01a85b0e8fe..232be481d4d9 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -999,16 +999,19 @@ void SmParser::Table()
if (m_aCurToken.eType != TEND)
Error(PE_UNEXPECTED_CHAR);
- sal_uLong n = m_aNodeStack.Count();
+ sal_uLong n = m_aNodeStack.size();
LineArray.resize(n);
for (sal_uLong i = 0; i < n; i++)
- LineArray[n - (i + 1)] = m_aNodeStack.Pop();
+ {
+ LineArray[n - (i + 1)] = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ }
SmStructureNode *pSNode = new SmTableNode(m_aCurToken);
pSNode->SetSubNodes(LineArray);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
@@ -1062,8 +1065,10 @@ void SmParser::Align()
Insert('}', GetTokenIndex());
if (pSNode)
- { pSNode->SetSubNodes(m_aNodeStack.Pop(), 0);
- m_aNodeStack.Push(pSNode);
+ {
+ pSNode->SetSubNodes(m_aNodeStack.top(), 0);
+ m_aNodeStack.pop();
+ m_aNodeStack.push(pSNode);
}
}
@@ -1081,7 +1086,8 @@ void SmParser::Line()
if (m_aCurToken.eType != TEND && m_aCurToken.eType != TNEWLINE)
{ Align();
ExpressionArray.resize(++n);
- ExpressionArray[n - 1] = m_aNodeStack.Pop();
+ ExpressionArray[n - 1] = m_aNodeStack.top();
+ m_aNodeStack.pop();
}
while (m_aCurToken.eType != TEND && m_aCurToken.eType != TNEWLINE)
@@ -1090,7 +1096,8 @@ void SmParser::Line()
else
Align();
ExpressionArray.resize(++n);
- ExpressionArray[n - 1] = m_aNodeStack.Pop();
+ ExpressionArray[n - 1] = m_aNodeStack.top();
+ m_aNodeStack.pop();
}
//If there's no expression, add an empty one.
@@ -1101,20 +1108,21 @@ void SmParser::Line()
SmStructureNode *pSNode = new SmLineNode(m_aCurToken);
pSNode->SetSubNodes(ExpressionArray);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
void SmParser::Expression()
{
bool bUseExtraSpaces = true;
- SmNode *pNode = m_aNodeStack.Pop();
+ SmNode *pNode = m_aNodeStack.top();
+ m_aNodeStack.pop();
if (pNode)
{
if (pNode->GetToken().eType == TNOSPACE)
bUseExtraSpaces = false;
else
- m_aNodeStack.Push(pNode); // push the node from above again (now to be used as argument to this current 'nospace' node)
+ m_aNodeStack.push(pNode); // push the node from above again (now to be used as argument to this current 'nospace' node)
}
sal_uInt16 n = 0;
@@ -1124,18 +1132,20 @@ void SmParser::Expression()
Relation();
RelationArray.resize(++n);
- RelationArray[n - 1] = m_aNodeStack.Pop();
+ RelationArray[n - 1] = m_aNodeStack.top();
+ m_aNodeStack.pop();
while (m_aCurToken.nLevel >= 4)
{ Relation();
RelationArray.resize(++n);
- RelationArray[n - 1] = m_aNodeStack.Pop();
+ RelationArray[n - 1] = m_aNodeStack.top();
+ m_aNodeStack.pop();
}
SmExpressionNode *pSNode = new SmExpressionNode(m_aCurToken);
pSNode->SetSubNodes(RelationArray);
pSNode->SetUseExtraSpaces(bUseExtraSpaces);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
@@ -1145,15 +1155,18 @@ void SmParser::Relation()
while (TokenInGroup(TGRELATION))
{
SmStructureNode *pSNode = new SmBinHorNode(m_aCurToken);
- SmNode *pFirst = m_aNodeStack.Pop();
+ SmNode *pFirst = m_aNodeStack.top();
+ m_aNodeStack.pop();
OpSubSup();
- SmNode *pSecond = m_aNodeStack.Pop();
+ SmNode *pSecond = m_aNodeStack.top();
+ m_aNodeStack.pop();
Sum();
- pSNode->SetSubNodes(pFirst, pSecond, m_aNodeStack.Pop());
- m_aNodeStack.Push(pSNode);
+ pSNode->SetSubNodes(pFirst, pSecond, m_aNodeStack.top());
+ m_aNodeStack.pop();
+ m_aNodeStack.push(pSNode);
}
}
@@ -1164,15 +1177,18 @@ void SmParser::Sum()
while (TokenInGroup(TGSUM))
{
SmStructureNode *pSNode = new SmBinHorNode(m_aCurToken);
- SmNode *pFirst = m_aNodeStack.Pop();
+ SmNode *pFirst = m_aNodeStack.top();
+ m_aNodeStack.pop();
OpSubSup();
- SmNode *pSecond = m_aNodeStack.Pop();
+ SmNode *pSecond = m_aNodeStack.top();
+ m_aNodeStack.pop();
Product();
- pSNode->SetSubNodes(pFirst, pSecond, m_aNodeStack.Pop());
- m_aNodeStack.Push(pSNode);
+ pSNode->SetSubNodes(pFirst, pSecond, m_aNodeStack.top());
+ m_aNodeStack.pop();
+ m_aNodeStack.push(pSNode);
}
}
@@ -1183,8 +1199,9 @@ void SmParser::Product()
while (TokenInGroup(TGPRODUCT))
{ SmStructureNode *pSNode;
- SmNode *pFirst = m_aNodeStack.Pop(),
+ SmNode *pFirst = m_aNodeStack.top(),
*pOper;
+ m_aNodeStack.pop();
bool bSwitchArgs = false;
SmTokenType eType = m_aCurToken.eType;
@@ -1206,7 +1223,8 @@ void SmParser::Product()
m_aCurToken.nGroup = TGPRODUCT;
GlyphSpecial();
- pOper = m_aNodeStack.Pop();
+ pOper = m_aNodeStack.top();
+ m_aNodeStack.pop();
break;
case TOVERBRACE :
@@ -1235,17 +1253,24 @@ void SmParser::Product()
pSNode = new SmBinHorNode(m_aCurToken);
OpSubSup();
- pOper = m_aNodeStack.Pop();
+ pOper = m_aNodeStack.top();
+ m_aNodeStack.pop();
}
Power();
if (bSwitchArgs)
+ {
//! vgl siehe SmBinDiagonalNode::Arrange
- pSNode->SetSubNodes(pFirst, m_aNodeStack.Pop(), pOper);
+ pSNode->SetSubNodes(pFirst, m_aNodeStack.top(), pOper);
+ m_aNodeStack.pop();
+ }
else
- pSNode->SetSubNodes(pFirst, pOper, m_aNodeStack.Pop());
- m_aNodeStack.Push(pSNode);
+ {
+ pSNode->SetSubNodes(pFirst, pOper, m_aNodeStack.top());
+ m_aNodeStack.pop();
+ }
+ m_aNodeStack.push(pSNode);
}
}
@@ -1270,7 +1295,8 @@ void SmParser::SubSup(sal_uLong nActiveGroup)
// initialize subnodes array
SmNodeArray aSubNodes;
aSubNodes.resize(1 + SUBSUP_NUM_ENTRIES);
- aSubNodes[0] = m_aNodeStack.Pop();
+ aSubNodes[0] = m_aNodeStack.top();
+ m_aNodeStack.pop();
for (sal_uInt16 i = 1; i < aSubNodes.size(); i++)
aSubNodes[i] = NULL;
@@ -1310,18 +1336,19 @@ void SmParser::SubSup(sal_uLong nActiveGroup)
// set sub-/supscript if not already done
if (aSubNodes[nIndex] != NULL)
Error(PE_DOUBLE_SUBSUPSCRIPT);
- aSubNodes[nIndex] = m_aNodeStack.Pop();
+ aSubNodes[nIndex] = m_aNodeStack.top();
+ m_aNodeStack.pop();
}
pNode->SetSubNodes(aSubNodes);
- m_aNodeStack.Push(pNode);
+ m_aNodeStack.push(pNode);
}
void SmParser::OpSubSup()
{
// push operator symbol
- m_aNodeStack.Push(new SmMathSymbolNode(m_aCurToken));
+ m_aNodeStack.push(new SmMathSymbolNode(m_aCurToken));
// skip operator token
NextToken();
// get sub- supscripts if any
@@ -1357,7 +1384,7 @@ void SmParser::Blank()
pBlankNode->Clear();
}
- m_aNodeStack.Push(pBlankNode);
+ m_aNodeStack.push(pBlankNode);
}
@@ -1375,12 +1402,12 @@ void SmParser::Term()
bool bNoSpace = m_aCurToken.eType == TNOSPACE;
if (bNoSpace) // push 'no space' node and continue to parse expression
{
- m_aNodeStack.Push(new SmExpressionNode(m_aCurToken));
+ m_aNodeStack.push(new SmExpressionNode(m_aCurToken));
NextToken();
}
if (m_aCurToken.eType != TLGROUP)
{
- m_aNodeStack.Pop(); // get rid of the 'no space' node pushed above
+ m_aNodeStack.pop(); // get rid of the 'no space' node pushed above
Term();
}
else
@@ -1391,10 +1418,10 @@ void SmParser::Term()
if (m_aCurToken.eType == TRGROUP)
{
if (bNoSpace) // get rid of the 'no space' node pushed above
- m_aNodeStack.Pop();
+ m_aNodeStack.pop();
SmStructureNode *pSNode = new SmExpressionNode(m_aCurToken);
pSNode->SetSubNodes(NULL, NULL);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
NextToken();
}
@@ -1420,16 +1447,16 @@ void SmParser::Term()
break;
case TTEXT :
- m_aNodeStack.Push(new SmTextNode(m_aCurToken, FNT_TEXT));
+ m_aNodeStack.push(new SmTextNode(m_aCurToken, FNT_TEXT));
NextToken();
break;
case TIDENT :
case TCHARACTER :
- m_aNodeStack.Push(new SmTextNode(m_aCurToken, FNT_VARIABLE));
+ m_aNodeStack.push(new SmTextNode(m_aCurToken, FNT_VARIABLE));
NextToken();
break;
case TNUMBER :
- m_aNodeStack.Push(new SmTextNode(m_aCurToken, FNT_NUMBER));
+ m_aNodeStack.push(new SmTextNode(m_aCurToken, FNT_NUMBER));
NextToken();
break;
@@ -1467,12 +1494,12 @@ void SmParser::Term()
case TDOTSLOW :
case TDOTSUP :
case TDOTSVERT :
- m_aNodeStack.Push(new SmMathSymbolNode(m_aCurToken));
+ m_aNodeStack.push(new SmMathSymbolNode(m_aCurToken));
NextToken();
break;
case TPLACE:
- m_aNodeStack.Push(new SmPlaceNode(m_aCurToken));
+ m_aNodeStack.push(new SmPlaceNode(m_aCurToken));
NextToken();
break;
@@ -1518,21 +1545,23 @@ void SmParser::Term()
FontAttribut();
// check if casting in following line is ok
- OSL_ENSURE(!m_aNodeStack.Top()->IsVisible(), "Sm : Ooops...");
+ OSL_ENSURE(!m_aNodeStack.top()->IsVisible(), "Sm : Ooops...");
- aArray[n] = (SmStructureNode *) m_aNodeStack.Pop();
+ aArray[n] = (SmStructureNode *) m_aNodeStack.top();
+ m_aNodeStack.pop();
n++;
}
Power();
- SmNode *pFirstNode = m_aNodeStack.Pop();
+ SmNode *pFirstNode = m_aNodeStack.top();
+ m_aNodeStack.pop();
while (n > 0)
{ aArray[n - 1]->SetSubNodes(0, pFirstNode);
pFirstNode = aArray[n - 1];
n--;
}
- m_aNodeStack.Push(pFirstNode);
+ m_aNodeStack.push(pFirstNode);
}
else if (TokenInGroup(TGFUNCTION))
{ if (CONVERT_40_TO_50 != GetConversion())
@@ -1548,7 +1577,8 @@ void SmParser::Term()
//
Function();
- SmNode *pFunc = m_aNodeStack.Pop();
+ SmNode *pFunc = m_aNodeStack.top();
+ m_aNodeStack.pop();
if (m_aCurToken.eType == TLPARENT)
{ Term();
@@ -1561,8 +1591,9 @@ void SmParser::Term()
Insert('}', GetTokenIndex());
SmStructureNode *pSNode = new SmExpressionNode(pFunc->GetToken());
- pSNode->SetSubNodes(pFunc, m_aNodeStack.Pop());
- m_aNodeStack.Push(pSNode);
+ pSNode->SetSubNodes(pFunc, m_aNodeStack.top());
+ m_aNodeStack.pop();
+ m_aNodeStack.push(pSNode);
}
}
else
@@ -1603,7 +1634,7 @@ void SmParser::Escape()
}
SmNode *pNode = new SmMathSymbolNode(m_aCurToken);
- m_aNodeStack.Push(pNode);
+ m_aNodeStack.push(pNode);
NextToken();
}
@@ -1619,13 +1650,15 @@ void SmParser::Operator()
if (TokenInGroup(TGLIMIT) || TokenInGroup(TGPOWER))
SubSup(m_aCurToken.nGroup);
- SmNode *pOperator = m_aNodeStack.Pop();
+ SmNode *pOperator = m_aNodeStack.top();
+ m_aNodeStack.pop();
// get argument
Power();
- pSNode->SetSubNodes(pOperator, m_aNodeStack.Pop());
- m_aNodeStack.Push(pSNode);
+ pSNode->SetSubNodes(pOperator, m_aNodeStack.top());
+ m_aNodeStack.pop();
+ m_aNodeStack.push(pSNode);
}
}
@@ -1683,7 +1716,7 @@ void SmParser::Oper()
default :
OSL_FAIL("Sm: unknown case");
}
- m_aNodeStack.Push(pNode);
+ m_aNodeStack.push(pNode);
NextToken();
}
@@ -1712,7 +1745,8 @@ void SmParser::UnOper()
case TNROOT :
NextToken();
Power();
- pExtra = m_aNodeStack.Pop();
+ pExtra = m_aNodeStack.top();
+ m_aNodeStack.pop();
break;
case TUOPER :
@@ -1721,7 +1755,8 @@ void SmParser::UnOper()
m_aCurToken.eType = TUOPER;
m_aCurToken.nGroup = TGUNOPER;
GlyphSpecial();
- pOper = m_aNodeStack.Pop();
+ pOper = m_aNodeStack.top();
+ m_aNodeStack.pop();
break;
case TPLUS :
@@ -1731,7 +1766,8 @@ void SmParser::UnOper()
case TNEG :
case TFACT :
OpSubSup();
- pOper = m_aNodeStack.Pop();
+ pOper = m_aNodeStack.top();
+ m_aNodeStack.pop();
break;
default :
@@ -1740,7 +1776,8 @@ void SmParser::UnOper()
// get argument
Power();
- pArg = m_aNodeStack.Pop();
+ pArg = m_aNodeStack.top();
+ m_aNodeStack.pop();
if (eType == TABS)
{ pSNode = new SmBraceNode(aNodeToken);
@@ -1774,7 +1811,7 @@ void SmParser::UnOper()
pSNode->SetSubNodes(pOper, pArg);
}
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
@@ -1810,7 +1847,7 @@ void SmParser::Attribut()
pSNode->SetSubNodes(pAttr, 0);
pSNode->SetScaleMode(eScaleMode);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
@@ -1825,7 +1862,7 @@ void SmParser::FontAttribut()
case TBOLD :
case TNBOLD :
case TPHANTOM :
- m_aNodeStack.Push(new SmFontNode(m_aCurToken));
+ m_aNodeStack.push(new SmFontNode(m_aCurToken));
NextToken();
break;
@@ -1864,7 +1901,7 @@ void SmParser::Color()
Error(PE_COLOR_EXPECTED);
} while (m_aCurToken.eType == TCOLOR);
- m_aNodeStack.Push(new SmFontNode(aToken));
+ m_aNodeStack.push(new SmFontNode(aToken));
}
@@ -1885,7 +1922,7 @@ void SmParser::Font()
Error(PE_FONT_EXPECTED);
} while (m_aCurToken.eType == TFONT);
- m_aNodeStack.Push(new SmFontNode(aToken));
+ m_aNodeStack.push(new SmFontNode(aToken));
}
@@ -1976,7 +2013,7 @@ void SmParser::FontSize()
NextToken();
pFontNode->SetSizeParameter(aValue, Type);
- m_aNodeStack.Push(pFontNode);
+ m_aNodeStack.push(pFontNode);
}
@@ -2004,7 +2041,8 @@ void SmParser::Brace()
NextToken();
Bracebody(true);
- pBody = m_aNodeStack.Pop();
+ pBody = m_aNodeStack.top();
+ m_aNodeStack.pop();
if (m_aCurToken.eType == TRIGHT)
{ NextToken();
@@ -2032,7 +2070,8 @@ void SmParser::Brace()
NextToken();
Bracebody(false);
- pBody = m_aNodeStack.Pop();
+ pBody = m_aNodeStack.top();
+ m_aNodeStack.pop();
SmTokenType eExpectedType = TUNKNOWN;
switch (pLeft->GetToken().eType)
@@ -2066,7 +2105,7 @@ void SmParser::Brace()
OSL_ENSURE(pRight, "Sm: NULL pointer");
pSNode->SetSubNodes(pLeft, pBody, pRight);
pSNode->SetScaleMode(eScaleMode);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
else
{ delete pSNode;
@@ -2092,7 +2131,7 @@ void SmParser::Bracebody(bool bIsLeftRight)
{
if (m_aCurToken.eType == TMLINE)
{
- m_aNodeStack.Push(new SmMathSymbolNode(m_aCurToken));
+ m_aNodeStack.push(new SmMathSymbolNode(m_aCurToken));
NextToken();
nNum++;
}
@@ -2111,7 +2150,7 @@ void SmParser::Bracebody(bool bIsLeftRight)
{
if (m_aCurToken.eType == TMLINE)
{
- m_aNodeStack.Push(new SmMathSymbolNode(m_aCurToken));
+ m_aNodeStack.push(new SmMathSymbolNode(m_aCurToken));
NextToken();
nNum++;
}
@@ -2128,11 +2167,14 @@ void SmParser::Bracebody(bool bIsLeftRight)
// build argument vector in parsing order
aNodes.resize(nNum);
for (sal_uInt16 i = 0; i < nNum; i++)
- aNodes[nNum - 1 - i] = m_aNodeStack.Pop();
+ {
+ aNodes[nNum - 1 - i] = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ }
pBody->SetSubNodes(aNodes);
pBody->SetScaleMode(bIsLeftRight ? SCALE_HEIGHT : SCALE_NONE);
- m_aNodeStack.Push(pBody);
+ m_aNodeStack.push(pBody);
}
@@ -2163,7 +2205,7 @@ void SmParser::Function()
case TLN :
case TLOG :
case TEXP :
- m_aNodeStack.Push(new SmTextNode(m_aCurToken, FNT_FUNCTION));
+ m_aNodeStack.push(new SmTextNode(m_aCurToken, FNT_FUNCTION));
NextToken();
break;
@@ -2186,10 +2228,13 @@ void SmParser::Binom()
ExpressionArray.resize(2);
for (int i = 0; i < 2; i++)
- ExpressionArray[2 - (i + 1)] = m_aNodeStack.Pop();
+ {
+ ExpressionArray[2 - (i + 1)] = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ }
pSNode->SetSubNodes(ExpressionArray);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
@@ -2212,7 +2257,10 @@ void SmParser::Stack()
ExpressionArray.resize(n);
for (sal_uInt16 i = 0; i < n; i++)
- ExpressionArray[n - (i + 1)] = m_aNodeStack.Pop();
+ {
+ ExpressionArray[n - (i + 1)] = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ }
if (m_aCurToken.eType != TRGROUP)
Error(PE_RGROUP_EXPECTED);
@@ -2225,7 +2273,7 @@ void SmParser::Stack()
aTok.eType = TSTACK;
SmStructureNode *pSNode = new SmTableNode(aTok);
pSNode->SetSubNodes(ExpressionArray);
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
}
else
Error(PE_LGROUP_EXPECTED);
@@ -2276,7 +2324,10 @@ void SmParser::Matrix()
ExpressionArray.resize(nRC);
for (sal_uInt16 i = 0; i < (nRC); i++)
- ExpressionArray[(nRC) - (i + 1)] = m_aNodeStack.Pop();
+ {
+ ExpressionArray[(nRC) - (i + 1)] = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ }
if (m_aCurToken.eType != TRGROUP)
Error(PE_RGROUP_EXPECTED);
@@ -2286,7 +2337,7 @@ void SmParser::Matrix()
SmMatrixNode *pMNode = new SmMatrixNode(m_aCurToken);
pMNode->SetSubNodes(ExpressionArray);
pMNode->SetRowCol(r, c);
- m_aNodeStack.Push(pMNode);
+ m_aNodeStack.push(pMNode);
}
else
Error(PE_LGROUP_EXPECTED);
@@ -2368,14 +2419,14 @@ void SmParser::Special()
if (aSymbolName.Len() > 0 )
AddToUsedSymbols( aSymbolName );
- m_aNodeStack.Push(new SmSpecialNode(m_aCurToken));
+ m_aNodeStack.push(new SmSpecialNode(m_aCurToken));
NextToken();
}
void SmParser::GlyphSpecial()
{
- m_aNodeStack.Push(new SmGlyphSpecialNode(m_aCurToken));
+ m_aNodeStack.push(new SmGlyphSpecialNode(m_aCurToken));
NextToken();
}
@@ -2389,7 +2440,7 @@ void SmParser::Error(SmParseError eError)
//! put a structure node on the stack (instead of the error node itself)
//! because sometimes such a node is expected in order to attach some
//! subnodes
- m_aNodeStack.Push(pSNode);
+ m_aNodeStack.push(pSNode);
AddError(eError, pSNode);
@@ -2424,13 +2475,16 @@ SmNode *SmParser::Parse(const String &rBuffer)
delete m_aErrDescList[ i ];
m_aErrDescList.clear();
- m_aNodeStack.Clear();
+ while ( !m_aNodeStack.empty() )
+ m_aNodeStack.pop();
SetLanguage( Application::GetSettings().GetUILanguage() );
NextToken();
Table();
- return m_aNodeStack.Pop();
+ SmNode* result = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ return result;
}
SmNode *SmParser::ParseExpression(const String &rBuffer)
@@ -2447,13 +2501,16 @@ SmNode *SmParser::ParseExpression(const String &rBuffer)
delete m_aErrDescList[ i ];
m_aErrDescList.clear();
- m_aNodeStack.Clear();
+ while ( !m_aNodeStack.empty() )
+ m_aNodeStack.pop();
SetLanguage( Application::GetSettings().GetUILanguage() );
NextToken();
Expression();
- return m_aNodeStack.Pop();
+ SmNode* result = m_aNodeStack.top();
+ m_aNodeStack.pop();
+ return result;
}