summaryrefslogtreecommitdiff
path: root/formula
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2013-10-10 20:24:21 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2013-10-11 12:14:27 -0400
commit7333881bb7b04f7e4e2a28638024ae82a9c14e81 (patch)
tree97548f94ab918d502b45a5dda40ece5ad4117617 /formula
parent6255be7ca294d350143290c343673f264f42220c (diff)
Formula tokens, formula cells and formula interpreters to use shared strings.
Change-Id: I5da99869fc7f61ce698180fa5daa9be9db9ac132
Diffstat (limited to 'formula')
-rw-r--r--formula/source/core/api/FormulaCompiler.cxx4
-rw-r--r--formula/source/core/api/token.cxx47
2 files changed, 39 insertions, 12 deletions
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index 5cd0b829dea2..fda54bdc082e 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -1776,9 +1776,9 @@ FormulaToken* FormulaCompiler::CreateStringFromToken( OUStringBuffer& rBuffer, F
case svString:
if( eOp == ocBad || eOp == ocStringXML )
- rBuffer.append( t->GetString());
+ rBuffer.append( t->GetString().getString());
else
- AppendString( rBuffer, t->GetString() );
+ AppendString( rBuffer, t->GetString().getString() );
break;
case svSingleRef:
CreateStringFromSingleRef( rBuffer, t);
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index da9c6f873b34..8f0cfa828c5b 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -174,11 +174,10 @@ double & FormulaToken::GetDoubleAsReference()
return fVal;
}
-const OUString& FormulaToken::GetString() const
+svl::SharedString FormulaToken::GetString() const
{
SAL_WARN( "formula.core", "FormulaToken::GetString: virtual dummy called" );
- static OUString aDummyString;
- return aDummyString;
+ return svl::SharedString(); // invalid string
}
sal_uInt16 FormulaToken::GetIndex() const
@@ -1323,18 +1322,45 @@ bool FormulaDoubleToken::operator==( const FormulaToken& r ) const
return FormulaToken::operator==( r ) && fDouble == r.GetDouble();
}
+FormulaStringToken::FormulaStringToken( const svl::SharedString& r ) :
+ FormulaToken( svString ), maString( r ) {}
+FormulaStringToken::FormulaStringToken( const FormulaStringToken& r ) :
+ FormulaToken( r ), maString( r.maString ) {}
+
+FormulaToken* FormulaStringToken::Clone() const
+{
+ return new FormulaStringToken(*this);
+}
+
+svl::SharedString FormulaStringToken::GetString() const
+{
+ return maString;
+}
-const OUString& FormulaStringToken::GetString() const { return aString; }
bool FormulaStringToken::operator==( const FormulaToken& r ) const
{
- return FormulaToken::operator==( r ) && aString == r.GetString();
+ return FormulaToken::operator==( r ) && maString == r.GetString();
}
+FormulaStringOpToken::FormulaStringOpToken( OpCode e, const svl::SharedString& r ) :
+ FormulaByteToken( e, 0, svString, false ), maString( r ) {}
+
+FormulaStringOpToken::FormulaStringOpToken( const FormulaStringOpToken& r ) :
+ FormulaByteToken( r ), maString( r.maString ) {}
+
+FormulaToken* FormulaStringOpToken::Clone() const
+{
+ return new FormulaStringOpToken(*this);
+}
+
+svl::SharedString FormulaStringOpToken::GetString() const
+{
+ return maString;
+}
-const OUString& FormulaStringOpToken::GetString() const { return aString; }
bool FormulaStringOpToken::operator==( const FormulaToken& r ) const
{
- return FormulaByteToken::operator==( r ) && aString == r.GetString();
+ return FormulaByteToken::operator==( r ) && maString == r.GetString();
}
sal_uInt16 FormulaIndexToken::GetIndex() const { return nIndex; }
@@ -1364,11 +1390,12 @@ bool FormulaErrorToken::operator==( const FormulaToken& r ) const
nError == static_cast< const FormulaErrorToken & >(r).GetError();
}
double FormulaMissingToken::GetDouble() const { return 0.0; }
-const OUString& FormulaMissingToken::GetString() const
+
+svl::SharedString FormulaMissingToken::GetString() const
{
- static OUString aDummyString;
- return aDummyString;
+ return svl::SharedString::getEmptyString();
}
+
bool FormulaMissingToken::operator==( const FormulaToken& r ) const
{
return FormulaToken::operator==( r );