[Libreoffice-commits] core.git: Branch 'private/kohei/xlsx-import-speedup' - 12 commits - sc/inc sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Wed Nov 27 21:28:44 PST 2013
sc/inc/document.hxx | 5 +
sc/source/core/data/document.cxx | 9 +++
sc/source/core/opencl/formulagroupcl.cxx | 79 +++++++++++++++++++++++++------
sc/source/core/opencl/opbase.hxx | 10 +++
sc/source/core/opencl/opencl_device.cxx | 4 -
sc/source/core/tool/formulagroup.cxx | 2
sc/source/ui/docshell/docsh.cxx | 1
sc/source/ui/docshell/docsh3.cxx | 1
sc/source/ui/inc/undobase.hxx | 2
sc/source/ui/undo/undobase.cxx | 24 +++++++++
sc/source/ui/undo/undoblk3.cxx | 2
sc/source/ui/view/gridwin4.cxx | 1
12 files changed, 122 insertions(+), 18 deletions(-)
New commits:
commit b429051f862ac1e61322d2f62c5331da2040cded
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Thu Nov 28 00:24:55 2013 -0500
Clear the data cache here as well.
Change-Id: Id26dcf8146dc7a41ea9995ad4b1f89925c08004f
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 6d5c840..3786fad 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -882,6 +882,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
// Flag drawn formula cells "unchanged".
pDoc->ResetChanged(ScRange(nX1,nY1,nTab,nX2,nY2,nTab));
+ pDoc->CellContentModified();
}
void ScGridWindow::CheckNeedsRepaint()
commit 572275a275220f56e7573f959c4bca953d03f5ec
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Thu Nov 28 00:08:51 2013 -0500
Clear column data cache here too.
Change-Id: If3d9feb25d825806cb690d001872f1d0ff76466c
diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx
index 1251a2b..ad2806d 100644
--- a/sc/source/ui/docshell/docsh3.cxx
+++ b/sc/source/ui/docshell/docsh3.cxx
@@ -87,6 +87,7 @@ void ScDocShell::PostDataChanged()
{
Broadcast( SfxSimpleHint( FID_DATACHANGED ) );
SFX_APP()->Broadcast(SfxSimpleHint( FID_ANYDATACHANGED )); // Navigator
+ aDocument.CellContentModified();
//! Navigator direkt benachrichtigen!
}
commit 3eb61bee29733c220b9680b8783ec1aec9966dd1
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 23:58:29 2013 -0500
Crasher fix. Check for NULL.
Change-Id: Iae1fa695ea0266e97ae367db71fe6a82e6a3da1d
diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx
index 0fed853..3909bca 100644
--- a/sc/source/core/tool/formulagroup.cxx
+++ b/sc/source/core/tool/formulagroup.cxx
@@ -397,7 +397,7 @@ bool FormulaGroupInterpreterSoftware::interpret(ScDocument& rDoc, const ScAddres
fillMatrix(*pMat, nCol, pStrs, nRowSize);
}
}
- else
+ else if (rArray.mpNumericArray)
{
// Numeric cells only.
const double* pNums = rArray.mpNumericArray;
commit b815a7b3d5395324d75a63cbc9c5f491e4316cc8
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 23:29:39 2013 -0500
Clear the cache here too.
Change-Id: I4dcc7244e508fcdf484b73dc843b21f4b0a18a73
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 432a373..8874cb8 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -3583,6 +3583,8 @@ void ScDocument::InterpretDirtyCells( const ScRangeList& rRanges )
if (!GetAutoCalc())
return;
+ mpFormulaGroupCxt.reset();
+
for (size_t nPos=0, nRangeCount = rRanges.size(); nPos < nRangeCount; nPos++)
{
const ScRange& rRange = *rRanges[nPos];
@@ -3596,6 +3598,8 @@ void ScDocument::InterpretDirtyCells( const ScRangeList& rRanges )
rRange.aStart.Col(), rRange.aStart.Row(), rRange.aEnd.Col(), rRange.aEnd.Row());
}
}
+
+ mpFormulaGroupCxt.reset();
}
commit 5f08a1e5e71352810d784111f3c978ca88586433
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 22:16:53 2013 -0500
Not a good idea. This makes group calculation 5 times slower.
Change-Id: I954606a9d6d9b0fc66f2f3496e204c8e6496db88
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index f7c6cdf..24cd615 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -2835,13 +2835,6 @@ void ScColumn::SetFormulaResults( SCROW nRow, const double* pResults, size_t nLe
rCell.ResetDirty();
rCell.SetChanged(true);
}
-
- std::vector<SCROW> aRows;
- aRows.reserve(nLen);
- for (size_t i = 0; i < nLen; ++i)
- aRows.push_back(nRow+i);
-
- BroadcastCells(aRows, SC_HINT_DATACHANGED);
}
void ScColumn::SetFormulaResults( SCROW nRow, const formula::FormulaTokenRef* pResults, size_t nLen )
@@ -2868,13 +2861,6 @@ void ScColumn::SetFormulaResults( SCROW nRow, const formula::FormulaTokenRef* pR
rCell.ResetDirty();
rCell.SetChanged(true);
}
-
- std::vector<SCROW> aRows;
- aRows.reserve(nLen);
- for (size_t i = 0; i < nLen; ++i)
- aRows.push_back(nRow+i);
-
- BroadcastCells(aRows, SC_HINT_DATACHANGED);
}
void ScColumn::SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat )
commit e45fe15d09adbf5b22ccf366d6060d9291e90b5f
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 21:40:12 2013 -0500
Don't forget to broadcast to chart objects.
Change-Id: I6d4d7cd2dc426134c108f1fbcf6e3c32ed4af88d
diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx
index c38ff47..178ec57 100644
--- a/sc/source/ui/undo/undobase.cxx
+++ b/sc/source/ui/undo/undobase.cxx
@@ -162,6 +162,8 @@ void ScSimpleUndo::BroadcastChanges( const ScRange& rRange )
}
}
}
+
+ pDoc->BroadcastUno(SfxSimpleHint(SC_HINT_DATACHANGED));
}
void ScSimpleUndo::ShowTable( SCTAB nTab )
commit fb2303a9e8ed0c18803356fc6af01f4aa3c43f33
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 21:27:57 2013 -0500
Broadcast changes on undo / redo of cell range deletion.
Change-Id: I48141ca77277c2de5b3526358cfadb12e3f4fbdd
diff --git a/sc/source/ui/inc/undobase.hxx b/sc/source/ui/inc/undobase.hxx
index e57e308..5c9df4b 100644
--- a/sc/source/ui/inc/undobase.hxx
+++ b/sc/source/ui/inc/undobase.hxx
@@ -57,6 +57,8 @@ protected:
void BeginRedo();
void EndRedo();
+ void BroadcastChanges( const ScRange& rRange );
+
static void ShowTable( SCTAB nTab );
static void ShowTable( const ScRange& rRange );
};
diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx
index 955d2ba..c38ff47 100644
--- a/sc/source/ui/undo/undobase.cxx
+++ b/sc/source/ui/undo/undobase.cxx
@@ -142,6 +142,28 @@ void ScSimpleUndo::EndRedo()
pDocShell->SetInUndo( false );
}
+void ScSimpleUndo::BroadcastChanges( const ScRange& rRange )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->CellContentModified();
+
+ ScHint aHint(SC_HINT_DATACHANGED, ScAddress());
+ ScAddress& rPos = aHint.GetAddress();
+ for (SCTAB nTab = rRange.aStart.Tab(); nTab <= rRange.aEnd.Tab(); ++nTab)
+ {
+ rPos.SetTab(nTab);
+ for (SCCOL nCol = rRange.aStart.Col(); nCol <= rRange.aEnd.Col(); ++nCol)
+ {
+ rPos.SetCol(nCol);
+ for (SCROW nRow = rRange.aStart.Row(); nRow <= rRange.aEnd.Row(); ++nRow)
+ {
+ rPos.SetRow(nRow);
+ pDoc->Broadcast(aHint);
+ }
+ }
+ }
+}
+
void ScSimpleUndo::ShowTable( SCTAB nTab )
{
ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index c3953c6..fe94d09 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -182,6 +182,7 @@ void ScUndoDeleteContents::Undo()
DoChange( sal_True );
EndUndo();
+ BroadcastChanges(aRange);
HelperNotifyChanges::NotifyIfChangesListeners(*pDocShell, aRange);
}
@@ -191,6 +192,7 @@ void ScUndoDeleteContents::Redo()
DoChange( false );
EndRedo();
+ BroadcastChanges(aRange);
HelperNotifyChanges::NotifyIfChangesListeners(*pDocShell, aRange);
}
commit 9ac0807e9e92ce6ec65e36396af16a6275c7fbd8
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 20:47:25 2013 -0500
Change these parameters.
Change-Id: Ic70aaea461e3d007e394c67c33a766d70aa4e92c
diff --git a/sc/source/core/opencl/opencl_device.cxx b/sc/source/core/opencl/opencl_device.cxx
index 8f9f8ff..a3fa004 100644
--- a/sc/source/core/opencl/opencl_device.cxx
+++ b/sc/source/core/opencl/opencl_device.cxx
@@ -25,8 +25,8 @@
#include "opencl_device.hxx"
-#define INPUTSIZE 256*40
-#define OUTPUTSIZE 256*40
+#define INPUTSIZE 15360
+#define OUTPUTSIZE 15360
#define STRINGIFY(...) #__VA_ARGS__"\n"
#define LOG_PRINTF(x) (std::cout << x << std::endl)
commit a86a13dbb96dd24ca4775029454b1ff55cb2db6f
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Nov 27 19:43:08 2013 -0500
Clear column data array cache when the document content changes.
Change-Id: I09ffa455e79199e37ca6168753ec9ef4d5aa33dc
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index b9e3dc3..85b7e99 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -2017,6 +2017,11 @@ public:
formula::VectorRefArray FetchVectorRefArray( const ScAddress& rPos, SCROW nLength );
+ /**
+ * Called whenever the value of a cell inside the document is modified.
+ */
+ void CellContentModified();
+
SvtBroadcaster* GetBroadcaster( const ScAddress& rPos );
const SvtBroadcaster* GetBroadcaster( const ScAddress& rPos ) const;
void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, const ScAddress& rTopPos, SCROW nLength );
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 24cd615..f7c6cdf 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -2835,6 +2835,13 @@ void ScColumn::SetFormulaResults( SCROW nRow, const double* pResults, size_t nLe
rCell.ResetDirty();
rCell.SetChanged(true);
}
+
+ std::vector<SCROW> aRows;
+ aRows.reserve(nLen);
+ for (size_t i = 0; i < nLen; ++i)
+ aRows.push_back(nRow+i);
+
+ BroadcastCells(aRows, SC_HINT_DATACHANGED);
}
void ScColumn::SetFormulaResults( SCROW nRow, const formula::FormulaTokenRef* pResults, size_t nLen )
@@ -2861,6 +2868,13 @@ void ScColumn::SetFormulaResults( SCROW nRow, const formula::FormulaTokenRef* pR
rCell.ResetDirty();
rCell.SetChanged(true);
}
+
+ std::vector<SCROW> aRows;
+ aRows.reserve(nLen);
+ for (size_t i = 0; i < nLen; ++i)
+ aRows.push_back(nRow+i);
+
+ BroadcastCells(aRows, SC_HINT_DATACHANGED);
}
void ScColumn::SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat )
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 708300e..432a373 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2313,6 +2313,11 @@ ScDocument::NumFmtMergeHandler::~NumFmtMergeHandler()
mpDoc->pFormatExchangeList = NULL;
}
+void ScDocument::CellContentModified()
+{
+ mpFormulaGroupCxt.reset();
+}
+
SvtBroadcaster* ScDocument::GetBroadcaster( const ScAddress& rPos )
{
ScTable* pTab = FetchTable(rPos.Tab());
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 98b6be6..0760425 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -3047,6 +3047,7 @@ ScDocShellModificator::~ScDocShellModificator()
void ScDocShellModificator::SetDocumentModified()
{
ScDocument* pDoc = rDocShell.GetDocument();
+ pDoc->CellContentModified();
if ( !pDoc->IsImportingXML() )
{
// AutoCalcShellDisabled temporaer restaurieren
commit ac679d5fb037c2d718dfa765da8a41459e7791b5
Author: I-Jui (Ray) Sung <ray at multicorewareinc.com>
Date: Wed Nov 27 18:40:49 2013 -0600
GPU Calc: fix typo in NAN macro
Change-Id: I34299e0fc692c2ab43fe0c1fffaada348742d19f
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 699b193..4e48e04 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -36,7 +36,7 @@
namespace {
static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
}
-#define NAN (*(const float *) __nan)
+#define NAN (*(const double*) __nan)
#endif
#endif
commit f5d1829790a0e743c54279e9533f3a871d6420e1
Author: I-Jui (Ray) Sung <ray at multicorewareinc.com>
Date: Wed Nov 27 18:36:47 2013 -0600
GPU Calc: fix compilation failure on Windows due to missing NAN macro
Change-Id: I0d53dcf147a06f831120c5489b2975e42ea6120b
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index c02cef7..699b193 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -31,6 +31,14 @@
#define REDUCE_THRESHOLD 4 // set to 4 for correctness testing. priority 1
#define UNROLLING_FACTOR 16 // set to 4 for correctness testing (if no reduce)
#include "formulagroupcl_public.hxx"
+#ifdef WIN32
+#ifndef NAN
+namespace {
+static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
+}
+#define NAN (*(const float *) __nan)
+#endif
+#endif
#include <list>
#include <map>
commit 1ccf18590125d8fd8625a684cbb38e8849af43ea
Author: I-Jui (Ray) Sung <ray at multicorewareinc.com>
Date: Wed Nov 27 17:44:46 2013 -0600
GPU Calc: fix regression caused by recent isValid() change
Change-Id: I885a222bf8a7ca4275867585ccf067a1ba7822c7
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index c4290f4..c02cef7 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -72,8 +72,6 @@ size_t VectorRef::Marshal(cl_kernel k, int argno, int, cl_program)
const formula::DoubleVectorRefToken* pDVR =
dynamic_cast< const formula::DoubleVectorRefToken* >(ref);
assert(pDVR);
- if (pDVR->GetArrays()[mnIndex].mpNumericArray == NULL)
- throw Unhandled();
pHostBuffer = const_cast<double*>(
pDVR->GetArrays()[mnIndex].mpNumericArray);
szHostBuffer = pDVR->GetArrayLength() * sizeof(double);
@@ -84,12 +82,35 @@ size_t VectorRef::Marshal(cl_kernel k, int argno, int, cl_program)
KernelEnv kEnv;
OpenclDevice::setKernelEnv(&kEnv);
cl_int err;
- mpClmem = clCreateBuffer(kEnv.mpkContext,
- (cl_mem_flags) CL_MEM_READ_ONLY|CL_MEM_USE_HOST_PTR,
- szHostBuffer,
- pHostBuffer, &err);
- if (CL_SUCCESS != err)
- throw OpenCLError(err);
+ if (pHostBuffer)
+ {
+ mpClmem = clCreateBuffer(kEnv.mpkContext,
+ (cl_mem_flags) CL_MEM_READ_ONLY|CL_MEM_USE_HOST_PTR,
+ szHostBuffer,
+ pHostBuffer, &err);
+ if (CL_SUCCESS != err)
+ throw OpenCLError(err);
+ }
+ else
+ {
+ if (szHostBuffer == 0)
+ szHostBuffer = sizeof(double); // a dummy small value
+ // Marshal as a buffer of NANs
+ mpClmem = clCreateBuffer(kEnv.mpkContext,
+ (cl_mem_flags) CL_MEM_READ_ONLY|CL_MEM_ALLOC_HOST_PTR,
+ szHostBuffer, NULL, &err);
+ if (CL_SUCCESS != err)
+ throw OpenCLError(err);
+ double *pNanBuffer = (double*)clEnqueueMapBuffer(
+ kEnv.mpkCmdQueue, mpClmem, CL_TRUE, CL_MAP_WRITE, 0,
+ szHostBuffer, 0, NULL, NULL, &err);
+ if (CL_SUCCESS != err)
+ throw OpenCLError(err);
+ for (size_t i = 0; i < szHostBuffer/sizeof(double); i++)
+ pNanBuffer[i] = NAN;
+ err = clEnqueueUnmapMemObject(kEnv.mpkCmdQueue, mpClmem,
+ pNanBuffer, 0, NULL, NULL);
+ }
err = clSetKernelArg(k, argno, sizeof(cl_mem), (void*)&mpClmem);
if (CL_SUCCESS != err)
@@ -1414,9 +1435,9 @@ public:
KernelEnv kEnv;
OpenclDevice::setKernelEnv(&kEnv);
cl_int err;
+ DynamicKernelArgument *Arg = mvSubArguments[0].get();
DynamicKernelSlidingArgument<VectorRef> *slidingArgPtr =
- dynamic_cast< DynamicKernelSlidingArgument<VectorRef> *>
- (mvSubArguments[0].get());
+ dynamic_cast< DynamicKernelSlidingArgument<VectorRef> *> (Arg);
cl_mem mpClmem2;
if (OpSumCodeGen->NeedReductionKernel())
@@ -1590,6 +1611,8 @@ DynamicKernelArgument *VectorRefFactory(const std::string &s,
//Black lists ineligible classes here ..
// SUMIFS does not perform parallel reduction at DoubleVectorRef level
if (dynamic_cast<OpSumIfs*>(pCodeGen.get())) {
+ if (index == 0) // the first argument of OpSumIfs cannot be strings anyway
+ return new DynamicKernelSlidingArgument<VectorRef>(s, ft, pCodeGen, index);
return new DynamicKernelSlidingArgument<Base>(s, ft, pCodeGen, index);
}
// AVERAGE is not supported yet
@@ -1650,7 +1673,9 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(
assert(pDVR);
for (size_t j = 0; j < pDVR->GetArrays().size(); ++j)
{
- if (pDVR->GetArrays()[j].mpNumericArray)
+ if (pDVR->GetArrays()[j].mpNumericArray ||
+ (pDVR->GetArrays()[j].mpNumericArray == NULL &&
+ pDVR->GetArrays()[j].mpStringArray == NULL ))
mvSubArguments.push_back(
SubArgument(VectorRefFactory<VectorRef>(
ts, ft->Children[i], mpCodeGen, j)));
@@ -1687,9 +1712,17 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(
SubArgument(new DynamicKernelStringArgument(
ts, ft->Children[i])));
}
+ else if (pSVR->GetArray().mpStringArray == NULL &&
+ pSVR->GetArray().mpNumericArray == NULL)
+ {
+ // Push as an array of NANs
+ mvSubArguments.push_back(
+ SubArgument(new VectorRef(ts,
+ ft->Children[i])));
+ }
else
throw UnhandledToken(pChild,
- "Got unhandled case here");
+ "Got unhandled case here", __FILE__, __LINE__);
} else if (pChild->GetType() == formula::svDouble) {
mvSubArguments.push_back(
SubArgument(new DynamicKernelConstantArgument(ts,
@@ -2736,7 +2769,8 @@ DynamicKernel* DynamicKernel::create(ScDocument& /* rDoc */,
}
catch (const UnhandledToken &ut) {
std::cerr << "\nDynamic formual compiler: unhandled token: ";
- std::cerr << ut.mMessage << "\n";
+ std::cerr << ut.mMessage << " at ";
+ std::cerr << ut.mFile << ":" << ut.mLineNumber << "\n";
#ifdef NO_FALLBACK_TO_SWINTERP
assert(false);
#else
@@ -2840,6 +2874,17 @@ bool FormulaGroupInterpreterOpenCL::interpret( ScDocument& rDoc,
return false;
#endif
}
+ catch (const Unhandled &uh) {
+ std::cerr << "Dynamic formula compiler: unhandled case:";
+ std::cerr <<" at ";
+ std::cerr << uh.mFile << ":" << uh.mLineNumber << "\n";
+#ifdef NO_FALLBACK_TO_SWINTERP
+ assert(false);
+ return true;
+#else
+ return false;
+#endif
+ }
catch (...) {
std::cerr << "Dynamic formula compiler: unhandled compiler error\n";
#ifdef NO_FALLBACK_TO_SWINTERP
diff --git a/sc/source/core/opencl/opbase.hxx b/sc/source/core/opencl/opbase.hxx
index 135ec4d..22a9316 100644
--- a/sc/source/core/opencl/opbase.hxx
+++ b/sc/source/core/opencl/opbase.hxx
@@ -30,9 +30,12 @@ class UnhandledToken
{
public:
UnhandledToken(formula::FormulaToken *t,
- const char *const m): mToken(t), mMessage(m) {}
+ const char *const m, std::string fn="", int ln=0):
+ mToken(t), mMessage(m), mFile(fn), mLineNumber(ln) {}
formula::FormulaToken *mToken;
std::string mMessage;
+ std::string mFile;
+ int mLineNumber;
};
/// Failed in marshaling
@@ -47,7 +50,10 @@ public:
class Unhandled
{
public:
- Unhandled() {}
+ Unhandled(std::string fn="", int ln=0):
+ mFile(fn), mLineNumber(ln) {}
+ std::string mFile;
+ int mLineNumber;
};
typedef boost::shared_ptr<FormulaTreeNode> FormulaTreeNodeRef;
More information about the Libreoffice-commits
mailing list