Kaydet (Commit) 4a43b77e authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Add a means to dump the state of the area broadcaster slot machine.

Change-Id: I158307de667dbe621376dfc01adeef89aa12faaa
üst 43f81d78
......@@ -13,8 +13,9 @@
#define DEBUG_COLUMN_STORAGE 0
#define DEBUG_PIVOT_TABLE 0
#define DEBUG_FORMULA_COMPILER 0
#define DEBUG_AREA_BROADCASTER 0
#if DEBUG_PIVOT_TABLE || DEBUG_COLUMN_STORAGE || DEBUG_FORMULA_COMPILER
#if DEBUG_PIVOT_TABLE || DEBUG_COLUMN_STORAGE || DEBUG_FORMULA_COMPILER || DEBUG_AREA_BROADCASTER
#include <iostream>
#include <string>
#include <cstdio>
......
......@@ -2107,6 +2107,10 @@ public:
SC_DLLPUBLIC void DumpFormulaGroups( SCTAB nTab, SCCOL nCol ) const;
#endif
#if DEBUG_AREA_BROADCASTER
SC_DLLPUBLIC void DumpAreaBroadcasters() const;
#endif
void SetCalcConfig( const ScCalcConfig& rConfig );
const ScCalcConfig& GetCalcConfig() const { return maCalcConfig; }
......
......@@ -28,6 +28,10 @@
#include "refupdat.hxx"
#include "table.hxx"
#if DEBUG_AREA_BROADCASTER
#include <formulacell.hxx>
#endif
// Number of slots per dimension
// must be integer divisors of MAXCOLCOUNT respectively MAXROWCOUNT
#define BCA_SLOTS_COL ((MAXCOLCOUNT_DEFINE) / 16)
......@@ -489,6 +493,33 @@ void ScBroadcastAreaSlot::GetAllListeners(
}
}
#if DEBUG_AREA_BROADCASTER
void ScBroadcastAreaSlot::Dump() const
{
ScBroadcastAreas::const_iterator it = aBroadcastAreaTbl.begin(), itEnd = aBroadcastAreaTbl.end();
for (; it != itEnd; ++it)
{
const ScBroadcastAreaEntry& rEntry = *it;
const ScBroadcastArea* pArea = rEntry.mpArea;
cout << " * range: " << rtl::OUStringToOString(pArea->GetRange().Format(SCA_VALID|SCA_TAB_3D, pDoc), RTL_TEXTENCODING_UTF8).getStr() << endl;
const SvtBroadcaster& rBC = pArea->GetBroadcaster();
const SvtBroadcaster::ListenersType& rListeners = rBC.GetAllListeners();
size_t n = rListeners.size();
cout << " * listener count: " << n << endl;
for (size_t i = 0; i < n; ++i)
{
const ScFormulaCell* pFC = dynamic_cast<const ScFormulaCell*>(rListeners[i]);
if (!pFC)
continue;
cout << " * listener: formula cell: "
<< rtl::OUStringToOString(pFC->aPos.Format(SCA_VALID|SCA_TAB_3D, pDoc), RTL_TEXTENCODING_UTF8).getStr()
<< endl;
}
}
}
#endif
void ScBroadcastAreaSlot::FinallyEraseAreas()
{
pBASM->FinallyEraseAreas( this);
......@@ -1026,4 +1057,29 @@ std::vector<sc::AreaListener> ScBroadcastAreaSlotMachine::GetAllListeners(
return aRet;
}
#if DEBUG_AREA_BROADCASTER
void ScBroadcastAreaSlotMachine::Dump() const
{
cout << "slot distribution count: " << nBcaSlots << endl;
TableSlotsMap::const_iterator it = aTableSlotsMap.begin(), itEnd = aTableSlotsMap.end();
for (; it != itEnd; ++it)
{
cout << "-- sheet (index: " << it->first << ")" << endl;
TableSlots* pTabSlots = it->second;
assert(pTabSlots);
ScBroadcastAreaSlot** ppSlots = pTabSlots->getSlots();
for (SCSIZE i = 0; i < nBcaSlots; ++i)
{
const ScBroadcastAreaSlot* pSlot = ppSlots[i];
if (pSlot)
{
cout << "* slot " << i << endl;
pSlot->Dump();
}
}
}
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -2352,6 +2352,14 @@ void ScDocument::DumpFormulaGroups( SCTAB nTab, SCCOL nCol ) const
}
#endif
#if DEBUG_AREA_BROADCASTER
void ScDocument::DumpAreaBroadcasters() const
{
if (pBASM)
pBASM->Dump();
}
#endif
bool ScDocument::TableExists( SCTAB nTab ) const
{
return ValidTab(nTab) && static_cast<size_t>(nTab) < maTabs.size() && maTabs[nTab];
......
......@@ -225,6 +225,10 @@ public:
void GetAllListeners(
const ScRange& rRange, std::vector<sc::AreaListener>& rListeners, sc::AreaOverlapType eType );
#if DEBUG_AREA_BROADCASTER
void Dump() const;
#endif
};
/**
......@@ -321,6 +325,10 @@ public:
std::vector<sc::AreaListener> GetAllListeners(
const ScRange& rRange, sc::AreaOverlapType eType );
#if DEBUG_AREA_BROADCASTER
void Dump() const;
#endif
};
class ScBulkBroadcast
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment