[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - 97 commits - connectivity/source cui/source dbaccess/source desktop/scripts epm/epm-3.7.patch filter/source helpcontent2 i18nlangtag/source include/connectivity include/i18nlangtag include/oox include/sfx2 include/xmloff oox/source poppler/ExternalProject_poppler.mk poppler/poppler-mac-fake.patch.1 poppler/UnpackedTarball_poppler.mk reportdesign/source Repository.mk scaddins/source sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_subsequent_export_test.mk sc/CppunitTest_sc_subsequent_filters_test.mk sc/CppunitTest_sc_ucalc.mk sc/inc sc/Library_scqahelper.mk sc/Module_sc.mk scp2/source sc/qa sc/source sc/uiconfig sdext/Executable_xpdfimport.mk sdext/source sd/source sfx2/source slideshow/source starmath/qa starmath/source stoc/source store/source svtools/source svx/source sw/CppunitTest_sw_filters_test.mk sw/inc sw/qa sw/source sw/uiconfig sw/UIConfig_swriter.mk unoidl/source vcl/source vcl/unx writerfilter/source xm loff/inc xmloff/source
Kohei Yoshida
kohei.yoshida at gmail.com
Tue Jul 9 21:26:01 PDT 2013
Rebased ref, commits from common ancestor:
commit 881e520806f1fc50de1c4bd8ae5c17c6e0598547
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 23:47:03 2013 -0400
Nobody uses this marker method now.
Change-Id: I06aea5100280c6dee756d8023e6e2fadb09662d7
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 9f96975..d024007 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -516,13 +516,6 @@ public:
void RegroupFormulaCells();
/**
- * Regroup existing formula cells when a new cell is inserted.
- *
- * @param nRow row at which a new cell is inserted.
- */
- void RegroupFormulaCells( SCROW nRow );
-
- /**
* Regroup existing formula cells when a range of new cells are inserted.
*
* @param nRow1 first row of inserted new cell span.
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 512dc8b7..aa4dd0e 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1530,10 +1530,6 @@ void ScColumn::CellStorageModified()
#endif
}
-void ScColumn::RegroupFormulaCells( SCROW /*nRow*/ )
-{
-}
-
void ScColumn::RegroupFormulaCells( SCROW /*nRow1*/, SCROW /*nRow2*/ )
{
}
commit a251d77ed57cf3c9c8f8d7b5defbe013faf301bb
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 23:43:37 2013 -0400
Check formula cell group boundaries to optionally merge.
Just in case...
Change-Id: If1feac9f144a8ab7d53823a0625560a499d57b68
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 68795f4..ad51473 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1373,9 +1373,22 @@ public:
// Group the cloned formula cells.
groupFormulaCells(aCloned);
- maDestPos.miCellPos = mrDestCol.GetCellStore().set(
+ sc::CellStoreType& rDestCells = mrDestCol.GetCellStore();
+ maDestPos.miCellPos = rDestCells.set(
maDestPos.miCellPos, nTopRow, aCloned.begin(), aCloned.end());
+ // Merge adjacent formula cell groups (if applicable).
+ sc::CellStoreType::position_type aPos =
+ rDestCells.position(maDestPos.miCellPos, nTopRow);
+ maDestPos.miCellPos = aPos.first;
+ mrDestCol.JoinFormulaCellAbove(aPos);
+ size_t nLastRow = nTopRow + nDataSize;
+ if (nLastRow < static_cast<size_t>(MAXROW))
+ {
+ aPos = rDestCells.position(maDestPos.miCellPos, nLastRow+1);
+ mrDestCol.JoinFormulaCellAbove(aPos);
+ }
+
setDefaultAttrsToDest(nTopRow, nDataSize);
}
break;
commit 08686dce2670aa667e380be4425d789a0594309f
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 23:27:37 2013 -0400
Formula cell grouping in CopyUpdated should already be done.
Since it uses the same function object CopyToClipHandler which I added
grouping support to earlier.
Change-Id: I8964f95041b5170ca1c7fbe073f85fcf77367c9f
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index ae463b7..68795f4 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1994,10 +1994,7 @@ void ScColumn::CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const
sc::CellStoreType::const_iterator itPos = maCells.begin();
sc::SingleColumnSpanSet::SpansType::const_iterator it = aRanges.begin(), itEnd = aRanges.end();
for (; it != itEnd; ++it)
- {
itPos = sc::ParseBlock(itPos, maCells, aFunc, it->mnRow1, it->mnRow2);
- rDestCol.RegroupFormulaCells(it->mnRow1, it->mnRow2);
- }
rDestCol.CellStorageModified();
}
commit 101ab3a270baf2e828360433f3a17ed56903a7bf
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 23:17:07 2013 -0400
Remove this marker.
Change-Id: Ia6216631aea17492ed7d864e6033b4677b6d7eb9
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 7ce2d5b..ae463b7 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1957,7 +1957,6 @@ void ScColumn::CopyToColumn(
sc::ParseBlock(maCells.begin(), maCells, aFunc, nRow1, nRow2);
}
- rColumn.RegroupFormulaCells(nRow1, nRow2);
rColumn.CellStorageModified();
}
}
commit 1d23b58c053805d6d76d5515d1b4534e7bf3432a
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 23:04:50 2013 -0400
Add test for formula grouping during undo.
Change-Id: Ifab98b1eedf4420ed5b609e0684422c8aae0d33c
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 78005fe..06c5b83 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5755,16 +5755,13 @@ void Test::testCopyPaste()
ScDocument aClipDoc(SCDOCMODE_CLIP);
copyToClip(m_pDoc, aRange, &aClipDoc);
- sal_uInt16 nFlags = IDF_ALL;
aRange = ScRange(0,1,1,2,1,1);//target: Sheet2.A2:C2
ScDocument* pUndoDoc = new ScDocument(SCDOCMODE_UNDO);
pUndoDoc->InitUndo(m_pDoc, 1, 1, true, true);
- ScMarkData aMarkData2;
- aMarkData2.SetMarkArea(aRange);
- ScRefUndoData* pRefUndoData= new ScRefUndoData(m_pDoc);
- ScUndoPaste aUndo(
- &getDocShell(), aRange, aMarkData2, pUndoDoc, NULL, IDF_ALL, pRefUndoData, false);
- m_pDoc->CopyFromClip(aRange, aMarkData2, nFlags, NULL, &aClipDoc);
+ boost::scoped_ptr<ScUndoPaste> pUndo(createUndoPaste(getDocShell(), aRange, pUndoDoc));
+ ScMarkData aMark;
+ aMark.SetMarkArea(aRange);
+ m_pDoc->CopyFromClip(aRange, aMark, IDF_ALL, NULL, &aClipDoc);
//check values after copying
OUString aString;
@@ -5786,13 +5783,13 @@ void Test::testCopyPaste()
//check undo and redo
- aUndo.Undo();
+ pUndo->Undo();
fValue = m_pDoc->GetValue(ScAddress(1,1,1));
ASSERT_DOUBLES_EQUAL_MESSAGE("after undo formula should return nothing", fValue, 0);
aString = m_pDoc->GetString(2, 1, 1);
CPPUNIT_ASSERT_MESSAGE("after undo string should be removed", aString.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("")));
- aUndo.Redo();
+ pUndo->Redo();
fValue = m_pDoc->GetValue(ScAddress(1,1,1));
ASSERT_DOUBLES_EQUAL_MESSAGE("formula should return 2 after redo", fValue, 2);
aString = m_pDoc->GetString(2, 1, 1);
@@ -6957,6 +6954,17 @@ void Test::pasteFromClip(ScDocument* pDestDoc, const ScRange& rDestRange, ScDocu
pDestDoc->CopyFromClip(rDestRange, aMark, IDF_ALL, NULL, pClipDoc);
}
+ScUndoPaste* Test::createUndoPaste(ScDocShell& rDocSh, const ScRange& rRange, ScDocument* pUndoDoc)
+{
+ ScDocument* pDoc = rDocSh.GetDocument();
+ ScMarkData aMarkData;
+ aMarkData.SetMarkArea(rRange);
+ ScRefUndoData* pRefUndoData = new ScRefUndoData(pDoc);
+
+ return new ScUndoPaste(
+ &rDocSh, rRange, aMarkData, pUndoDoc, NULL, IDF_ALL, pRefUndoData, false);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 9530614..0489683 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -13,6 +13,7 @@
#include "helper/qahelper.hxx"
struct TestImpl;
+class ScUndoPaste;
/**
* Temporarily set formula grammar.
@@ -33,6 +34,7 @@ public:
static void clearRange(ScDocument* pDoc, const ScRange& rRange);
static void copyToClip(ScDocument* pSrcDoc, const ScRange& rRange, ScDocument* pClipDoc);
static void pasteFromClip(ScDocument* pDestDoc, const ScRange& rDestRange, ScDocument* pClipDoc);
+ static ScUndoPaste* createUndoPaste(ScDocShell& rDocSh, const ScRange& rRange, ScDocument* pUndoDoc);
Test();
~Test();
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 035f4ea..2c49a16 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -13,6 +13,7 @@
#include "cellvalue.hxx"
#include "docsh.hxx"
#include "clipparam.hxx"
+#include "undoblk.hxx"
#include "formula/grammar.hxx"
@@ -266,6 +267,43 @@ void Test::testSharedFormulasCopyPaste()
CPPUNIT_ASSERT_EQUAL(1, pFC->GetSharedTopRow());
CPPUNIT_ASSERT_EQUAL(9, pFC->GetSharedLength());
+ ScRange aRange(1,0,0,1,9,0); // B1:B10
+ ScDocument* pUndoDoc = new ScDocument(SCDOCMODE_UNDO);
+ pUndoDoc->InitUndo(m_pDoc, 0, 0, true, true);
+ m_pDoc->CopyToDocument(aRange, IDF_CONTENTS, false, pUndoDoc);
+ boost::scoped_ptr<ScUndoPaste> pUndo(createUndoPaste(*m_xDocShRef, aRange, pUndoDoc));
+
+ // First, make sure the formula cells are shared in the undo document.
+ aPos.SetCol(1);
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ aPos.SetRow(i);
+ pFC = pUndoDoc->GetFormulaCell(aPos);
+ CPPUNIT_ASSERT_MESSAGE("Must be a formula cell.", pFC);
+ CPPUNIT_ASSERT_EQUAL(0, pFC->GetSharedTopRow());
+ CPPUNIT_ASSERT_EQUAL(10, pFC->GetSharedLength());
+ }
+
+ // Overwrite B1:B10.
+ for (SCROW i = 0; i <= 9; ++i)
+ m_pDoc->SetValue(ScAddress(1,i,0), i*10);
+
+ for (SCROW i = 0; i <= 9; ++i)
+ CPPUNIT_ASSERT_MESSAGE("Numeric cell was expected.", m_pDoc->GetCellType(ScAddress(1,i,0)) == CELLTYPE_VALUE);
+
+ // Undo the action to fill B1:B10 with formula cells again.
+ pUndo->Undo();
+
+ aPos.SetCol(1);
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ aPos.SetRow(i);
+ pFC = m_pDoc->GetFormulaCell(aPos);
+ CPPUNIT_ASSERT_MESSAGE("This should be a formula cell.", pFC);
+ CPPUNIT_ASSERT_EQUAL(0, pFC->GetSharedTopRow());
+ CPPUNIT_ASSERT_EQUAL(10, pFC->GetSharedLength());
+ }
+
m_pDoc->DeleteTab(0);
}
commit b61ffbc4b63ed1be09475066a8a6511306fd1e9b
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 22:56:30 2013 -0400
Grouping of formula cells during undo.
Change-Id: I57693eee34a073cd3f39fdd4f5a74eafb12c9dc7
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index c69a3c1..7ce2d5b 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1572,7 +1572,6 @@ class CopyAsLinkHandler
sc::ColumnBlockPosition maDestPos;
sc::ColumnBlockPosition* mpDestPos;
sal_uInt16 mnCopyFlags;
- std::vector<ScFormulaCell*> maCellBuffer;
void setDefaultAttrToDest(size_t nRow)
{
@@ -1602,13 +1601,12 @@ class CopyAsLinkHandler
{
size_t nTopRow = aNode.position + nOffset;
- maCellBuffer.clear();
- maCellBuffer.reserve(nDataSize);
-
for (size_t i = 0; i < nDataSize; ++i)
- maCellBuffer.push_back(createRefCell(nTopRow + i));
+ {
+ SCROW nRow = nTopRow + i;
+ mrDestCol.SetFormulaCell(maDestPos, nRow, createRefCell(nRow));
+ }
- maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nTopRow, maCellBuffer.begin(), maCellBuffer.end());
setDefaultAttrsToDest(nTopRow, nDataSize);
}
@@ -1727,7 +1725,7 @@ class CopyByCloneHandler
// Clone as formula cell.
ScFormulaCell* pCell = new ScFormulaCell(rSrcCell, mrDestCol.GetDoc(), aDestPos);
pCell->SetDirtyVar();
- maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, pCell);
+ mrDestCol.SetFormulaCell(maDestPos, nRow, pCell);
setDefaultAttrToDest(nRow);
return;
}
@@ -1743,8 +1741,7 @@ class CopyByCloneHandler
// error codes are cloned with values
ScFormulaCell* pErrCell = new ScFormulaCell(&mrDestCol.GetDoc(), aDestPos);
pErrCell->SetErrCode(nErr);
- maDestPos.miCellPos = mrDestCol.GetCellStore().set(
- maDestPos.miCellPos, nRow, new ScFormulaCell(rSrcCell, mrDestCol.GetDoc(), aDestPos));
+ mrDestCol.SetFormulaCell(maDestPos, nRow, pErrCell);
setDefaultAttrToDest(nRow);
return;
}
commit 3009e908b304b3df5adfb4e9bdff4243e431014d
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 00:54:46 2013 -0400
Group a new formula cell in CopyCellToDocument.
Change-Id: I8a8a24f4d40210700979ef249636b85b6b81e8cd
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index ea48739..c69a3c1 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1535,7 +1535,7 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes
ScAddress aDestPos = p->aPos;
aDestPos.SetRow(nDestRow);
ScFormulaCell* pNew = new ScFormulaCell(*p, *rDestCol.pDocument, aDestPos);
- rDestCol.maCells.set(nDestRow, pNew);
+ rDestCol.SetFormulaCell(nDestRow, pNew);
}
break;
case sc::element_type_empty:
@@ -1550,7 +1550,6 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes
else
rDestCol.maCellTextAttrs.set_empty(nDestRow, nDestRow);
- rDestCol.RegroupFormulaCells(nDestRow);
rDestCol.CellStorageModified();
}
commit 8e4c37e2f3dad18611988e2510f03382f11f1f57
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 00:48:01 2013 -0400
Remove these markers.
CopyToClip is covered by the previous commit.
CopyStaticToClip doesn't copy any formula cells.
Change-Id: Iaca9d1875396629e00a86b6a9ec8048553ec3053
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index bb6677d..ea48739 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1395,7 +1395,6 @@ void ScColumn::CopyToClip(
CopyToClipHandler aFunc(*this, rColumn, rCxt.getBlockPosition(rColumn.nTab, rColumn.nCol));
sc::ParseBlock(maCells.begin(), maCells, aFunc, nRow1, nRow2);
- rColumn.RegroupFormulaCells(nRow1, nRow2);
rColumn.CellStorageModified();
}
@@ -1502,7 +1501,6 @@ void ScColumn::CopyStaticToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol
break;
}
- rDestCol.RegroupFormulaCells(nRow1, nRow2);
rDestCol.CellStorageModified();
}
commit 7bf086e2e790a23c0815a5acfeffc70a3f9278b2
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 00:40:50 2013 -0400
Add test for formula grouping during copy and paste.
Change-Id: I19604b753801073366058527c19020cc5db812d0
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 49bd3ca..78005fe 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -87,6 +87,17 @@ struct TestImpl
ScDocShellRef m_xDocShell;
};
+FormulaGrammarSwitch::FormulaGrammarSwitch(ScDocument* pDoc, formula::FormulaGrammar::Grammar eGrammar) :
+ mpDoc(pDoc), meOldGrammar(pDoc->GetGrammar())
+{
+ mpDoc->SetGrammar(eGrammar);
+}
+
+FormulaGrammarSwitch::~FormulaGrammarSwitch()
+{
+ mpDoc->SetGrammar(meOldGrammar);
+}
+
void printRange(ScDocument* pDoc, const ScRange& rRange, const char* pCaption)
{
SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
@@ -129,26 +140,6 @@ ScRange insertRangeData(ScDocument* pDoc, const ScAddress& rPos, const char* aDa
return aRange;
}
-/**
- * Temporarily set formula grammar.
- */
-class FormulaGrammarSwitch
-{
- ScDocument* mpDoc;
- formula::FormulaGrammar::Grammar meOldGrammar;
-public:
- FormulaGrammarSwitch(ScDocument* pDoc, formula::FormulaGrammar::Grammar eGrammar) :
- mpDoc(pDoc), meOldGrammar(pDoc->GetGrammar())
- {
- mpDoc->SetGrammar(eGrammar);
- }
-
- ~FormulaGrammarSwitch()
- {
- mpDoc->SetGrammar(meOldGrammar);
- }
-};
-
class MeasureTimeSwitch
{
double& mrDiff;
@@ -5761,11 +5752,8 @@ void Test::testCopyPaste()
//copy Sheet1.A1:C1 to Sheet2.A2:C2
ScRange aRange(0,0,0,2,0,0);
- ScClipParam aClipParam(aRange, false);
- ScMarkData aMark;
- aMark.SetMarkArea(aRange);
ScDocument aClipDoc(SCDOCMODE_CLIP);
- m_pDoc->CopyToClip(aClipParam, &aClipDoc, &aMark);
+ copyToClip(m_pDoc, aRange, &aClipDoc);
sal_uInt16 nFlags = IDF_ALL;
aRange = ScRange(0,1,1,2,1,1);//target: Sheet2.A2:C2
@@ -6954,6 +6942,21 @@ void Test::clearRange(ScDocument* pDoc, const ScRange& rRange)
rRange.aEnd.Col(), rRange.aEnd.Row(), aMarkData, IDF_CONTENTS);
}
+void Test::copyToClip(ScDocument* pSrcDoc, const ScRange& rRange, ScDocument* pClipDoc)
+{
+ ScClipParam aClipParam(rRange, false);
+ ScMarkData aMark;
+ aMark.SetMarkArea(rRange);
+ pSrcDoc->CopyToClip(aClipParam, pClipDoc, &aMark);
+}
+
+void Test::pasteFromClip(ScDocument* pDestDoc, const ScRange& rDestRange, ScDocument* pClipDoc)
+{
+ ScMarkData aMark;
+ aMark.SetMarkArea(rDestRange);
+ pDestDoc->CopyFromClip(rDestRange, aMark, IDF_ALL, NULL, pClipDoc);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 2d7a41a..9530614 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -14,11 +14,25 @@
struct TestImpl;
+/**
+ * Temporarily set formula grammar.
+ */
+class FormulaGrammarSwitch
+{
+ ScDocument* mpDoc;
+ formula::FormulaGrammar::Grammar meOldGrammar;
+public:
+ FormulaGrammarSwitch(ScDocument* pDoc, formula::FormulaGrammar::Grammar eGrammar);
+ ~FormulaGrammarSwitch();
+};
+
class Test : public test::BootstrapFixture
{
public:
static void clearRange(ScDocument* pDoc, const ScRange& rRange);
+ static void copyToClip(ScDocument* pSrcDoc, const ScRange& rRange, ScDocument* pClipDoc);
+ static void pasteFromClip(ScDocument* pDestDoc, const ScRange& rDestRange, ScDocument* pClipDoc);
Test();
~Test();
@@ -162,6 +176,7 @@ public:
void testUpdateReference();
void testSearchCells();
void testSharedFormulas();
+ void testSharedFormulasCopyPaste();
void testFormulaPosition();
/**
@@ -280,6 +295,7 @@ public:
CPPUNIT_TEST(testUpdateReference);
CPPUNIT_TEST(testSearchCells);
CPPUNIT_TEST(testSharedFormulas);
+ CPPUNIT_TEST(testSharedFormulasCopyPaste);
CPPUNIT_TEST(testFormulaPosition);
CPPUNIT_TEST(testJumpToPrecedentsDependents);
CPPUNIT_TEST(testSetBackgroundColor);
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 59aa7a4..035f4ea 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -12,6 +12,9 @@
#include "formulacell.hxx"
#include "cellvalue.hxx"
#include "docsh.hxx"
+#include "clipparam.hxx"
+
+#include "formula/grammar.hxx"
void Test::testSharedFormulas()
{
@@ -227,4 +230,43 @@ void Test::testSharedFormulas()
m_pDoc->DeleteTab(0);
}
+void Test::testSharedFormulasCopyPaste()
+{
+ m_pDoc->InsertTab(0, "Test");
+ FormulaGrammarSwitch aFGSwitch(m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
+
+ // Fill formula cells B1:B10.
+ for (SCROW i = 0; i <= 9; ++i)
+ m_pDoc->SetString(1, i, 0, "=RC[-1]");
+
+ ScAddress aPos(1, 8, 0); // B9
+ ScFormulaCell* pFC = m_pDoc->GetFormulaCell(aPos);
+ CPPUNIT_ASSERT_MESSAGE("B9 should be a formula cell.", pFC);
+ CPPUNIT_ASSERT_EQUAL(0, pFC->GetSharedTopRow());
+ CPPUNIT_ASSERT_EQUAL(10, pFC->GetSharedLength());
+
+ // Copy formulas in B6:B9 to the clipboard doc.
+ ScRange aSrcRange(1,5,0,1,8,0); // B6:B9
+ ScDocument aClipDoc(SCDOCMODE_CLIP);
+ copyToClip(m_pDoc, aSrcRange, &aClipDoc);
+ pFC = aClipDoc.GetFormulaCell(aPos);
+ CPPUNIT_ASSERT_MESSAGE("B9 in the clip doc should be a formula cell.", pFC);
+ CPPUNIT_ASSERT_EQUAL(5, pFC->GetSharedTopRow());
+ CPPUNIT_ASSERT_EQUAL(4, pFC->GetSharedLength());
+
+ // Paste them to C2:C10.
+ ScRange aDestRange(2,1,0,2,9,0);
+ OUString aRS;
+ aDestRange.Format(aRS, SCR_ABS);
+ pasteFromClip(m_pDoc, aDestRange, &aClipDoc);
+ aPos.SetCol(2);
+ aPos.SetRow(1);
+ pFC = m_pDoc->GetFormulaCell(aPos);
+ CPPUNIT_ASSERT_MESSAGE("C2 should be a formula cell.", pFC);
+ CPPUNIT_ASSERT_EQUAL(1, pFC->GetSharedTopRow());
+ CPPUNIT_ASSERT_EQUAL(9, pFC->GetSharedLength());
+
+ m_pDoc->DeleteTab(0);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit df168ac73149d3a48c82b375144ab59e3338de02
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Tue Jul 9 00:39:26 2013 -0400
Group formula cells when copying to clip, prevent crash during pasting.
Change-Id: I6a33301d74d9845e8c0fa77894fbd89bea40fd1b
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index bd48bad..bb6677d 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1257,6 +1257,40 @@ class CopyToClipHandler
maDestPos.miCellTextAttrPos, nRow, aAttrs.begin(), aAttrs.end());
}
+ void groupFormulaCells(std::vector<ScFormulaCell*>& rCells)
+ {
+ if (rCells.empty())
+ return;
+
+ std::vector<ScFormulaCell*>::iterator it = rCells.begin(), itEnd = rCells.end();
+ ScFormulaCell* pPrev = *it;
+ ScFormulaCell* pCur = NULL;
+ for (++it; it != itEnd; ++it, pPrev = pCur)
+ {
+ pCur = *it;
+ ScFormulaCell::CompareState eState = pPrev->CompareByTokenArray(*pPrev);
+ if (eState == ScFormulaCell::NotEqual)
+ continue;
+
+ ScFormulaCellGroupRef xGroup = pPrev->GetCellGroup();
+ if (xGroup)
+ {
+ // Extend the group.
+ ++xGroup->mnLength;
+ pCur->SetCellGroup(xGroup);
+ continue;
+ }
+
+ // Create a new group.
+ xGroup.reset(new ScFormulaCellGroup);
+ xGroup->mnStart = pPrev->aPos.Row();
+ xGroup->mnLength = 2;
+ xGroup->mbInvariant = (eState == ScFormulaCell::EqualInvariant);
+ pPrev->SetCellGroup(xGroup);
+ pCur->SetCellGroup(xGroup);
+ }
+ }
+
public:
CopyToClipHandler(const ScColumn& rSrcCol, ScColumn& rDestCol, sc::ColumnBlockPosition* pDestPos) :
mrSrcCol(rSrcCol), mrDestCol(rDestCol), mpDestPos(pDestPos)
@@ -1336,6 +1370,9 @@ public:
aCloned.push_back(new ScFormulaCell(rOld, mrDestCol.GetDoc(), aDestPos));
}
+ // Group the cloned formula cells.
+ groupFormulaCells(aCloned);
+
maDestPos.miCellPos = mrDestCol.GetCellStore().set(
maDestPos.miCellPos, nTopRow, aCloned.begin(), aCloned.end());
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index d99a6ec..8352d46 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -897,6 +897,7 @@ class CopyCellsFromClipHandler
SCCOL mnCol;
long mnRowOffset;
sc::ColumnBlockPosition maDestBlockPos;
+ sc::ColumnBlockPosition* mpDestBlockPos; // to save it for next iteration.
bool isDateCell(SCROW nSrcRow) const
{
@@ -928,15 +929,22 @@ public:
mrDestCol(rDestCol),
mnTab(nDestTab),
mnCol(nDestCol),
- mnRowOffset(nRowOffset)
+ mnRowOffset(nRowOffset),
+ mpDestBlockPos(mrCxt.getBlockPosition(nDestTab, nDestCol))
{
- sc::ColumnBlockPosition* p = mrCxt.getBlockPosition(nDestTab, nDestCol);
- if (p)
- maDestBlockPos = *p;
+ if (mpDestBlockPos)
+ maDestBlockPos = *mpDestBlockPos;
else
mrDestCol.InitBlockPosition(maDestBlockPos);
}
+ ~CopyCellsFromClipHandler()
+ {
+ if (mpDestBlockPos)
+ // Don't forget to save this to the context!
+ *mpDestBlockPos = maDestBlockPos;
+ }
+
void operator() (const sc::CellStoreType::value_type& node, size_t nOffset, size_t nDataSize)
{
if (node.type == sc::element_type_empty)
commit 7f3bef3d14791f2936b862295d2f5de848561987
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Wed Jul 10 02:58:32 2013 +0200
don't use empty table name
Change-Id: I9c8c3882f659747d53a047481ccabf1785835c99
diff --git a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
index c7c5776..1cbb0d1 100644
--- a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
+++ b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
@@ -508,10 +508,13 @@ OUString OSingleSelectQueryComposer::impl_getColumnName_throw(const Reference< X
::dbtools::qualifiedNameComponents(m_xMetaData,sTableName,aCatlog,aSchema,aTable,::dbtools::eInDataManipulation);
sTableName = ::dbtools::composeTableName( m_xMetaData, aCatlog, aSchema, aTable, sal_True, ::dbtools::eInDataManipulation );
}
- else
+ else if (!sTableName.isEmpty())
sTableName = ::dbtools::quoteName(aQuote,sTableName);
- aNewName = sTableName + "." + ::dbtools::quoteName(aQuote,sRealName);
+ if(sTableName.isEmpty())
+ aNewName = ::dbtools::quoteName(aQuote,sRealName);
+ else
+ aNewName = sTableName + "." + ::dbtools::quoteName(aQuote,sRealName);
}
}
else
commit 83076c22e1ffbad06f4b250b69cd239758fbb1ba
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Wed Jul 10 02:58:01 2013 +0200
TODO note
Change-Id: I1b310119c08052949e975bfa3838e229d4e140b2
diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx
index bb271b9..0ae7b83 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -589,6 +589,13 @@ const OSQLParseNode* OSQLParseTreeIterator::getTableNode( OSQLTables& _rTables,
if ( SQL_ISRULE( pQueryExpression, select_statement ) )
{
getSelect_statement( *m_pImpl->m_pSubTables, pQueryExpression );
+ // LEM TODO: now, we need to setup a OSQLTable from pQueryExpression in some way
+ // and stick it in _rTables[rTableRange]. Probably fake it by
+ // setting up a full OSQLParseTreeIterator on pQueryExpression
+ // and using its m_aSelectColumns
+ // This is necessary in stuff like "SELECT * FROM tbl1 INNER JOIN (SELECT foo, bar FROM tbl2) AS tbl3"
+ // so that setSelectColumnName() can expand the "*" correctly.
+ // See e.g. R_UserAndLastSubscription query of https://bugs.freedesktop.org/attachment.cgi?id=71871
}
else
{
commit c9a8f238e03f7b4e54f5a963a6593888759ae3fa
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Wed Jul 10 01:13:32 2013 +0200
remove bogus test
the TABLENAME property contains the *original* tablename, but this column should have the query table alias as table name
Change-Id: Ieeb362f38b701b92998e293dda474bad36e5e577
diff --git a/connectivity/source/parse/PColumn.cxx b/connectivity/source/parse/PColumn.cxx
index 006a584..60ed5b0 100644
--- a/connectivity/source/parse/PColumn.cxx
+++ b/connectivity/source/parse/PColumn.cxx
@@ -214,9 +214,6 @@ OOrderColumn::OOrderColumn( const Reference<XPropertySet>& _xColumn, const OUStr
,m_bAscending(_bAscending)
{
construct();
- OSL_ENSURE( getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME))).isEmpty() ||
- i_rOriginatingTableName == getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME)) ),
- "dbaccess::OOrderColumn::OOrderColumn: forced originating table name != underlying column table name" );
}
// -----------------------------------------------------------------------------
commit f220c3913a167b0d9702aca2b623839abe8665f1
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Wed Jul 10 00:52:04 2013 +0200
make SQL grammar Generalised LR
This fixes parsing failures, like e.g.
warn:legacy.osl:30429:1:dbaccess/source/core/api/SingleSelectQueryComposer.cxx:783: OSingleSelectQueryComposer::getColumns: could not parse the column retrieval statement!
when opening query "Balance" of https://bugs.freedesktop.org/attachment.cgi?id=71964
OTOH, since we have reduce/reduce conflicts, we might have true
ambiguities in our grammar. This change makes the parsing fail
in the presence of full-expression ambiguities instead of making
a ~arbitrary choice.
Change-Id: I88574da91045dd52f198f193c78d144302f298a4
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y
index c2b02ce..160852f 100644
--- a/connectivity/source/parse/sqlbison.y
+++ b/connectivity/source/parse/sqlbison.y
@@ -1,3 +1,4 @@
+%glr-parser
%token-table
%{
/*
@@ -304,7 +305,7 @@ op_schema:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -349,9 +350,9 @@ base_table_def:
$$->append($1);
$$->append($2);
$$->append($3);
- $$->append($4 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
;
base_table_element_commalist:
@@ -424,9 +425,9 @@ column_def_opt:
| SQL_TOKEN_CHECK '(' search_condition ')'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
| SQL_TOKEN_REFERENCES table_node
{$$ = SQL_NEW_RULE;
$$->append($1);
@@ -435,53 +436,53 @@ column_def_opt:
{$$ = SQL_NEW_RULE;
$$->append($1);
$$->append($2);
- $$->append($3 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
;
table_constraint_def:
unique_spec '(' column_commalist ')'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
| SQL_TOKEN_FOREIGN SQL_TOKEN_KEY '(' column_commalist ')' SQL_TOKEN_REFERENCES table_node
{$$ = SQL_NEW_RULE;
$$->append($1);
$$->append($2);
- $$->append($3 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($6);
$$->append($7);}
| SQL_TOKEN_FOREIGN SQL_TOKEN_KEY '(' column_commalist ')' SQL_TOKEN_REFERENCES table_node '(' column_commalist ')'
{$$ = SQL_NEW_RULE;
$$->append($1);
$$->append($2);
- $$->append($3 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($6);
$$->append($7);
- $$->append($8 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($9);
- $$->append($10 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
| SQL_TOKEN_CHECK '(' search_condition ')'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
;
op_column_commalist:
/* empty */ {$$ = SQL_NEW_RULE;}
| '(' column_commalist ')'
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
column_commalist:
@@ -518,9 +519,9 @@ opt_column_commalist:
/* empty */ {$$ = SQL_NEW_RULE;}
| '(' column_commalist ')'
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
;
privilege_def:
@@ -671,9 +672,9 @@ manipulative_statement:
| '{' odbc_call_spec '}'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("{", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("{", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode("}", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("}", SQL_NODE_PUNCTUATION));
}
;
@@ -738,9 +739,9 @@ values_or_query_spec:
SQL_TOKEN_VALUES '(' table_value_const_list ')'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
@@ -765,9 +766,9 @@ row_value_constructor:
/* | '(' row_value_const_list ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
*/
;
@@ -891,7 +892,7 @@ selection:
'*'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
}
| scalar_exp_commalist
;
@@ -1033,17 +1034,17 @@ table_ref:
| '{' SQL_TOKEN_OJ joined_table '}'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("{", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("{", SQL_NODE_PUNCTUATION));
$$->append($2);
$$->append($3);
- $$->append($4 = newNode("}", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("}", SQL_NODE_PUNCTUATION));
}
| '(' joined_table ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
where_clause:
@@ -1097,9 +1098,9 @@ boolean_primary:
| '(' search_condition ')'
{ // boolean_primary: rule 2
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| row_value_constructor_elem /*[^')' ',']*/
{
@@ -1130,9 +1131,9 @@ parenthesized_boolean_value_expression:
'(' search_condition ')'
{ // boolean_primary: rule 2
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
boolean_test:
@@ -1381,10 +1382,10 @@ opt_escape:
| '{' SQL_TOKEN_ESCAPE SQL_TOKEN_STRING '}'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("{", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("{", SQL_NODE_PUNCTUATION));
$$->append($2);
$$->append($3);
- $$->append($4 = newNode("}", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("}", SQL_NODE_PUNCTUATION));
}
;
@@ -1426,9 +1427,9 @@ in_predicate_value:
}
| '(' value_exp_commalist ')'
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
in_predicate_part_2:
@@ -1515,9 +1516,9 @@ unique_test:
subquery:
'(' query_exp ')'
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));}
;
/* scalar expressions */
@@ -1538,8 +1539,8 @@ select_sublist:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
}
*/
derived_column
@@ -1564,14 +1565,14 @@ op_like:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
xxx_pGLOBAL_SQLPARSER->reduceLiteral($$, sal_False);
}
| op_like '?'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("?", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("?", SQL_NODE_PUNCTUATION));
xxx_pGLOBAL_SQLPARSER->reduceLiteral($$, sal_False);
}
;
@@ -1651,19 +1652,19 @@ position_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_POSITION '(' value_exp_commalist ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
num_value_fct:
@@ -1676,17 +1677,17 @@ char_length_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_SQL_TOKEN_INTNUM '(' value_exp ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
@@ -1695,9 +1696,9 @@ octet_length_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
bit_length_exp:
@@ -1705,9 +1706,9 @@ bit_length_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
length_exp:
@@ -1773,11 +1774,11 @@ extract_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
unsigned_value_spec:
@@ -1805,63 +1806,63 @@ set_fct_spec:
| '{' odbc_fct_spec '}'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("{", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("{", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode("}", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("}", SQL_NODE_PUNCTUATION));
}
| function_name '(' ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name0 '(' ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name1 '(' function_arg ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name2 '(' function_arg_commalist2 ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name3 '(' function_arg_commalist3 ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| string_function_4Argument '(' function_arg_commalist4 ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name '(' function_args_commalist ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| function_name12 '(' function_args_commalist ')'
{
@@ -1869,9 +1870,9 @@ set_fct_spec:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
else
YYERROR;
@@ -1882,9 +1883,9 @@ set_fct_spec:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
else
YYERROR;
@@ -2024,15 +2025,15 @@ window_function_type :
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_ROW_NUMBER '(' ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| general_set_fct
| ntile_function
@@ -2045,9 +2046,9 @@ ntile_function :
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
dynamic_parameter_specification:
@@ -2065,15 +2066,15 @@ opt_lead_or_lag_function:
| ',' offset
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($2);
}
| ',' offset ',' default_expression
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($4);
}
;
@@ -2087,10 +2088,10 @@ lead_or_lag_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($6);
}
;
@@ -2116,9 +2117,9 @@ first_or_last_value_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($5);
}
;
@@ -2135,11 +2136,11 @@ nth_value_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($7);
$$->append($8);
}
@@ -2208,9 +2209,9 @@ window_specification:
'(' window_specification_details ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
opt_existing_window_name:
@@ -2370,7 +2371,7 @@ op_parameter:
| '?' SQL_EQUAL
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("?", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("?", SQL_NODE_PUNCTUATION));
$$->append($2);
}
;
@@ -2390,9 +2391,9 @@ op_odbc_call_parameter:
| '(' odbc_parameter_commalist ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
@@ -2438,27 +2439,27 @@ general_set_fct:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_COUNT '(' '*' ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
- $$->append($3 = newNode("*", SQL_NODE_PUNCTUATION));
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_COUNT '(' opt_all_distinct function_arg ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| ordered_set_function
| array_aggregate_function
@@ -2489,20 +2490,20 @@ hypothetical_set_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($5);
}
| rank_function_type '(' hypothetical_set_function_value_expression_list SQL_TOKEN_BY value_exp_commalist ')' within_group_specification
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($7);
}
;
@@ -2516,9 +2517,9 @@ within_group_specification:
$$ = SQL_NEW_RULE;
$$->append($1);
$$->append($2);
- $$->append($3 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
hypothetical_set_function_value_expression_list:
@@ -2530,9 +2531,9 @@ inverse_distribution_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
inverse_distribution_function_argument:
@@ -2548,10 +2549,10 @@ array_aggregate_function:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
@@ -2646,9 +2647,9 @@ named_columns_join:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
simple_table:
@@ -2661,9 +2662,9 @@ non_join_query_primary:
| '(' non_join_query_exp ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
non_join_query_term:
@@ -2721,11 +2722,11 @@ cast_spec:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
value_exp_primary:
@@ -2738,9 +2739,9 @@ value_exp_primary:
| '(' value_exp ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| cast_spec
;
@@ -2754,13 +2755,13 @@ factor:
| '-' num_primary %prec SQL_TOKEN_UMINUS
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("-", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("-", SQL_NODE_PUNCTUATION));
$$->append($2);
}
| '+' num_primary %prec SQL_TOKEN_UMINUS
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($2);
}
;
@@ -2771,14 +2772,14 @@ term:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| term '/' factor
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("/", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("/", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -2789,14 +2790,14 @@ num_value_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| num_value_exp '-' term
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("-", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("-", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -2878,14 +2879,14 @@ interval_term:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| interval_term '/' factor
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("/", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("/", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -2900,21 +2901,21 @@ datetime_value_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| datetime_value_exp '+' interval_term
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| datetime_value_exp '-' interval_term
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("-", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("-", SQL_NODE_PUNCTUATION));
$$->append($3);
}
*/ ;
@@ -2929,24 +2930,24 @@ interval_value_exp:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| interval_value_exp '-' interval_term
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("-", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("-", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| '(' datetime_value_exp '-' datetime_term ')' interval_qualifier
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode("-", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("-", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
$$->append($6);
}
;
@@ -3117,7 +3118,7 @@ concatenation:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| value_exp SQL_CONCAT value_exp
@@ -3166,12 +3167,12 @@ bit_substring_fct:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
$$->append($6);
- $$->append($7 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
bit_value_exp:
@@ -3193,7 +3194,7 @@ bit_concatenation:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("+", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("+", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -3251,20 +3252,20 @@ char_substring_fct:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
$$->append($6);
- $$->append($7 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_SUBSTRING '(' value_exp_commalist ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
upper_lower:
@@ -3276,9 +3277,9 @@ fold:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
form_conversion:
@@ -3286,21 +3287,21 @@ form_conversion:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_CONVERT '(' cast_operand ',' cast_target ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($2 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
char_translation:
@@ -3308,11 +3309,11 @@ char_translation:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
$$->append($4);
$$->append($5);
- $$->append($6 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
trim_fct:
@@ -3320,9 +3321,9 @@ trim_fct:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
trim_operands:
@@ -3382,14 +3383,14 @@ catalog_name:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| SQL_TOKEN_NAME ':' schema_name
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(":", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(":", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -3398,7 +3399,7 @@ schema_name:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
}
;
@@ -3416,50 +3417,50 @@ column_ref:
/* | table_node '.' column_val %prec '.'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);}
*/
| SQL_TOKEN_NAME '.' column_val %prec '.'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
}
| SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' column_val %prec '.'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($5);}
| SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' column_val %prec '.'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2= newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($7);
}
| SQL_TOKEN_NAME ':' SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' column_val %prec '.'
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2= newNode(":", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(":", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($7);
}
/* | SQL_TOKEN_NAME ';' SQL_TOKEN_NAME '.' SQL_TOKEN_NAME '.' column_val
{$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2= newNode(";", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(";", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($5);
- $$->append($6 = newNode(".", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(".", SQL_NODE_PUNCTUATION));
$$->append($7);
}
*/ ;
@@ -3472,7 +3473,7 @@ column_val:
| '*'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("*", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("*", SQL_NODE_PUNCTUATION));
}
;
data_type:
@@ -3555,9 +3556,9 @@ paren_char_length:
'(' SQL_TOKEN_INTNUM ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
opt_paren_char_large_length:
@@ -3568,9 +3569,9 @@ paren_character_large_object_length:
'(' large_object_length ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
@@ -3587,27 +3588,27 @@ opt_multiplier:
| 'K'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("K", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("K", SQL_NODE_PUNCTUATION));
}
| 'M'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("M", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("M", SQL_NODE_PUNCTUATION));
}
| 'G'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("G", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("G", SQL_NODE_PUNCTUATION));
}
| 'T'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("T", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("T", SQL_NODE_PUNCTUATION));
}
| 'P'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("P", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("P", SQL_NODE_PUNCTUATION));
}
;
character_large_object_type:
@@ -3752,18 +3753,18 @@ opt_paren_precision_scale:
| '(' SQL_TOKEN_INTNUM ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| '(' SQL_TOKEN_INTNUM ',' SQL_TOKEN_INTNUM ')'
{
$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode(",", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(",", SQL_NODE_PUNCTUATION));
$$->append($4);
- $$->append($5 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
exact_numeric_type:
@@ -3795,9 +3796,9 @@ approximate_numeric_type:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_FLOAT
| SQL_TOKEN_REAL
@@ -3886,25 +3887,25 @@ case_abbreviation:
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_COALESCE '(' value_exp ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
| SQL_TOKEN_COALESCE '(' value_exp_commalist ')'
{
$$ = SQL_NEW_RULE;
$$->append($1);
- $$->append($2 = newNode("(", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("(", SQL_NODE_PUNCTUATION));
$$->append($3);
- $$->append($4 = newNode(")", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(")", SQL_NODE_PUNCTUATION));
}
;
case_specification:
@@ -4026,16 +4027,16 @@ module: SQL_TOKEN_NAME
parameter:
':' SQL_TOKEN_NAME
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode(":", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(":", SQL_NODE_PUNCTUATION));
$$->append($2);}
| '?'
{$$ = SQL_NEW_RULE; // test
- $$->append($1 = newNode("?", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode("?", SQL_NODE_PUNCTUATION));}
| '[' SQL_TOKEN_NAME ']'
{$$ = SQL_NEW_RULE;
- $$->append($1 = newNode("[", SQL_NODE_PUNCTUATION));
+ $$->append(newNode("[", SQL_NODE_PUNCTUATION));
$$->append($2);
- $$->append($3 = newNode("]", SQL_NODE_PUNCTUATION));}
+ $$->append(newNode("]", SQL_NODE_PUNCTUATION));}
;
/***
@@ -4179,7 +4180,7 @@ triggered_SQL_statement:
$$->append($1);
$$->append($2);
$$->append($3);
- $$->append($4 = newNode(";", SQL_NODE_PUNCTUATION));
+ $$->append(newNode(";", SQL_NODE_PUNCTUATION));
$$->append($5);
}
;
diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx
index 5b034e2..07143e8 100644
--- a/connectivity/source/parse/sqlnode.cxx
+++ b/connectivity/source/parse/sqlnode.cxx
@@ -839,7 +839,7 @@ void OSQLParser::killThousandSeparator(OSQLParseNode* pLiteral)
}
}
// -----------------------------------------------------------------------------
-OSQLParseNode* OSQLParser::convertNode(sal_Int32 nType,OSQLParseNode*& pLiteral)
+OSQLParseNode* OSQLParser::convertNode(sal_Int32 nType,OSQLParseNode*const& pLiteral)
{
if ( !pLiteral )
return NULL;
@@ -957,7 +957,7 @@ OSQLParseNode* OSQLParser::convertNode(sal_Int32 nType,OSQLParseNode*& pLiteral)
return pReturn;
}
// -----------------------------------------------------------------------------
-sal_Int16 OSQLParser::buildPredicateRule(OSQLParseNode*& pAppend,OSQLParseNode* pLiteral,OSQLParseNode*& pCompare,OSQLParseNode* pLiteral2)
+sal_Int16 OSQLParser::buildPredicateRule(OSQLParseNode*& pAppend,OSQLParseNode* const pLiteral,OSQLParseNode*const & pCompare,OSQLParseNode* pLiteral2)
{
OSL_ENSURE(inPredicateCheck(),"Only in predicate check allowed!");
sal_Int16 nErg = 0;
@@ -986,7 +986,7 @@ sal_Int16 OSQLParser::buildPredicateRule(OSQLParseNode*& pAppend,OSQLParseNode*
return nErg;
}
// -----------------------------------------------------------------------------
-sal_Int16 OSQLParser::buildLikeRule(OSQLParseNode*& pAppend, OSQLParseNode*& pLiteral, const OSQLParseNode* pEscape)
+sal_Int16 OSQLParser::buildLikeRule(OSQLParseNode* const& pAppend, OSQLParseNode*& pLiteral, const OSQLParseNode* pEscape)
{
sal_Int16 nErg = 0;
sal_Int32 nType = 0;
diff --git a/include/connectivity/sqlparse.hxx b/include/connectivity/sqlparse.hxx
index 892d3ec..33884e5 100644
--- a/include/connectivity/sqlparse.hxx
+++ b/include/connectivity/sqlparse.hxx
@@ -170,7 +170,7 @@ namespace connectivity
OSQLParseNode* buildDate(sal_Int32 _nType,OSQLParseNode*& pLiteral);
bool extractDate(OSQLParseNode* pLiteral,double& _rfValue);
void killThousandSeparator(OSQLParseNode* pLiteral);
- OSQLParseNode* convertNode(sal_Int32 nType,OSQLParseNode*& pLiteral);
+ OSQLParseNode* convertNode(sal_Int32 nType,OSQLParseNode*const& pLiteral);
// makes a string out of a number, pLiteral will be deleted
OSQLParseNode* buildNode_STR_NUM(OSQLParseNode*& pLiteral);
OSQLParseNode* buildNode_Date(const double& fValue, sal_Int32 nType);
@@ -238,9 +238,9 @@ namespace connectivity
sal_Int16 buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode* pLiteral);
// pCompre will be deleted if it is not used
- sal_Int16 buildPredicateRule(OSQLParseNode*& pAppend,OSQLParseNode* pLiteral,OSQLParseNode*& pCompare,OSQLParseNode* pLiteral2 = NULL);
+ sal_Int16 buildPredicateRule(OSQLParseNode*& pAppend,OSQLParseNode* const pLiteral,OSQLParseNode*const & pCompare,OSQLParseNode* pLiteral2 = NULL);
- sal_Int16 buildLikeRule(OSQLParseNode*& pAppend,OSQLParseNode*& pLiteral,const OSQLParseNode* pEscape);
+ sal_Int16 buildLikeRule(OSQLParseNode* const& pAppend,OSQLParseNode*& pLiteral,const OSQLParseNode* pEscape);
sal_Int16 buildStringNodes(OSQLParseNode*& pLiteral);
#else
#endif
commit 6eb9c378f43e5f507d53d60d060becf4bb7615b8
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date: Wed Jul 10 00:50:11 2013 +0200
fdo#58644 fix handling of subqueries
don't remove parentheses around subqueries
(without the parentheses, it is not valid SQL)
Change-Id: I4e9c55cea0276f10b0f97e31bc329949aba5b989
diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx
index 44e7bb2..bb271b9 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -965,6 +965,7 @@ bool OSQLParseTreeIterator::traverseSelectColumnNames(const OSQLParseNode* pSele
sal_Bool bFkt(sal_False);
pColumnRef = pColumnRef->getChild(0);
if (
+ pColumnRef->getKnownRuleID() != OSQLParseNode::subquery &&
pColumnRef->count() == 3 &&
SQL_ISPUNCTUATION(pColumnRef->getChild(0),"(") &&
SQL_ISPUNCTUATION(pColumnRef->getChild(2),")")
commit 6a9aa432f53b53310ce56588508d151e15112b16
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date: Wed Jul 10 09:09:14 2013 +0900
Mark as const
Change-Id: I7fe1441dc09301604bc7a96fa5d63cfa8ca72874
diff --git a/scaddins/source/datefunc/datefunc.cxx b/scaddins/source/datefunc/datefunc.cxx
index 8f016d6..07dcd84 100644
--- a/scaddins/source/datefunc/datefunc.cxx
+++ b/scaddins/source/datefunc/datefunc.cxx
@@ -532,7 +532,7 @@ sal_Bool IsLeapYear( sal_uInt16 nYear )
sal_uInt16 DaysInMonth( sal_uInt16 nMonth, sal_uInt16 nYear )
{
- static sal_uInt16 aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,
+ static const sal_uInt16 aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
if ( nMonth != 2 )
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 5f70417..b714db9 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -1112,7 +1112,7 @@ LayoutDescriptor::LayoutDescriptor( int nLayout, int k0, int k1, int k2, int k3,
static const LayoutDescriptor& GetLayoutDescriptor( AutoLayout eLayout )
{
- static LayoutDescriptor aLayouts[AUTOLAYOUT__END-AUTOLAYOUT__START] =
+ static const LayoutDescriptor aLayouts[AUTOLAYOUT__END-AUTOLAYOUT__START] =
{
LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_TEXT ), // AUTOLAYOUT_TITLE
LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OUTLINE ), // AUTOLAYOUT_ENUM
@@ -2881,7 +2881,7 @@ void SdPage::CalculateHandoutAreas( SdDrawDocument& rModel, AutoLayout eLayout,
const bool bLandscape = aArea.Width() > aArea.Height();
- static sal_uInt16 aOffsets[5][9] =
+ static const sal_uInt16 aOffsets[5][9] =
{
{ 0, 1, 2, 3, 4, 5, 6, 7, 8 }, // AUTOLAYOUT_HANDOUT9, Portrait, Horizontal order
{ 0, 2, 4, 1, 3, 5, 0, 0, 0 }, // AUTOLAYOUT_HANDOUT3, Landscape, Vertical
@@ -2890,7 +2890,7 @@ void SdPage::CalculateHandoutAreas( SdDrawDocument& rModel, AutoLayout eLayout,
{ 0, 3, 6, 1, 4, 7, 2, 5, 8 }, // AUTOLAYOUT_HANDOUT9, Landscape, Vertical
};
- sal_uInt16* pOffsets = aOffsets[0];
+ const sal_uInt16* pOffsets = aOffsets[0];
sal_uInt16 nColCnt = 0, nRowCnt = 0;
switch ( eLayout )
{
diff --git a/sd/source/filter/eppt/eppt.cxx b/sd/source/filter/eppt/eppt.cxx
index d7eeb5d..4debddf 100644
--- a/sd/source/filter/eppt/eppt.cxx
+++ b/sd/source/filter/eppt/eppt.cxx
@@ -502,7 +502,7 @@ sal_Bool PPTWriter::ImplCreateDocumentSummaryInformation()
if (xDocProps.is()) {
// no idea what this is...
- static sal_uInt8 aGuid[ 0x52 ] =
+ static const sal_uInt8 aGuid[ 0x52 ] =
{
0x4e, 0x00, 0x00, 0x00,
'{',0,'D',0,'B',0,'1',0,'A',0,'C',0,'9',0,'6',0,'4',0,'-',0,
diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx
index 3bbbf63..adf36cb 100644
--- a/sd/source/filter/html/htmlex.cxx
+++ b/sd/source/filter/html/htmlex.cxx
@@ -2735,7 +2735,7 @@ String HtmlExport::CreateImage( const String& aImage, const String& aAltText,
// =====================================================================
String HtmlExport::ColorToHTMLString( Color aColor )
{
- static char hex[] = "0123456789ABCDEF";
+ static const char hex[] = "0123456789ABCDEF";
String aStr( "#xxxxxx" );
aStr.SetChar(1, hex[(aColor.GetRed() >> 4) & 0xf] );
aStr.SetChar(2, hex[aColor.GetRed() & 0xf] );
diff --git a/sd/source/ui/table/TableDesignPane.cxx b/sd/source/ui/table/TableDesignPane.cxx
index 484b467..adeecf6 100644
--- a/sd/source/ui/table/TableDesignPane.cxx
+++ b/sd/source/ui/table/TableDesignPane.cxx
@@ -330,7 +330,7 @@ IMPL_LINK_NOARG(TableDesignPane, implCheckBoxHdl)
void TableDesignPane::ApplyOptions()
{
- static sal_uInt16 gParamIds[CB_BANDED_COLUMNS-CB_HEADER_ROW+1] =
+ static const sal_uInt16 gParamIds[CB_BANDED_COLUMNS-CB_HEADER_ROW+1] =
{
ID_VAL_USEFIRSTROWSTYLE, ID_VAL_USELASTROWSTYLE, ID_VAL_USEBANDINGROWSTYLE,
ID_VAL_USEFIRSTCOLUMNSTYLE, ID_VAL_USELASTCOLUMNSTYLE, ID_VAL_USEBANDINGCOLUMNSTYLE
@@ -523,7 +523,7 @@ void TableDesignPane::updateLayout()
void TableDesignPane::updateControls()
{
- static sal_Bool gDefaults[CB_BANDED_COLUMNS-CB_HEADER_ROW+1] = { sal_True, sal_False, sal_True, sal_False, sal_False, sal_False };
+ static const sal_Bool gDefaults[CB_BANDED_COLUMNS-CB_HEADER_ROW+1] = { sal_True, sal_False, sal_True, sal_False, sal_False, sal_False };
const bool bHasTable = mxSelectedTable.is();
const OUString* pPropNames = getPropertyNames();
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index 1b9590b..2444d69 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -258,7 +258,7 @@ static SdTypesCache gImplTypesCache;
}
static const SfxItemPropertyMapEntry* lcl_GetEmpty_SdXShapePropertyMap_Impl()
{
- static SfxItemPropertyMapEntry aEmpty_SdXShapePropertyMap_Impl[] =
+ static const SfxItemPropertyMapEntry aEmpty_SdXShapePropertyMap_Impl[] =
{
{ 0,0,0,0,0,0}
};
commit 6e6634b87dc4873e42efb9e2577ffc59776866ec
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Tue Jul 9 23:55:57 2013 +0200
Revert "Separate ScDocShell declaration with ScDocShellRef declaration."
This reverts commit 572478433647e9d8a657a2271f0ef6bf349de526.
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index e3995a4..59aa7a4 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -11,7 +11,7 @@
#include "editutil.hxx"
#include "formulacell.hxx"
#include "cellvalue.hxx"
-#include "docshell.hxx"
+#include "docsh.hxx"
void Test::testSharedFormulas()
{
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index aeeb4b5..ec2201f 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -17,14 +17,459 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef SC_DOCSH_HXX
-#define SC_DOCSH_HXX
+#ifndef SC_DOCSHELL_HXX
+#define SC_DOCSHELL_HXX
+
+
+#include <sfx2/objsh.hxx>
+
+#include <sfx2/docfac.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
+#include <sfx2/viewsh.hxx>
+
+#include "scdllapi.h"
+#include "scdll.hxx"
+#include "document.hxx"
+#include "appoptio.hxx"
+#include "formulaopt.hxx"
+#include "shellids.hxx"
+#include "refreshtimer.hxx"
+#include "optutil.hxx"
+
+#include <boost/unordered_map.hpp>
+#include <cppuhelper/implbase1.hxx>
+
+#include <config_telepathy.h>
+
+class ScEditEngineDefaulter;
+class SfxStyleSheetBasePool;
+class SfxStyleSheetHint;
+class INetURLObject;
+
+class ScViewData;
+class ScDocFunc;
+class ScDrawLayer;
+class ScTabViewShell;
+class ScSbxDocHelper;
+class ScAutoStyleList;
+class ScRange;
+class ScMarkData;
+class ScPaintLockData;
+class ScChangeAction;
+class VirtualDevice;
+class ScImportOptions;
+class ScDocShellModificator;
+class ScOptSolverSave;
+class ScSheetSaveData;
+class ScFlatBoolRowSegments;
+struct ScColWidthParam;
+#if ENABLE_TELEPATHY
+class ScCollaboration;
+#endif
+
+namespace sfx2 { class FileDialogHelper; }
+struct DocShell_Impl;
+
+typedef ::boost::unordered_map< sal_uLong, sal_uLong > ScChangeActionMergeMap;
+
+//==================================================================
+
+//enum ScDBFormat { SC_FORMAT_SDF, SC_FORMAT_DBF };
+
+ // Extra flags for Repaint
+#define SC_PF_LINES 1
+#define SC_PF_TESTMERGE 2
+#define SC_PF_WHOLEROWS 4
+
+class SC_DLLPUBLIC ScDocShell: public SfxObjectShell, public SfxListener
+{
+ ScDocument aDocument;
+
+ String aDdeTextFmt;
+
+ double nPrtToScreenFactor;
+ DocShell_Impl* pImpl;
+ ScDocFunc* pDocFunc;
+
+ bool bHeaderOn;
+ bool bFooterOn;
+ bool bIsInplace:1; // Is set by the View
+ bool bIsEmpty:1;
+ bool bIsInUndo:1;
+ bool bDocumentModifiedPending:1;
+ bool bUpdateEnabled:1;
+ sal_uInt16 nDocumentLock;
+ sal_Int16 nCanUpdate; // stores the UpdateDocMode from loading a document till update links
+
+ ScDBData* pOldAutoDBRange;
+
+ ScSbxDocHelper* pDocHelper;
+
+ ScAutoStyleList* pAutoStyleList;
+ ScPaintLockData* pPaintLockData;
+ ScOptSolverSave* pSolverSaveData;
+ ScSheetSaveData* pSheetSaveData;
+
+ ScDocShellModificator* pModificator; // #109979#; is used to load XML (created in BeforeXMLLoading and destroyed in AfterXMLLoading)
+#if ENABLE_TELEPATHY
+ ScCollaboration* mpCollaboration;
+#endif
+
+ SC_DLLPRIVATE void InitItems();
+ SC_DLLPRIVATE void DoEnterHandler();
+ SC_DLLPRIVATE void InitOptions(bool bForLoading);
+ SC_DLLPRIVATE void ResetDrawObjectShell();
+
+ // SUNWS needs a forward declared friend, otherwise types and members
+ // of the outer class are not accessible.
+ class PrepareSaveGuard;
+ friend class ScDocShell::PrepareSaveGuard;
+ /** Do things that need to be done before saving to our own format and
+ necessary clean ups in dtor. */
+ class PrepareSaveGuard
+ {
+ public:
+ explicit PrepareSaveGuard( ScDocShell & rDocShell );
+ ~PrepareSaveGuard();
+ private:
+ ScDocShell & mrDocShell;
+ };
+
+ SC_DLLPRIVATE sal_Bool LoadXML( SfxMedium* pMedium, const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
+ SC_DLLPRIVATE sal_Bool SaveXML( SfxMedium* pMedium, const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
+ SC_DLLPRIVATE SCTAB GetSaveTab();
+
+ SC_DLLPRIVATE bool SaveCurrentChart( SfxMedium& rMedium );
+
+ SC_DLLPRIVATE sal_uLong DBaseImport( const String& rFullFileName, CharSet eCharSet,
+ ScColWidthParam aColWidthParam[MAXCOLCOUNT], ScFlatBoolRowSegments& rRowHeightsRecalc );
+ SC_DLLPRIVATE sal_uLong DBaseExport(
+ const OUString& rFullFileName, CharSet eCharSet, bool& bHasMemo );
+
+ SC_DLLPRIVATE static bool MoveFile( const INetURLObject& rSource, const INetURLObject& rDest );
+ SC_DLLPRIVATE static bool KillFile( const INetURLObject& rURL );
+ SC_DLLPRIVATE static bool IsDocument( const INetURLObject& rURL );
+
+ SC_DLLPRIVATE void LockPaint_Impl(sal_Bool bDoc);
+ SC_DLLPRIVATE void UnlockPaint_Impl(sal_Bool bDoc);
+ SC_DLLPRIVATE void LockDocument_Impl(sal_uInt16 nNew);
+ SC_DLLPRIVATE void UnlockDocument_Impl(sal_uInt16 nNew);
+
+ SC_DLLPRIVATE void EnableSharedSettings( bool bEnable );
+ SC_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > LoadSharedDocument();
+
+ SC_DLLPRIVATE void UseSheetSaveEntries();
+
+ SC_DLLPRIVATE ScDocFunc *CreateDocFunc();
+
+protected:
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+public:
+ TYPEINFO();
+
+ SFX_DECL_INTERFACE(SCID_DOC_SHELL)
+ SFX_DECL_OBJECTFACTORY();
+
+ ScDocShell( const ScDocShell& rDocShell );
+ ScDocShell( const sal_uInt64 i_nSfxCreationFlags = SFXMODEL_EMBEDDED_OBJECT );
+ ~ScDocShell();
+
+ using SotObject::GetInterface;
+ using SfxShell::Activate; // with sal_Bool bMDI
+ using SfxShell::Deactivate; // with sal_Bool bMDI
+
+#if ENABLE_TELEPATHY
+ SC_DLLPRIVATE ScCollaboration* GetCollaboration();
+#endif
+ virtual void Activate();
+ virtual void Deactivate();
+
+ virtual ::svl::IUndoManager*
+ GetUndoManager();
+
+ virtual void FillClass( SvGlobalName * pClassName,
+ sal_uInt32 * pFormat,
+ OUString * pAppName,
+ OUString * pFullTypeName,
+ OUString * pShortTypeName,
+ sal_Int32 nFileFormat,
+ sal_Bool bTemplate = false ) const;
+
+ virtual sal_Bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& );
+ virtual sal_Bool Load( SfxMedium& rMedium );
+ virtual sal_Bool LoadFrom( SfxMedium& rMedium );
+ virtual sal_Bool ConvertFrom( SfxMedium &rMedium );
+ virtual bool LoadExternal( SfxMedium& rMedium );
+ virtual sal_Bool Save();
+ virtual sal_Bool SaveAs( SfxMedium& rMedium );
+ virtual sal_Bool ConvertTo( SfxMedium &rMedium );
+ virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = false );
+ virtual void PrepareReload();
+ virtual sal_Bool IsInformationLost();
+ virtual void LoadStyles( SfxObjectShell &rSource );
+ virtual sal_Bool Insert( SfxObjectShell &rSource,
+ sal_uInt16 nSourceIdx1, sal_uInt16 nSourceIdx2, sal_uInt16 nSourceIdx3,
+ sal_uInt16 &nIdx1, sal_uInt16 &nIdx2, sal_uInt16 &nIdx3, sal_uInt16 &rIdxDeleted );
+
+ virtual sal_Bool SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& ); // SfxInPlaceObject
+ virtual sal_Bool DoSaveCompleted( SfxMedium * pNewStor); // SfxObjectShell
+ virtual sal_Bool QuerySlotExecutable( sal_uInt16 nSlotId );
+
+ virtual void Draw( OutputDevice *, const JobSetup & rSetup,
+ sal_uInt16 nAspect = ASPECT_CONTENT );
+
+ virtual void SetVisArea( const Rectangle & rVisArea );
+
+ using SfxObjectShell::GetVisArea;
+ virtual Rectangle GetVisArea( sal_uInt16 nAspect ) const;
+
+ virtual Printer* GetDocumentPrinter();
+
+ virtual void SetModified( sal_Bool = sal_True );
+
+ void SetVisAreaOrSize( const Rectangle& rVisArea, sal_Bool bModifyStart );
+
+ virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog( Window *pParent,
+ const SfxItemSet &rSet );
+
+ void GetDocStat( ScDocStat& rDocStat );
+
+ ScDocument* GetDocument() { return &aDocument; }
+ ScDocFunc& GetDocFunc() { return *pDocFunc; }
+ void SetDocFunc( ScDocFunc *pDF ) { pDocFunc = pDF; }
+
+ SfxPrinter* GetPrinter( sal_Bool bCreateIfNotExist = sal_True );
+ sal_uInt16 SetPrinter( SfxPrinter* pNewPrinter, sal_uInt16 nDiffFlags = SFX_PRINTER_ALL );
+
+ void UpdateFontList();
+
+ String CreateObjectName( const String& rPrefix );
+
+ ScDrawLayer* MakeDrawLayer();
+
+ void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt );
+
+ void GetSbxState( SfxItemSet &rSet );
+ void GetDrawObjState( SfxItemSet &rSet );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet &rSet );
+ void ExecutePageStyle ( SfxViewShell& rCaller, SfxRequest& rReq, SCTAB nCurTab );
+ void GetStatePageStyle( SfxViewShell& rCaller, SfxItemSet& rSet, SCTAB nCurTab );
+
+ void CompareDocument( ScDocument& rOtherDoc );
+ void MergeDocument( ScDocument& rOtherDoc, bool bShared = false, bool bCheckDuplicates = false, sal_uLong nOffset = 0, ScChangeActionMergeMap* pMergeMap = NULL, bool bInverseMap = false );
+ bool MergeSharedDocument( ScDocShell* pSharedDocShell );
+
+ ScChangeAction* GetChangeAction( const ScAddress& rPos );
+ void SetChangeComment( ScChangeAction* pAction, const String& rComment );
+ void ExecuteChangeCommentDialog( ScChangeAction* pAction, Window* pParent,sal_Bool bPrevNext=sal_True );
+ /// Protect/unprotect ChangeTrack and return <TRUE/> if
+ /// protection was successfully changed.
+ /// If bJustQueryIfProtected==sal_True protection is not
+ /// changed and <TRUE/> is returned if not protected or
+ /// password was entered correctly.
+ bool ExecuteChangeProtectionDialog( Window* _pParent, sal_Bool bJustQueryIfProtected = false );
+
+ void SetPrintZoom( SCTAB nTab, sal_uInt16 nScale, sal_uInt16 nPages );
+ bool AdjustPrintZoom( const ScRange& rRange );
+
+ void LoadStylesArgs( ScDocShell& rSource, bool bReplace, bool bCellStyles, bool bPageStyles );
+
+ void PageStyleModified( const OUString& rStyleName, sal_Bool bApi );
+
+ void NotifyStyle( const SfxStyleSheetHint& rHint );
+ void DoAutoStyle( const ScRange& rRange, const String& rStyle );
+
+ Window* GetActiveDialogParent();
+ void ErrorMessage( sal_uInt16 nGlobStrId );
+ sal_Bool IsEditable() const;
+
+ sal_Bool AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab );
+ void UpdateAllRowHeights( const ScMarkData* pTabMark = NULL );
+ void UpdatePendingRowHeights( SCTAB nUpdateTab, bool bBefore = false );
+
+ void RefreshPivotTables( const ScRange& rSource );
+ void DoConsolidate( const ScConsolidateParam& rParam, sal_Bool bRecord = sal_True );
+ void UseScenario( SCTAB nTab, const String& rName, sal_Bool bRecord = sal_True );
+ SCTAB MakeScenario( SCTAB nTab, const String& rName, const String& rComment,
+ const Color& rColor, sal_uInt16 nFlags,
+ ScMarkData& rMark, sal_Bool bRecord = sal_True );
+ void ModifyScenario( SCTAB nTab, const String& rName, const String& rComment,
+ const Color& rColor, sal_uInt16 nFlags );
+ sal_uLong TransferTab( ScDocShell& rSrcDocShell, SCTAB nSrcPos,
+ SCTAB nDestPos, sal_Bool bInsertNew,
+ sal_Bool bNotifyAndPaint );
+
+ sal_Bool MoveTable( SCTAB nSrcTab, SCTAB nDestTab, sal_Bool bCopy, sal_Bool bRecord );
+
+ void DoRecalc( bool bApi );
+ void DoHardRecalc( bool bApi );
+
+ void UpdateOle( const ScViewData* pViewData, sal_Bool bSnapSize = false);
+ sal_Bool IsOle();
+
+ void DBAreaDeleted( SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2 );
+ ScDBData* GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGetDBSelection eSel );
+ ScDBData* GetAnonymousDBData(const ScRange& rRange);
+ ScDBData* GetOldAutoDBRange(); // has to be deleted by caller!
+ void CancelAutoDBRange(); // called when dialog is cancelled
+
+ virtual void ReconnectDdeLink(SfxObjectShell& rServer);
+ void UpdateLinks();
+ sal_Bool ReloadTabLinks();
+
+ void SetFormulaOptions(const ScFormulaOptions& rOpt );
+ virtual void CheckConfigOptions();
+
+ void PostEditView( ScEditEngineDefaulter* pEditEngine, const ScAddress& rCursorPos );
+
+ void PostPaint( SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab,
+ SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab, sal_uInt16 nPart,
+ sal_uInt16 nExtFlags = 0 );
+ void PostPaint( const ScRangeList& rRanges, sal_uInt16 nPart, sal_uInt16 nExtFlags = 0 );
+
+ void PostPaintCell( SCCOL nCol, SCROW nRow, SCTAB nTab );
+ void PostPaintCell( const ScAddress& rPos );
+ void PostPaintGridAll();
+ void PostPaintExtras();
+
+ bool IsPaintLocked() const { return pPaintLockData != NULL; }
+
+ void PostDataChanged();
+
+ void UpdatePaintExt( sal_uInt16& rExtFlags, SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab,
+ SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab );
+ void UpdatePaintExt( sal_uInt16& rExtFlags, const ScRange& rRange );
+
+ void SetDocumentModified( sal_Bool bIsModified = sal_True );
+ void SetDrawModified( sal_Bool bIsModified = sal_True );
+
+ void LockPaint();
+ void UnlockPaint();
+ sal_uInt16 GetLockCount() const;
+ void SetLockCount(sal_uInt16 nNew);
+
+ void LockDocument();
+ void UnlockDocument();
+
+ DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper* );
+
+ virtual SfxStyleSheetBasePool* GetStyleSheetPool();
+
+ void SetInplace( bool bInplace );
+ bool IsEmpty() const;
+ void SetEmpty(bool bSet);
+
+ bool IsInUndo() const { return bIsInUndo; }
+ void SetInUndo(bool bSet);
+
+ void CalcOutputFactor();
+ double GetOutputFactor() const;
+ void GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet,
+ SCTAB nCurTab,
+ bool& rbHeader,
+ bool& rbFooter );
+
+ virtual long DdeGetData( const OUString& rItem, const OUString& rMimeType,
+ ::com::sun::star::uno::Any & rValue );
+ virtual long DdeSetData( const OUString& rItem, const OUString& rMimeType,
+ const ::com::sun::star::uno::Any & rValue );
+ virtual ::sfx2::SvLinkSource* DdeCreateLinkSource( const OUString& rItem );
+
+ const String& GetDdeTextFmt() const { return aDdeTextFmt; }
+
+ SfxBindings* GetViewBindings();
+
+ ScTabViewShell* GetBestViewShell( sal_Bool bOnlyVisible = sal_True );
+ ScSbxDocHelper* GetDocHelperObject() { return pDocHelper; }
+
+ void SetDocumentModifiedPending( bool bVal )
+ { bDocumentModifiedPending = bVal; }
+ bool IsDocumentModifiedPending() const
+ { return bDocumentModifiedPending; }
+
+ bool IsUpdateEnabled() const
+ { return bUpdateEnabled; }
+ void SetUpdateEnabled(bool bValue)
+ { bUpdateEnabled = bValue; }
+
+ OutputDevice* GetRefDevice(); // WYSIWYG: Printer, otherwise VirtualDevice...
+
+ static ScViewData* GetViewData();
+ static SCTAB GetCurTab();
+
+ static ScDocShell* GetShellByNum( sal_uInt16 nDocNo );
+ static String GetOwnFilterName();
+ static String GetHtmlFilterName();
+ static String GetWebQueryFilterName();
+ static String GetAsciiFilterName();
+ static String GetLotusFilterName();
+ static String GetDBaseFilterName();
+ static String GetDifFilterName();
+ static sal_Bool HasAutomaticTableName( const String& rFilter );
+
+ DECL_LINK( RefreshDBDataHdl, ScRefreshTimer* );
+
+ void BeforeXMLLoading();
+ void AfterXMLLoading(sal_Bool bRet);
+
+ virtual sal_uInt16 GetHiddenInformationState( sal_uInt16 nStates );
+
+ const ScOptSolverSave* GetSolverSaveData() const { return pSolverSaveData; } // may be null
+ void SetSolverSaveData( const ScOptSolverSave& rData );
+ ScSheetSaveData* GetSheetSaveData();
+
+ void ResetKeyBindings( ScOptionsUtil::KeyBindingType eType );
+
+ // password protection for Calc (derived from SfxObjectShell)
+ // see also: FID_CHG_RECORD, SID_CHG_PROTECT
+ virtual bool IsChangeRecording() const;
+ virtual bool HasChangeRecordProtection() const;
+ virtual void SetChangeRecording( bool bActivate );
+ virtual bool SetProtectionPassword( const String &rPassword );
+ virtual bool GetProtectionHash( /*out*/ ::com::sun::star::uno::Sequence< sal_Int8 > &rPasswordHash );
+
+
+ void SnapVisArea( Rectangle& rRect ) const;
+};
+
+
+void UpdateAcceptChangesDialog();
-#include "docshell.hxx"
SV_DECL_REF(ScDocShell)
SV_IMPL_REF(ScDocShell)
+
+/** Create before modifications of the document and then destroy.
+ If noted in the ctor AutoCalcShellDisabled and IdleDisabled,
+ switches them off and restores the dtor AutoCalcShellDisabled
+ also before a ScDocShell SetDocumentModified.
+ Call SetDocumentModified after instead of the ScDocShell.
+ In the dtor, if ScDocShell bDocumentModifiedPending is set and
+ bAutoCalcShellDisabled is not set, then SetDocumentModified is called. */
+class SC_DLLPUBLIC ScDocShellModificator
+{
+ ScDocShell& rDocShell;
+ ScRefreshTimerProtector aProtector;
+ sal_Bool bAutoCalcShellDisabled;
+ bool bIdleEnabled;
+
+ // not implemented
+ ScDocShellModificator( const ScDocShellModificator& );
+ ScDocShellModificator& operator=( const ScDocShellModificator& );
+
+public:
+ ScDocShellModificator( ScDocShell& );
+ ~ScDocShellModificator();
+ void SetDocumentModified();
+};
+
+
+
#endif
diff --git a/sc/source/ui/inc/docshell.hxx b/sc/source/ui/inc/docshell.hxx
deleted file mode 100644
index 841d40c..0000000
--- a/sc/source/ui/inc/docshell.hxx
+++ /dev/null
@@ -1,466 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef SC_DOCSHELL_HXX
-#define SC_DOCSHELL_HXX
-
-#include <sfx2/objsh.hxx>
-
-#include <sfx2/docfac.hxx>
-#include <sfx2/sfxmodelfactory.hxx>
-#include <sfx2/viewsh.hxx>
-
-#include "scdllapi.h"
-#include "scdll.hxx"
-#include "document.hxx"
-#include "appoptio.hxx"
-#include "formulaopt.hxx"
-#include "shellids.hxx"
-#include "refreshtimer.hxx"
-#include "optutil.hxx"
-
-#include <boost/unordered_map.hpp>
-#include <cppuhelper/implbase1.hxx>
-
-#include <config_telepathy.h>
-
-class ScEditEngineDefaulter;
-class SfxStyleSheetBasePool;
-class SfxStyleSheetHint;
-class INetURLObject;
-
-class ScViewData;
-class ScDocFunc;
-class ScDrawLayer;
-class ScTabViewShell;
-class ScSbxDocHelper;
-class ScAutoStyleList;
-class ScRange;
-class ScMarkData;
-class ScPaintLockData;
-class ScChangeAction;
-class VirtualDevice;
-class ScImportOptions;
-class ScDocShellModificator;
-class ScOptSolverSave;
-class ScSheetSaveData;
-class ScFlatBoolRowSegments;
-struct ScColWidthParam;
-#if ENABLE_TELEPATHY
-class ScCollaboration;
-#endif
-
-namespace sfx2 { class FileDialogHelper; }
-struct DocShell_Impl;
-
-typedef ::boost::unordered_map< sal_uLong, sal_uLong > ScChangeActionMergeMap;
-
-//==================================================================
-
-//enum ScDBFormat { SC_FORMAT_SDF, SC_FORMAT_DBF };
-
- // Extra flags for Repaint
-#define SC_PF_LINES 1
-#define SC_PF_TESTMERGE 2
-#define SC_PF_WHOLEROWS 4
-
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list