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 | 3397cb614205c6954915c88005276ba38fbae5ce (diff) |
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( |