diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-09-04 09:02:15 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-09-04 14:03:19 +0200 |
commit | 45b17d9d5bf98aefba392da6271c7077c1363238 (patch) | |
tree | 6c8825ac3b8fb8147d9e488eb64aacd5bd7e0e42 /formula | |
parent | 10d86d8526126956758501604f1bd2e3fe102076 (diff) |
store ScTokenArray by value in SharedFormulaBuffer
Change-Id: Ibff3c2fea3cadc234266953ab15ae5f25c4ac1e1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121626
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'formula')
-rw-r--r-- | formula/source/core/api/token.cxx | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index c5b69acf2c90..89ae03162778 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -598,6 +598,11 @@ FormulaTokenArray::FormulaTokenArray( const FormulaTokenArray& rArr ) Assign( rArr ); } +FormulaTokenArray::FormulaTokenArray( FormulaTokenArray&& rArr ) +{ + Move( std::move(rArr) ); +} + FormulaTokenArray::~FormulaTokenArray() { FormulaTokenArray::Clear(); @@ -646,6 +651,23 @@ void FormulaTokenArray::Assign( const FormulaTokenArray& r ) } } +void FormulaTokenArray::Move( FormulaTokenArray&& r ) +{ + pCode = std::move(r.pCode); + pRPN = r.pRPN; + r.pRPN = nullptr; + nLen = r.nLen; + r.nLen = 0; + nRPN = r.nRPN; + r.nRPN = 0; + nError = r.nError; + nMode = r.nMode; + bHyperLink = r.bHyperLink; + mbFromRangeName = r.mbFromRangeName; + mbShareable = r.mbShareable; + mbFinalized = r.mbFinalized; +} + /// Optimisation for efficiently creating StringXML placeholders void FormulaTokenArray::Assign( sal_uInt16 nCode, FormulaToken **pTokens ) { @@ -675,6 +697,13 @@ FormulaTokenArray& FormulaTokenArray::operator=( const FormulaTokenArray& rArr ) return *this; } +FormulaTokenArray& FormulaTokenArray::operator=( FormulaTokenArray&& rArr ) +{ + Clear(); + Move( std::move(rArr) ); + return *this; +} + void FormulaTokenArray::Clear() { if( nRPN ) DelRPN(); |