diff options
author | Eike Rathke <erack@redhat.com> | 2014-12-09 14:48:36 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-12-09 14:54:44 +0100 |
commit | b1d4a2ae3d1b461bc52768ed62f354558596fa39 (patch) | |
tree | 0188553d58fb67c267ba0d05afedfb2459d20d97 /sc/inc/table.hxx | |
parent | add a comment about side effects and whether we want them or not (diff) | |
download | core-b1d4a2ae3d1b461bc52768ed62f354558596fa39.tar.gz core-b1d4a2ae3d1b461bc52768ed62f354558596fa39.zip |
introduce BroadcastBroadcasters() to speedup BroadcastCells()
Iterating over a range and attempting to get a broadcaster for each cell
position is a performance bottle neck. Take advantage of the column's
existing maBroadcasters structure instead.
Change-Id: I5467a64ee3c0b5f430be1f0c4b940d3f71874827
Diffstat (limited to 'sc/inc/table.hxx')
-rw-r--r-- | sc/inc/table.hxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 7661fdace7a7..89a9a495b2d2 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -112,6 +112,7 @@ struct ScColWidthParam; class ScRangeName; class ScDBData; class ScDocumentImport; +class ScHint; class ScTable : boost::noncopyable { @@ -541,6 +542,13 @@ public: void CompileAll( sc::CompileFormulaContext& rCxt ); void CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rProgress ); + /** Broadcast single broadcasters in range, without explicitly setting + anything dirty, not doing area broadcasts. + @param rHint address is modified to adapt to the actual broadcasted + position on each iteration and upon return points to the last + position broadcasted. */ + bool BroadcastBroadcasters( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScHint& rHint ); + bool CompileErrorCells( sc::CompileFormulaContext& rCxt, sal_uInt16 nErrCode ); void UpdateReference( |