diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-10-10 20:24:21 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-10-11 12:14:27 -0400 |
commit | 7333881bb7b04f7e4e2a28638024ae82a9c14e81 (patch) | |
tree | 97548f94ab918d502b45a5dda40ece5ad4117617 /formula | |
parent | 6255be7ca294d350143290c343673f264f42220c (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.cxx | 4 | ||||
-rw-r--r-- | formula/source/core/api/token.cxx | 47 |
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 ); |