[Libreoffice-commits] core.git: 11 commits - compilerplugins/clang sc/inc sc/source

Noel Grandin noel.grandin at collabora.co.uk
Wed Feb 15 10:32:31 UTC 2017


 compilerplugins/clang/unusedenumconstants.py  |    3 +
 sc/inc/viewutil.hxx                           |    2 
 sc/source/filter/excel/excform.cxx            |   35 +++++-------
 sc/source/filter/excel/excform8.cxx           |   28 ++++-----
 sc/source/filter/excel/frmbase.cxx            |    4 -
 sc/source/filter/excel/xiname.cxx             |    4 -
 sc/source/filter/inc/drawingbase.hxx          |    7 +-
 sc/source/filter/inc/externallinkbuffer.hxx   |   23 +++----
 sc/source/filter/inc/flttypes.hxx             |   10 +--
 sc/source/filter/inc/formel.hxx               |   11 +--
 sc/source/filter/inc/formulabase.hxx          |   24 +++-----
 sc/source/filter/inc/worksheethelper.hxx      |   13 ++--
 sc/source/filter/lotus/lotimpop.cxx           |    8 +-
 sc/source/filter/lotus/lotread.cxx            |    6 --
 sc/source/filter/lotus/lotus.cxx              |    2 
 sc/source/filter/oox/condformatbuffer.cxx     |    6 +-
 sc/source/filter/oox/drawingbase.cxx          |   21 +------
 sc/source/filter/oox/drawingfragment.cxx      |    2 
 sc/source/filter/oox/externallinkbuffer.cxx   |   66 +++++++++++-----------
 sc/source/filter/oox/externallinkfragment.cxx |    4 -
 sc/source/filter/oox/formulabase.cxx          |   30 +++++-----
 sc/source/filter/oox/formulaparser.cxx        |   40 ++++---------
 sc/source/filter/oox/pagesettings.cxx         |    2 
 sc/source/filter/oox/pivotcachefragment.cxx   |    2 
 sc/source/filter/oox/sheetdatacontext.cxx     |    6 +-
 sc/source/filter/oox/viewsettings.cxx         |    2 
 sc/source/filter/oox/workbookfragment.cxx     |   25 ++++----
 sc/source/filter/oox/worksheetfragment.cxx    |   15 ++---
 sc/source/filter/oox/worksheethelper.cxx      |    2 
 sc/source/filter/qpro/qpro.cxx                |    2 
 sc/source/filter/qpro/qproform.cxx            |   12 ++--
 sc/source/filter/xcl97/XclImpChangeTrack.cxx  |    2 
 sc/source/ui/docshell/impex.cxx               |   62 +++++++--------------
 sc/source/ui/inc/gridwin.hxx                  |    4 -
 sc/source/ui/inc/tabview.hxx                  |    2 
 sc/source/ui/view/gridwin.cxx                 |   26 ++-------
 sc/source/ui/view/gridwin3.cxx                |   11 ---
 sc/source/ui/view/gridwin4.cxx                |   35 ++----------
 sc/source/ui/view/select.cxx                  |    2 
 sc/source/ui/view/tabview2.cxx                |    2 
 sc/source/ui/view/tabview3.cxx                |   75 ++++++++++++--------------
 sc/source/ui/view/tabview4.cxx                |    8 +-
 sc/source/ui/view/tabvwsh5.cxx                |    2 
 43 files changed, 277 insertions(+), 371 deletions(-)

New commits:
commit e5a71788c7740c70cf610bcb6d67f7bc8b806761
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 12:14:10 2017 +0200

    convert ScUpdateMode to scoped enum
    
    and drop unused SC_UPDATE_CHANGED.
    
    I can't find anything in our git history to even indicate when it was
    last in use.
    
    Change-Id: Iec6192a3d02132d15b3f392264e81f36b1fd4fad

diff --git a/sc/inc/viewutil.hxx b/sc/inc/viewutil.hxx
index bbccd75..2819ace 100644
--- a/sc/inc/viewutil.hxx
+++ b/sc/inc/viewutil.hxx
@@ -35,7 +35,7 @@ class ScAddress;
 class ScRange;
 class ScMarkData;
 enum class SvtScriptType;
-enum ScUpdateMode { SC_UPDATE_ALL, SC_UPDATE_CHANGED, SC_UPDATE_MARKS };
+enum class ScUpdateMode { All, Marks };
 
 class SC_DLLPUBLIC ScViewUtil
 {
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index dff2da7..d8217c5 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -253,7 +253,7 @@ class ScGridWindow : public vcl::Window, public DropTargetHelper, public DragSou
     SdrObject*      GetEditObject();
     bool            IsMyModel(SdrEditView* pSdrView);
 
-    void            DrawRedraw( ScOutputData& rOutputData, ScUpdateMode eMode, sal_uLong nLayer );
+    void            DrawRedraw( ScOutputData& rOutputData, sal_uLong nLayer );
     void            DrawSdrGrid( const Rectangle& rDrawingRect, OutputDevice* pContentDev );
     void            DrawAfterScroll();
     Rectangle       GetListValButtonRect( const ScAddress& rButtonPos );
@@ -374,7 +374,7 @@ public:
                           ScUpdateMode eMode );
 
     /// Draw content of the gridwindow; shared between the desktop and the tiled rendering.
-    void DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableInfo, ScOutputData& aOutputData, bool bLogicText, ScUpdateMode eMode);
+    void DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableInfo, ScOutputData& aOutputData, bool bLogicText);
 
     void            CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress);
 
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index d7c659e..3d7d54a 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -451,7 +451,7 @@ public:
                                     // Zeichnen
 
     void            PaintArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
-                                        ScUpdateMode eMode = SC_UPDATE_ALL );
+                                        ScUpdateMode eMode = ScUpdateMode::All );
 
     void            PaintGrid();
 
diff --git a/sc/source/ui/view/gridwin3.cxx b/sc/source/ui/view/gridwin3.cxx
index 80111d1..8bfc22f 100644
--- a/sc/source/ui/view/gridwin3.cxx
+++ b/sc/source/ui/view/gridwin3.cxx
@@ -185,7 +185,7 @@ bool ScGridWindow::DrawKeyInput(const KeyEvent& rKEvt)
     return false;
 }
 
-void ScGridWindow::DrawRedraw( ScOutputData& rOutputData, ScUpdateMode eMode, sal_uLong nLayer )
+void ScGridWindow::DrawRedraw( ScOutputData& rOutputData, sal_uLong nLayer )
 {
     const ScViewOptions& rOpts = pViewData->GetOptions();
 
@@ -206,14 +206,7 @@ void ScGridWindow::DrawRedraw( ScOutputData& rOutputData, ScUpdateMode eMode, sa
             pDrView->setHideFormControl(!bDrawDraw);
         }
 
-        if(SC_UPDATE_CHANGED == eMode)
-        {
-            rOutputData.DrawingSingle((sal_uInt16)nLayer);
-        }
-        else
-        {
-            rOutputData.DrawSelectiveObjects((sal_uInt16)nLayer);
-        }
+        rOutputData.DrawSelectiveObjects((sal_uInt16)nLayer);
     }
 }
 
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index b26ac76..5f0bbb3 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -371,7 +371,7 @@ void ScGridWindow::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangl
         ScViewData::AddPixelsWhile( nScrY, aPixRect.Bottom(), nY2, MAXROW, nPPTY, pDoc, nTab);
     }
 
-    Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS ); // don't continue with painting
+    Draw( nX1,nY1,nX2,nY2, ScUpdateMode::Marks ); // don't continue with painting
 
     bIsInPaint = false;
 }
@@ -417,7 +417,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
     if (nY2 > maVisibleRange.mnRow2)
         nY2 = maVisibleRange.mnRow2;
 
-    if ( eMode != SC_UPDATE_MARKS && nX2 < maVisibleRange.mnCol2)
+    if ( eMode != ScUpdateMode::Marks && nX2 < maVisibleRange.mnCol2)
         nX2 = maVisibleRange.mnCol2;  // to continue painting
 
     // point of no return
@@ -504,7 +504,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
         bLogicText = true; // use logic MapMode
     }
 
-    DrawContent(*this, aTabInfo, aOutputData, bLogicText, eMode);
+    DrawContent(*this, aTabInfo, aOutputData, bLogicText);
 
     // If something was inverted during the Paint (selection changed from Basic Macro)
     // then this is now mixed up and has to be repainted
@@ -519,7 +519,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
 }
 
 void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableInfo, ScOutputData& aOutputData,
-        bool bLogicText, ScUpdateMode eMode)
+        bool bLogicText)
 {
     ScModule* pScMod = SC_MOD();
     ScDocShell* pDocSh = pViewData->GetDocShell();
@@ -560,12 +560,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
 
     bool bPage = rOpts.GetOption( VOPT_PAGEBREAKS );
 
-    if ( eMode == SC_UPDATE_CHANGED )
-    {
-        aOutputData.FindChanged();
-        aOutputData.SetSingleGrid(true);
-    }
-
     bool bPageMode = pViewData->IsPagebreakMode();
     if (bPageMode)                                      // after FindChanged
     {
@@ -713,7 +707,7 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
             // drawing background
 
         pContentDev->SetMapMode(aDrawMode);
-        DrawRedraw( aOutputData, eMode, SC_LAYER_BACK );
+        DrawRedraw( aOutputData, SC_LAYER_BACK );
     }
     else
         aOutputData.SetSolidBackground(true);
@@ -793,8 +787,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
         //! Merge SetChangedClip() with DrawMarks() ?? (different MapMode!)
 
         bool bAny = true;
-        if (eMode == SC_UPDATE_CHANGED)
-            bAny = aOutputData.SetChangedClip();
         if (bAny)
         {
             if ( bHasChange )
@@ -804,9 +796,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
                 lcl_DrawScenarioFrames( pContentDev, pViewData, eWhich, nX1,nY1,nX2,nY2 );
 
             lcl_DrawHighlight( aOutputData, pViewData, rHigh );
-
-            if (eMode == SC_UPDATE_CHANGED)
-                pContentDev->SetClipRegion();
         }
     }
 
@@ -830,8 +819,8 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
         comphelper::LibreOfficeKit::setLocalRendering();
     }
 
-    DrawRedraw( aOutputData, eMode, SC_LAYER_FRONT );
-    DrawRedraw( aOutputData, eMode, SC_LAYER_INTERN );
+    DrawRedraw( aOutputData, SC_LAYER_FRONT );
+    DrawRedraw( aOutputData, SC_LAYER_INTERN );
     DrawSdrGrid( aDrawingRectLogic, pContentDev );
 
     if (bIsTiledRendering)
@@ -839,14 +828,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
         pContentDev->SetMapMode(aOrig);
     }
 
-    if (!bIsInScroll)                               // Drawing marks
-    {
-        if(eMode == SC_UPDATE_CHANGED && aOutputData.SetChangedClip())
-        {
-            pContentDev->SetClipRegion();
-        }
-    }
-
     pContentDev->SetMapMode(MapUnit::MapPixel);
 
     if ( pViewData->IsRefMode() && nTab >= pViewData->GetRefStartZ() && nTab <= pViewData->GetRefEndZ() )
@@ -1224,7 +1205,7 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
     }
 
     // draw the content
-    DrawContent(rDevice, aTabInfo, aOutputData, true, SC_UPDATE_ALL);
+    DrawContent(rDevice, aTabInfo, aOutputData, true);
 
     rDevice.SetMapMode(aOriginalMode);
 }
diff --git a/sc/source/ui/view/select.cxx b/sc/source/ui/view/select.cxx
index 714b991..b4c99e6 100644
--- a/sc/source/ui/view/select.cxx
+++ b/sc/source/ui/view/select.cxx
@@ -517,7 +517,7 @@ bool ScViewFunctionSet::SetCursorAtCell( SCsCOL nPosX, SCsROW nPosY, bool bScrol
             pViewData->GetView()->UpdateShrinkOverlay();
 
             pViewData->GetView()->
-                PaintArea( nStartX,nDelStartY, nEndX,nEndY, SC_UPDATE_MARKS );
+                PaintArea( nStartX,nDelStartY, nEndX,nEndY, ScUpdateMode::Marks );
 
             nPosX = nEndX;      // keep red border around range
             nPosY = nEndY;
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index 16ad080..6cc704d 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -323,7 +323,7 @@ void ScTabView::PaintMarks(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCRO
 
     aViewData.GetDocument()->ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow,
                                             aViewData.GetTabNo() );
-    PaintArea( nStartCol, nStartRow, nEndCol, nEndRow, SC_UPDATE_MARKS );
+    PaintArea( nStartCol, nStartRow, nEndCol, nEndRow, ScUpdateMode::Marks );
 }
 
 bool ScTabView::IsMarking( SCCOL nCol, SCROW nRow, SCTAB nTab ) const
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index 7690d4b..343ec37 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -2136,7 +2136,7 @@ void ScTabView::KillEditView( bool bNoPaint )
                 // #i73567# the cell still has to be repainted
                 else if (bExtended || ( bAtCursor && !bNoPaint ))
                 {
-                    pGridWin[i]->Draw( nCol1, nRow1, nCol2, nRow2, SC_UPDATE_ALL );
+                    pGridWin[i]->Draw( nCol1, nRow1, nCol2, nRow2, ScUpdateMode::All );
                     pGridWin[i]->UpdateSelectionOverlay();
                 }
             }
@@ -2250,7 +2250,7 @@ void ScTabView::PaintArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCRO
                 nCol1 = nScrX;
             if (nCol2 < nScrX)
             {
-                if ( eMode == SC_UPDATE_ALL )   // for UPDATE_ALL, paint anyway
+                if ( eMode == ScUpdateMode::All )   // for UPDATE_ALL, paint anyway
                     nCol2 = nScrX;              // (because of extending strings to the right)
                 else
                     bOut = true;                // completely outside the window
@@ -2276,43 +2276,38 @@ void ScTabView::PaintArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCRO
         if (bOut)
             continue;
 
-        if ( eMode == SC_UPDATE_CHANGED )
-            pGridWin[i]->Draw( nCol1, nRow1, nCol2, nRow2, eMode );
-        else    // ALL or MARKS
-        {
-            bool bLayoutRTL = aViewData.GetDocument()->IsLayoutRTL( aViewData.GetTabNo() );
-            long nLayoutSign = bLayoutRTL ? -1 : 1;
+        bool bLayoutRTL = aViewData.GetDocument()->IsLayoutRTL( aViewData.GetTabNo() );
+        long nLayoutSign = bLayoutRTL ? -1 : 1;
 
-            Point aStart = aViewData.GetScrPos( nCol1, nRow1, (ScSplitPos) i );
-            Point aEnd   = aViewData.GetScrPos( nCol2+1, nRow2+1, (ScSplitPos) i );
-            if ( eMode == SC_UPDATE_ALL )
-                aEnd.X() = bLayoutRTL ? 0 : (pGridWin[i]->GetOutputSizePixel().Width());
-            aEnd.X() -= nLayoutSign;
-            aEnd.Y() -= 1;
+        Point aStart = aViewData.GetScrPos( nCol1, nRow1, (ScSplitPos) i );
+        Point aEnd   = aViewData.GetScrPos( nCol2+1, nRow2+1, (ScSplitPos) i );
+        if ( eMode == ScUpdateMode::All )
+            aEnd.X() = bLayoutRTL ? 0 : (pGridWin[i]->GetOutputSizePixel().Width());
+        aEnd.X() -= nLayoutSign;
+        aEnd.Y() -= 1;
 
-            // #i85232# include area below cells (could be done in GetScrPos?)
-            if ( eMode == SC_UPDATE_ALL && nRow2 >= MAXROW )
-                aEnd.Y() = pGridWin[i]->GetOutputSizePixel().Height();
+        // #i85232# include area below cells (could be done in GetScrPos?)
+        if ( eMode == ScUpdateMode::All && nRow2 >= MAXROW )
+            aEnd.Y() = pGridWin[i]->GetOutputSizePixel().Height();
 
-            aStart.X() -= nLayoutSign;      // include change marks
-            aStart.Y() -= 1;
+        aStart.X() -= nLayoutSign;      // include change marks
+        aStart.Y() -= 1;
 
-            bool bMarkClipped = aViewData.GetOptions().GetOption( VOPT_CLIPMARKS );
-            if (bMarkClipped)
+        bool bMarkClipped = aViewData.GetOptions().GetOption( VOPT_CLIPMARKS );
+        if (bMarkClipped)
+        {
+            // ScColumn::IsEmptyBlock has to be optimized for this
+            //  (switch to Search() )
+            //!if ( nCol1 > 0 && !aViewData.GetDocument()->IsBlockEmpty(
+            //!                     aViewData.GetTabNo(),
+            //!                     0, nRow1, nCol1-1, nRow2 ) )
             {
-                // ScColumn::IsEmptyBlock has to be optimized for this
-                //  (switch to Search() )
-                //!if ( nCol1 > 0 && !aViewData.GetDocument()->IsBlockEmpty(
-                //!                     aViewData.GetTabNo(),
-                //!                     0, nRow1, nCol1-1, nRow2 ) )
-                {
-                    long nMarkPixel = (long)( SC_CLIPMARK_SIZE * aViewData.GetPPTX() );
-                    aStart.X() -= nMarkPixel * nLayoutSign;
-                }
+                long nMarkPixel = (long)( SC_CLIPMARK_SIZE * aViewData.GetPPTX() );
+                aStart.X() -= nMarkPixel * nLayoutSign;
             }
-
-            pGridWin[i]->Invalidate( pGridWin[i]->PixelToLogic( Rectangle( aStart,aEnd ) ) );
         }
+
+        pGridWin[i]->Invalidate( pGridWin[i]->PixelToLogic( Rectangle( aStart,aEnd ) ) );
     }
 
     // #i79909# Calling UpdateAllOverlays here isn't necessary and would lead to overlay calls from a timer,
@@ -2340,7 +2335,7 @@ void ScTabView::PaintRangeFinderEntry (ScRangeFindData* pData, const SCTAB nTab)
         SCROW nRow2 = aRef.aEnd.Row();
 
         //  remove -> repaint
-        //  SC_UPDATE_MARKS: Invalidate, nothing until end of row
+        //  ScUpdateMode::Marks: Invalidate, nothing until end of row
 
         bool bHiddenEdge = false;
         SCROW nTmp;
@@ -2375,13 +2370,13 @@ void ScTabView::PaintRangeFinderEntry (ScRangeFindData* pData, const SCTAB nTab)
         if ( nCol2 - nCol1 > 1 && nRow2 - nRow1 > 1 && !bHiddenEdge )
         {
             // only along the edges
-            PaintArea( nCol1, nRow1, nCol2, nRow1, SC_UPDATE_MARKS );
-            PaintArea( nCol1, nRow1+1, nCol1, nRow2-1, SC_UPDATE_MARKS );
-            PaintArea( nCol2, nRow1+1, nCol2, nRow2-1, SC_UPDATE_MARKS );
-            PaintArea( nCol1, nRow2, nCol2, nRow2, SC_UPDATE_MARKS );
+            PaintArea( nCol1, nRow1, nCol2, nRow1, ScUpdateMode::Marks );
+            PaintArea( nCol1, nRow1+1, nCol1, nRow2-1, ScUpdateMode::Marks );
+            PaintArea( nCol2, nRow1+1, nCol2, nRow2-1, ScUpdateMode::Marks );
+            PaintArea( nCol1, nRow2, nCol2, nRow2, ScUpdateMode::Marks );
         }
         else    // all in one
-            PaintArea( nCol1, nRow1, nCol2, nRow2, SC_UPDATE_MARKS );
+            PaintArea( nCol1, nRow1, nCol2, nRow2, ScUpdateMode::Marks );
     }
 }
 
@@ -2420,7 +2415,7 @@ void ScTabView::AddHighlightRange( const ScRange& rRange, const Color& rColor )
     SCTAB nTab = aViewData.GetTabNo();
     if ( nTab >= rRange.aStart.Tab() && nTab <= rRange.aEnd.Tab() )
         PaintArea( rRange.aStart.Col(), rRange.aStart.Row(),
-                    rRange.aEnd.Col(), rRange.aEnd.Row(), SC_UPDATE_MARKS );
+                    rRange.aEnd.Col(), rRange.aEnd.Row(), ScUpdateMode::Marks );
 }
 
 void ScTabView::ClearHighlightRanges()
@@ -2432,7 +2427,7 @@ void ScTabView::ClearHighlightRanges()
         ScRange aRange = pIter->aRef;
         if ( nTab >= aRange.aStart.Tab() && nTab <= aRange.aEnd.Tab() )
             PaintArea( aRange.aStart.Col(), aRange.aStart.Row(),
-                       aRange.aEnd.Col(), aRange.aEnd.Row(), SC_UPDATE_MARKS );
+                       aRange.aEnd.Col(), aRange.aEnd.Row(), ScUpdateMode::Marks );
     }
 
     maHighlightRanges.clear();
diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx
index 3196b29..3aaa0d1 100644
--- a/sc/source/ui/view/tabview4.cxx
+++ b/sc/source/ui/view/tabview4.cxx
@@ -120,7 +120,7 @@ void ScTabView::StopRefMode()
             if ( nStartX == nEndX && nStartY == nEndY )
                 pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
 
-            PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+            PaintArea( nStartX,nStartY,nEndX,nEndY, ScUpdateMode::Marks );
         }
 
         pSelEngine->Reset();
@@ -169,7 +169,7 @@ void ScTabView::DoneRefMode( bool bContinue )
         if ( nStartX == nEndX && nStartY == nEndY )
             pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
 
-        PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+        PaintArea( nStartX,nStartY,nEndX,nEndY, ScUpdateMode::Marks );
     }
 }
 
@@ -237,7 +237,7 @@ void ScTabView::UpdateRef( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ )
         SCCOL nPaintEndX;
         SCROW nPaintEndY;
         if (aRect.GetDiff( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY ))
-            PaintArea( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY, SC_UPDATE_MARKS );
+            PaintArea( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY, ScUpdateMode::Marks );
     }
 
     //  Tip-Hilfe fuer Auto-Fill
@@ -302,7 +302,7 @@ void ScTabView::InitRefMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScRefType eT
             pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
 
             //! nur Markierung ueber Inhalte zeichnen!
-            PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+            PaintArea( nStartX,nStartY,nEndX,nEndY, ScUpdateMode::Marks );
 
             //  SetReference ohne Merge-Anpassung
             ScRange aRef( nCurX,nCurY,nCurZ, nCurX,nCurY,nCurZ );
diff --git a/sc/source/ui/view/tabvwsh5.cxx b/sc/source/ui/view/tabvwsh5.cxx
index 4e635ad..456fe7f 100644
--- a/sc/source/ui/view/tabvwsh5.cxx
+++ b/sc/source/ui/view/tabvwsh5.cxx
@@ -64,7 +64,7 @@ void ScTabViewShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
                            pPaintHint->GetEndCol(), pPaintHint->GetEndRow() );
             if (nParts & PaintPartFlags::Marks)
                 PaintArea( pPaintHint->GetStartCol(), pPaintHint->GetStartRow(),
-                           pPaintHint->GetEndCol(), pPaintHint->GetEndRow(), SC_UPDATE_MARKS );
+                           pPaintHint->GetEndCol(), pPaintHint->GetEndRow(), ScUpdateMode::Marks );
             if (nParts & PaintPartFlags::Left)
                 PaintLeftArea( pPaintHint->GetStartRow(), pPaintHint->GetEndRow() );
             if (nParts & PaintPartFlags::Top)
commit 917d34657ae195edaef411b5446f70346cabf9e2
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:56:29 2017 +0200

    convert CellAnchorType to scoped enum
    
    and drop unused COLROW enumerator
    
    Change-Id: Idf9c978252a1bd5801e0d18ea339f7c27508734b

diff --git a/sc/source/filter/inc/drawingbase.hxx b/sc/source/filter/inc/drawingbase.hxx
index c0682da..ff2ca06 100644
--- a/sc/source/filter/inc/drawingbase.hxx
+++ b/sc/source/filter/inc/drawingbase.hxx
@@ -110,11 +110,10 @@ private:
 private:
 
     /** Specifies how cell positions from CellAnchorModel have to be processed. */
-    enum CellAnchorType
+    enum class CellAnchorType
     {
-        CELLANCHOR_EMU,             /// Offsets are given in EMUs.
-        CELLANCHOR_PIXEL,           /// Offsets are given in screen pixels.
-        CELLANCHOR_COLROW           /// Offsets are given in fractions of column width or row height.
+        Emu,             /// Offsets are given in EMUs.
+        Pixel,           /// Offsets are given in screen pixels.
     };
 
     AnchorType          meAnchorType;       /// Type of this shape anchor.
diff --git a/sc/source/filter/oox/drawingbase.cxx b/sc/source/filter/oox/drawingbase.cxx
index 7835942..4e1283b 100644
--- a/sc/source/filter/oox/drawingbase.cxx
+++ b/sc/source/filter/oox/drawingbase.cxx
@@ -67,7 +67,7 @@ AnchorClientDataModel::AnchorClientDataModel() :
 ShapeAnchor::ShapeAnchor( const WorksheetHelper& rHelper ) :
     WorksheetHelper( rHelper ),
     meAnchorType( ANCHOR_INVALID ),
-    meCellAnchorType( CELLANCHOR_EMU ),
+    meCellAnchorType( CellAnchorType::Emu ),
     meEditAs( ANCHOR_TWOCELL )
 {
 }
@@ -98,7 +98,7 @@ void ShapeAnchor::importAnchor( sal_Int32 nElement, const AttributeList& rAttrib
         default:
             OSL_ENSURE( false, "ShapeAnchor::importAnchor - unexpected element" );
     }
-    meCellAnchorType = CELLANCHOR_EMU;
+    meCellAnchorType = CellAnchorType::Emu;
 }
 
 void ShapeAnchor::importPos( const AttributeList& rAttribs )
@@ -150,7 +150,7 @@ void ShapeAnchor::setCellPos( sal_Int32 nElement, sal_Int32 nParentContext, cons
 void ShapeAnchor::importVmlAnchor( const OUString& rAnchor )
 {
     meAnchorType = ANCHOR_VML;
-    meCellAnchorType = CELLANCHOR_PIXEL;
+    meCellAnchorType = CellAnchorType::Pixel;
 
     ::std::vector< OUString > aTokens;
     sal_Int32 nIndex = 0;
@@ -271,29 +271,18 @@ EmuPoint ShapeAnchor::calcCellAnchorEmu( const CellAnchorModel& rModel ) const
     // add the offset inside the cell
     switch( meCellAnchorType )
     {
-        case CELLANCHOR_EMU:
+        case CellAnchorType::Emu:
             aEmuPoint.X += rModel.mnColOffset;
             aEmuPoint.Y += rModel.mnRowOffset;
         break;
 
-        case CELLANCHOR_PIXEL:
+        case CellAnchorType::Pixel:
         {
             const UnitConverter& rUnitConv = getUnitConverter();
             aEmuPoint.X += static_cast< sal_Int64 >( rUnitConv.scaleValue( static_cast< double >( rModel.mnColOffset ), UNIT_SCREENX, UNIT_EMU ) );
             aEmuPoint.Y += static_cast< sal_Int64 >( rUnitConv.scaleValue( static_cast< double >( rModel.mnRowOffset ), UNIT_SCREENY, UNIT_EMU ) );
         }
         break;
-
-        case CELLANCHOR_COLROW:
-        {
-            css::awt::Size aCellSize = getCellSize( rModel.mnCol, rModel.mnRow );
-            EmuSize aEmuSize( lclHmmToEmu( aCellSize.Width ), lclHmmToEmu( aCellSize.Height ) );
-            // X offset is given in 1/1024 of column width
-            aEmuPoint.X += static_cast< sal_Int64 >( aEmuSize.Width * getLimitedValue< double >( static_cast< double >( rModel.mnColOffset ) / 1024.0, 0.0, 1.0 ) + 0.5 );
-            // Y offset is given in 1/256 of row height
-            aEmuPoint.Y += static_cast< sal_Int64 >( aEmuSize.Height * getLimitedValue< double >( static_cast< double >( rModel.mnRowOffset ) / 256.0, 0.0, 1.0 ) + 0.5 );
-        }
-        break;
     }
 
     return aEmuPoint;
commit e5c38f639014b53f454e51b1087b1dcc0d8508f5
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:54:31 2017 +0200

    convert ExternalLinkType to scoped enum
    
    and drop unused enumerators:
    LINKTYPE_INTERNAL
    LINKTYPE_ANALYSIS
    LINKTYPE_MAYBE_DDE_OLE
    
    Change-Id: I2274997227b0fb62fb8fa44f2be19943514ccb4d

diff --git a/sc/source/filter/inc/externallinkbuffer.hxx b/sc/source/filter/inc/externallinkbuffer.hxx
index 09e7c53..db47ce2 100644
--- a/sc/source/filter/inc/externallinkbuffer.hxx
+++ b/sc/source/filter/inc/externallinkbuffer.hxx
@@ -155,18 +155,15 @@ private:
     sal_Int32           mnLast;         /// Index of the last sheet or index of last external sheet cache.
 };
 
-enum ExternalLinkType
+enum class ExternalLinkType
 {
-    LINKTYPE_SELF,          /// Link refers to the current workbook.
-    LINKTYPE_SAME,          /// Link refers to the current sheet.
-    LINKTYPE_INTERNAL,      /// Link refers to a sheet in the own workbook.
-    LINKTYPE_EXTERNAL,      /// Link refers to an external spreadsheet document.
-    LINKTYPE_ANALYSIS,      /// Link refers to the Analysis add-in.
-    LINKTYPE_LIBRARY,       /// Link refers to an external add-in.
-    LINKTYPE_DDE,           /// DDE link.
-    LINKTYPE_OLE,           /// OLE link.
-    LINKTYPE_MAYBE_DDE_OLE, /// Could be DDE or OLE link (BIFF only).
-    LINKTYPE_UNKNOWN        /// Unknown or unsupported link type.
+    Self,          /// Link refers to the current workbook.
+    Same,          /// Link refers to the current sheet.
+    External,      /// Link refers to an external spreadsheet document.
+    Library,       /// Link refers to an external add-in.
+    DDE,           /// DDE link.
+    OLE,           /// OLE link.
+    Unknown        /// Unknown or unsupported link type.
 };
 
 class ExternalLink : public WorkbookHelper
@@ -207,7 +204,7 @@ public:
     void                importExternalAddin( SequenceInputStream& rStrm );
 
     /** Sets the link type to 'self reference'. */
-    inline void         setSelfLinkType() { meLinkType = LINKTYPE_SELF; }
+    inline void         setSelfLinkType() { meLinkType = ExternalLinkType::Self; }
 
     /** Returns the type of this external link. */
     inline ExternalLinkType getLinkType() const { return meLinkType; }
@@ -254,7 +251,7 @@ private:
     typedef RefVector< ExternalName >   ExternalNameVector;
 
     ExternalLinkType    meLinkType;         /// Type of this link object.
-    FunctionLibraryType meFuncLibType;      /// Type of the function library, if link type is LINKTYPE_LIBRARY.
+    FunctionLibraryType meFuncLibType;      /// Type of the function library, if link type is ExternalLinkType::Library.
     OUString            maRelId;            /// Relation identifier for the external link fragment.
     OUString            maClassName;        /// DDE service, OLE class name.
     OUString            maTargetUrl;        /// Target link, DDE topic, OLE target.
diff --git a/sc/source/filter/oox/externallinkbuffer.cxx b/sc/source/filter/oox/externallinkbuffer.cxx
index 878d8d7..73e6508 100644
--- a/sc/source/filter/oox/externallinkbuffer.cxx
+++ b/sc/source/filter/oox/externallinkbuffer.cxx
@@ -129,7 +129,7 @@ void ExternalName::importExternalNameFlags( SequenceInputStream& rStrm )
     maExtNameModel.mbStdDocName = getFlag( nFlags, BIFF12_EXTNAME_STDDOCNAME );
     maExtNameModel.mbOleObj     = getFlag( nFlags, BIFF12_EXTNAME_OLEOBJECT );
     maExtNameModel.mbIconified  = getFlag( nFlags, BIFF12_EXTNAME_ICONIFIED );
-    OSL_ENSURE( (mrParentLink.getLinkType() == LINKTYPE_OLE) == maExtNameModel.mbOleObj,
+    OSL_ENSURE( (mrParentLink.getLinkType() == ExternalLinkType::OLE) == maExtNameModel.mbOleObj,
         "ExternalName::importExternalNameFlags - wrong OLE flag in external name" );
 }
 
@@ -163,7 +163,7 @@ void ExternalName::importDdeItemString( SequenceInputStream& rStrm )
 
 bool ExternalName::getDdeItemInfo( DDEItemInfo& orItemInfo ) const
 {
-    if( (mrParentLink.getLinkType() == LINKTYPE_DDE) && !maModel.maName.isEmpty() )
+    if( (mrParentLink.getLinkType() == ExternalLinkType::DDE) && !maModel.maName.isEmpty() )
     {
         orItemInfo.Item = maModel.maName;
         orItemInfo.Results = ContainerHelper::matrixToSequenceSequence( maResults );
@@ -174,7 +174,7 @@ bool ExternalName::getDdeItemInfo( DDEItemInfo& orItemInfo ) const
 
 bool ExternalName::getDdeLinkData( OUString& orDdeServer, OUString& orDdeTopic, OUString& orDdeItem )
 {
-    if( (mrParentLink.getLinkType() == LINKTYPE_DDE) && !maModel.maName.isEmpty() )
+    if( (mrParentLink.getLinkType() == ExternalLinkType::DDE) && !maModel.maName.isEmpty() )
     {
         // try to create a DDE link and to set the imported link results
         if( !mbDdeLinkCreated ) try
@@ -209,8 +209,8 @@ bool ExternalName::getDdeLinkData( OUString& orDdeServer, OUString& orDdeTopic,
 
 void ExternalName::setResultSize( sal_Int32 nColumns, sal_Int32 nRows )
 {
-    OSL_ENSURE( (mrParentLink.getLinkType() == LINKTYPE_DDE) || (mrParentLink.getLinkType() == LINKTYPE_OLE) ||
-        (mrParentLink.getLinkType() == LINKTYPE_MAYBE_DDE_OLE), "ExternalName::setResultSize - wrong link type" );
+    OSL_ENSURE( (mrParentLink.getLinkType() == ExternalLinkType::DDE) || (mrParentLink.getLinkType() == ExternalLinkType::OLE),
+                "ExternalName::setResultSize - wrong link type" );
     OSL_ENSURE( (nRows > 0) && (nColumns > 0), "ExternalName::setResultSize - invalid matrix size" );
     const ScAddress& rMaxPos = getAddressConverter().getMaxApiAddress();
     if( (0 < nRows) && (nRows <= rMaxPos.Row() + 1) && (0 < nColumns) && (nColumns <= rMaxPos.Col() + 1) )
@@ -258,7 +258,7 @@ void LinkSheetRange::setExternalRange( sal_Int32 nDocLink, sal_Int32 nFirst, sal
 
 ExternalLink::ExternalLink( const WorkbookHelper& rHelper ) :
     WorkbookHelper( rHelper ),
-    meLinkType( LINKTYPE_UNKNOWN ),
+    meLinkType( ExternalLinkType::Unknown ),
     meFuncLibType( FUNCLIB_UNKNOWN )
 {
 }
@@ -287,7 +287,7 @@ void ExternalLink::importDdeLink( const AttributeList& rAttribs )
 {
     OUString aDdeService = rAttribs.getXString( XML_ddeService, OUString() );
     OUString aDdeTopic = rAttribs.getXString( XML_ddeTopic, OUString() );
-    setDdeOleTargetUrl( aDdeService, aDdeTopic, LINKTYPE_DDE );
+    setDdeOleTargetUrl( aDdeService, aDdeTopic, ExternalLinkType::DDE );
 }
 
 ExternalNameRef ExternalLink::importDdeItem( const AttributeList& rAttribs )
@@ -301,7 +301,7 @@ void ExternalLink::importOleLink( const Relations& rRelations, const AttributeLi
 {
     OUString aProgId = rAttribs.getXString( XML_progId, OUString() );
     OUString aTargetUrl = rRelations.getExternalTargetFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
-    setDdeOleTargetUrl( aProgId, aTargetUrl, LINKTYPE_OLE );
+    setDdeOleTargetUrl( aProgId, aTargetUrl, ExternalLinkType::OLE );
 }
 
 ExternalNameRef ExternalLink::importOleItem( const AttributeList& rAttribs )
@@ -318,17 +318,17 @@ void ExternalLink::importExternalRef( SequenceInputStream& rStrm )
 
 void ExternalLink::importExternalSelf( SequenceInputStream& )
 {
-    meLinkType = LINKTYPE_SELF;
+    meLinkType = ExternalLinkType::Self;
 }
 
 void ExternalLink::importExternalSame( SequenceInputStream& )
 {
-    meLinkType = LINKTYPE_SAME;
+    meLinkType = ExternalLinkType::Same;
 }
 
 void ExternalLink::importExternalAddin( SequenceInputStream& )
 {
-    meLinkType = LINKTYPE_UNKNOWN;
+    meLinkType = ExternalLinkType::Unknown;
 }
 
 void ExternalLink::importExternalBook( const Relations& rRelations, SequenceInputStream& rStrm )
@@ -342,14 +342,14 @@ void ExternalLink::importExternalBook( const Relations& rRelations, SequenceInpu
         {
             OUString aDdeService, aDdeTopic;
             rStrm >> aDdeService >> aDdeTopic;
-            setDdeOleTargetUrl( aDdeService, aDdeTopic, LINKTYPE_DDE );
+            setDdeOleTargetUrl( aDdeService, aDdeTopic, ExternalLinkType::DDE );
         }
         break;
         case BIFF12_EXTERNALBOOK_OLE:
         {
             OUString aTargetUrl = rRelations.getExternalTargetFromRelId( BiffHelper::readString( rStrm ) );
             OUString aProgId = BiffHelper::readString( rStrm );
-            setDdeOleTargetUrl( aProgId, aTargetUrl, LINKTYPE_OLE );
+            setDdeOleTargetUrl( aProgId, aTargetUrl, ExternalLinkType::OLE );
         }
         break;
         default:
@@ -360,9 +360,9 @@ void ExternalLink::importExternalBook( const Relations& rRelations, SequenceInpu
 void ExternalLink::importExtSheetNames( SequenceInputStream& rStrm )
 {
     // load external sheet names and create the sheet caches in the Calc document
-    OSL_ENSURE( (meLinkType == LINKTYPE_EXTERNAL) || (meLinkType == LINKTYPE_LIBRARY),
+    OSL_ENSURE( (meLinkType == ExternalLinkType::External) || (meLinkType == ExternalLinkType::Library),
         "ExternalLink::importExtSheetNames - invalid link type" );
-    if( meLinkType == LINKTYPE_EXTERNAL )   // ignore sheets of external libraries
+    if( meLinkType == ExternalLinkType::External )   // ignore sheets of external libraries
         for( sal_Int32 nSheet = 0, nCount = rStrm.readInt32(); !rStrm.isEof() && (nSheet < nCount); ++nSheet )
             insertExternalSheet( BiffHelper::readString( rStrm ) );
 }
@@ -379,20 +379,19 @@ ExternalLinkInfo ExternalLink::getLinkInfo() const
     ExternalLinkInfo aLinkInfo;
     switch( meLinkType )
     {
-        case LINKTYPE_SELF:
-        case LINKTYPE_SAME:
-        case LINKTYPE_INTERNAL:
+        case ExternalLinkType::Self:
+        case ExternalLinkType::Same:
             aLinkInfo.Type = css::sheet::ExternalLinkType::SELF;
         break;
-        case LINKTYPE_EXTERNAL:
+        case ExternalLinkType::External:
             aLinkInfo.Type = css::sheet::ExternalLinkType::DOCUMENT;
             aLinkInfo.Data <<= maTargetUrl;
         break;
-        case LINKTYPE_LIBRARY:
+        case ExternalLinkType::Library:
             // parser will return library function names in OPCODE_BAD string tokens
             aLinkInfo.Type = css::sheet::ExternalLinkType::SPECIAL;
         break;
-        case LINKTYPE_DDE:
+        case ExternalLinkType::DDE:
         {
             aLinkInfo.Type = css::sheet::ExternalLinkType::DDE;
             DDELinkInfo aDdeLinkInfo;
@@ -415,18 +414,18 @@ ExternalLinkInfo ExternalLink::getLinkInfo() const
 
 FunctionLibraryType ExternalLink::getFuncLibraryType() const
 {
-    return (meLinkType == LINKTYPE_LIBRARY) ? meFuncLibType : FUNCLIB_UNKNOWN;
+    return (meLinkType == ExternalLinkType::Library) ? meFuncLibType : FUNCLIB_UNKNOWN;
 }
 
 sal_Int32 ExternalLink::getDocumentLinkIndex() const
 {
-    OSL_ENSURE( meLinkType == LINKTYPE_EXTERNAL, "ExternalLink::getDocumentLinkIndex - invalid link type" );
+    OSL_ENSURE( meLinkType == ExternalLinkType::External, "ExternalLink::getDocumentLinkIndex - invalid link type" );
     return mxDocLink.is() ? mxDocLink->getTokenIndex() : -1;
 }
 
 sal_Int32 ExternalLink::getSheetCacheIndex( sal_Int32 nTabId ) const
 {
-    OSL_ENSURE( meLinkType == LINKTYPE_EXTERNAL, "ExternalLink::getSheetCacheIndex - invalid link type" );
+    OSL_ENSURE( meLinkType == ExternalLinkType::External, "ExternalLink::getSheetCacheIndex - invalid link type" );
     return ContainerHelper::getVectorElement( maSheetCaches, nTabId, -1 );
 }
 
@@ -449,16 +448,15 @@ void ExternalLink::getSheetRange( LinkSheetRange& orSheetRange, sal_Int32 nTabId
 {
     switch( meLinkType )
     {
-        case LINKTYPE_SAME:
+        case ExternalLinkType::Same:
             orSheetRange.setSameSheet();
         break;
 
-        case LINKTYPE_SELF:
-        case LINKTYPE_INTERNAL:
+        case ExternalLinkType::Self:
             orSheetRange.setRange( nTabId1, nTabId2 );
         break;
 
-        case LINKTYPE_EXTERNAL:
+        case ExternalLinkType::External:
         {
             sal_Int32 nDocLinkIdx = getDocumentLinkIndex();
             // BIFF12: passed indexes point into sheet list of EXTSHEETLIST
@@ -481,23 +479,23 @@ ExternalNameRef ExternalLink::getNameByIndex( sal_Int32 nIndex ) const
 
 void ExternalLink::setExternalTargetUrl( const OUString& rTargetUrl, const OUString& rTargetType )
 {
-    meLinkType = LINKTYPE_UNKNOWN;
+    meLinkType = ExternalLinkType::Unknown;
     if( rTargetType == CREATE_OFFICEDOC_RELATION_TYPE( "externalLinkPath" ) ||
             rTargetType == CREATE_OFFICEDOC_RELATION_TYPE_STRICT( "externalLinkPath" ) )
     {
         maTargetUrl = getBaseFilter().getAbsoluteUrl( rTargetUrl );
         if( !maTargetUrl.isEmpty() )
-            meLinkType = LINKTYPE_EXTERNAL;
+            meLinkType = ExternalLinkType::External;
     }
     else if( rTargetType == CREATE_MSOFFICE_RELATION_TYPE( "xlExternalLinkPath/xlLibrary" ) )
     {
-        meLinkType = LINKTYPE_LIBRARY;
+        meLinkType = ExternalLinkType::Library;
         meFuncLibType = FunctionProvider::getFuncLibTypeFromLibraryName( rTargetUrl );
     }
-    OSL_ENSURE( meLinkType != LINKTYPE_UNKNOWN, "ExternalLink::setExternalTargetUrl - empty target URL or unknown target type" );
+    OSL_ENSURE( meLinkType != ExternalLinkType::Unknown, "ExternalLink::setExternalTargetUrl - empty target URL or unknown target type" );
 
     // create the external document link API object that will contain the sheet caches
-    if( meLinkType == LINKTYPE_EXTERNAL ) try
+    if( meLinkType == ExternalLinkType::External ) try
     {
         PropertySet aDocProps( getDocument() );
         Reference< XExternalDocLinks > xDocLinks( aDocProps.getAnyProperty( PROP_ExternalDocLinks ), UNO_QUERY_THROW );
@@ -512,7 +510,7 @@ void ExternalLink::setDdeOleTargetUrl( const OUString& rClassName, const OUStrin
 {
     maClassName = rClassName;
     maTargetUrl = rTargetUrl;
-    meLinkType = (maClassName.isEmpty() || maTargetUrl.isEmpty()) ?  LINKTYPE_UNKNOWN : eLinkType;
+    meLinkType = (maClassName.isEmpty() || maTargetUrl.isEmpty()) ?  ExternalLinkType::Unknown : eLinkType;
     OSL_ENSURE( meLinkType == eLinkType, "ExternalLink::setDdeOleTargetUrl - missing classname or target" );
 }
 
diff --git a/sc/source/filter/oox/externallinkfragment.cxx b/sc/source/filter/oox/externallinkfragment.cxx
index c91360a..d0d6581 100644
--- a/sc/source/filter/oox/externallinkfragment.cxx
+++ b/sc/source/filter/oox/externallinkfragment.cxx
@@ -195,7 +195,7 @@ ContextHandlerRef ExternalLinkFragment::onCreateContext( sal_Int32 nElement, con
             if( nElement == XLS_TOKEN( definedName ) ) mrExtLink.importDefinedName( rAttribs );
         break;
         case XLS_TOKEN( sheetDataSet ):
-            if( (nElement == XLS_TOKEN( sheetData )) && (mrExtLink.getLinkType() == LINKTYPE_EXTERNAL) )
+            if( (nElement == XLS_TOKEN( sheetData )) && (mrExtLink.getLinkType() == ExternalLinkType::External) )
                 return createSheetDataContext( rAttribs.getInteger( XML_sheetId, -1 ) );
         break;
 
@@ -280,7 +280,7 @@ ContextHandlerRef ExternalLinkFragment::onCreateRecordContext( sal_Int32 nRecId,
             switch( nRecId )
             {
                 case BIFF12_ID_EXTSHEETDATA:
-                    if( mrExtLink.getLinkType() == LINKTYPE_EXTERNAL )
+                    if( mrExtLink.getLinkType() == ExternalLinkType::External )
                         return createSheetDataContext( rStrm.readInt32() );
                 break;
 
diff --git a/sc/source/filter/oox/formulaparser.cxx b/sc/source/filter/oox/formulaparser.cxx
index f34d96a..82d9aa9 100644
--- a/sc/source/filter/oox/formulaparser.cxx
+++ b/sc/source/filter/oox/formulaparser.cxx
@@ -582,8 +582,8 @@ ApiTokenSequence FormulaParserImpl::importBiff12Formula( const ScAddress&, Formu
 OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefSheets ) const
 {
     const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, bUseRefSheets ).get();
-    OSL_ENSURE( pExtLink && (pExtLink->getLinkType() == LINKTYPE_OLE), "FormulaParserImpl::resolveOleTarget - missing or wrong link" );
-    if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_OLE) )
+    OSL_ENSURE( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::OLE), "FormulaParserImpl::resolveOleTarget - missing or wrong link" );
+    if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::OLE) )
          return getBaseFilter().getAbsoluteUrl( pExtLink->getTargetUrl() );
     return OUString();
 }
@@ -982,23 +982,16 @@ bool FormulaParserImpl::pushExternalNameOperand( const ExternalNameRef& rxExtNam
 {
     if( rxExtName.get() ) switch( rExtLink.getLinkType() )
     {
-        case LINKTYPE_INTERNAL:
-        case LINKTYPE_EXTERNAL:
+        case ExternalLinkType::External:
             return pushEmbeddedRefOperand( *rxExtName, false );
 
-        case LINKTYPE_ANALYSIS:
-            // TODO: need support for localized addin function names
-            if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( rxExtName->getUpcaseModelName() ) )
-                return pushExternalFuncOperand( *pFuncInfo );
-        break;
-
-        case LINKTYPE_LIBRARY:
+        case ExternalLinkType::Library:
             if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( rxExtName->getUpcaseModelName() ) )
                 if( (pFuncInfo->meFuncLibType != FUNCLIB_UNKNOWN) && (pFuncInfo->meFuncLibType == rExtLink.getFuncLibraryType()) )
                     return pushExternalFuncOperand( *pFuncInfo );
         break;
 
-        case LINKTYPE_DDE:
+        case ExternalLinkType::DDE:
         {
             OUString aDdeServer, aDdeTopic, aDdeItem;
             if( rxExtName->getDdeLinkData( aDdeServer, aDdeTopic, aDdeItem ) )
@@ -1007,7 +1000,7 @@ bool FormulaParserImpl::pushExternalNameOperand( const ExternalNameRef& rxExtNam
         break;
 
         default:
-            OSL_ENSURE( rExtLink.getLinkType() != LINKTYPE_SELF, "FormulaParserImpl::pushExternalNameOperand - invalid call" );
+            OSL_ENSURE( rExtLink.getLinkType() != ExternalLinkType::Self, "FormulaParserImpl::pushExternalNameOperand - invalid call" );
     }
     return pushBiffErrorOperand( BIFF_ERR_NAME );
 }
@@ -1170,7 +1163,7 @@ const FunctionInfo* FormulaParserImpl::resolveBadFuncName( const OUString& rToke
     {
         sal_Int32 nRefId = rTokenData.copy( nBracketOpen + 1, nBracketClose - nBracketOpen - 1 ).toInt32();
         const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId ).get();
-        if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_LIBRARY) )
+        if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::Library) )
         {
             OUString aFuncName = rTokenData.copy( nExclamation + 1 ).toAsciiUpperCase();
             if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( aFuncName ) )
@@ -1722,7 +1715,7 @@ bool OoxFormulaParserImpl::pushBiff12ExtName( sal_Int32 nRefId, sal_Int32 nNameI
 {
     if( const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId ).get() )
     {
-        if( pExtLink->getLinkType() == LINKTYPE_SELF )
+        if( pExtLink->getLinkType() == ExternalLinkType::Self )
             return pushBiff12Name( nNameId );
         // external name indexes are one-based in BIFF12
         ExternalNameRef xExtName = pExtLink->getNameByIndex( nNameId - 1 );
@@ -1857,7 +1850,7 @@ OUString FormulaParser::importMacroName( const OUString& rFormulaString )
         const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, false ).get();
         OSL_ENSURE( pExtLink, "FormulaParser::importMacroName - missing link" );
         // do not accept macros in external documents (not supported)
-        if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_SELF) )
+        if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::Self) )
         {
             // ignore sheet macros (defined name for VBA macros may not exist, see above)
             OUString aMacroName = aRemainder.copy( 1 );
commit 2312e530ded785c4d3955101b1857620f76b8ad5
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:48:09 2017 +0200

    convert Lotus123Typ to scoped enum
    
    and drop unused enumerators
    
    Change-Id: I1658d05d3e79c0bbb1020a440b981723ba29bd4d

diff --git a/sc/source/filter/inc/flttypes.hxx b/sc/source/filter/inc/flttypes.hxx
index d939cac..5f137e3 100644
--- a/sc/source/filter/inc/flttypes.hxx
+++ b/sc/source/filter/inc/flttypes.hxx
@@ -30,13 +30,11 @@ enum BiffTyp
     Biff8 = 0x8000, Biff8W = 0x8001, Biff8V = 0x8002, Biff8C = 0x8004, Biff8M4 = 0x8008
 };
 
-enum Lotus123Typ
+enum class Lotus123Typ
 {
-    Lotus_X,
-    Lotus_WK1,
-    Lotus_WK3,
-    Lotus_WK4,
-    Lotus_FM3
+    X,
+    WK3,
+    WK4,
 };
 
 #endif
diff --git a/sc/source/filter/lotus/lotimpop.cxx b/sc/source/filter/lotus/lotimpop.cxx
index 1d27861..9babc93 100644
--- a/sc/source/filter/lotus/lotimpop.cxx
+++ b/sc/source/filter/lotus/lotimpop.cxx
@@ -45,8 +45,8 @@ LOTUS_ROOT::LOTUS_ROOT( ScDocument* pDocP, rtl_TextEncoding eQ )
         pRangeNames( new LotusRangeList(this)),
         pScRangeName( pDocP->GetRangeName()),
         eCharsetQ( eQ),
-        eFirstType( Lotus_X),
-        eActType( Lotus_X),
+        eFirstType( Lotus123Typ::X),
+        eActType( Lotus123Typ::X),
         pRngNmBffWK3( new RangeNameBufferWK3(this)),
         pFontBuff( new LotusFontBuffer),
         pAttrTable( new LotAttrTable(this))
@@ -105,11 +105,11 @@ void ImportLotus::Bof()
     {
         if( nFileCode == 0x1000 )
         {// <= WK3
-            rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus_WK3;
+            rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus123Typ::WK3;
         }
         else if( nFileCode == 0x1002 )
         {// WK4
-            rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus_WK4;
+            rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus123Typ::WK4;
         }
     }
 }
diff --git a/sc/source/filter/lotus/lotread.cxx b/sc/source/filter/lotus/lotread.cxx
index 5e30fb5..1a37631 100644
--- a/sc/source/filter/lotus/lotread.cxx
+++ b/sc/source/filter/lotus/lotread.cxx
@@ -82,10 +82,8 @@ FltError ImportLotus::Read()
                     Bof();
                     switch (rContext.pLotusRoot->eFirstType)
                     {
-                        case Lotus_WK1: eAkt = S_WK1; break;
-                        case Lotus_WK3: eAkt = S_WK3; break;
-                        case Lotus_WK4: eAkt = S_WK4; break;
-                        case Lotus_FM3: eAkt = S_FM3; break;
+                        case Lotus123Typ::WK3: eAkt = S_WK3; break;
+                        case Lotus123Typ::WK4: eAkt = S_WK4; break;
                         default:
                         eRet = SCERR_IMPORT_UNKNOWN_WK;
                         eAkt = S_END;
diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx
index 24524ba..6afba99 100644
--- a/sc/source/filter/lotus/lotus.cxx
+++ b/sc/source/filter/lotus/lotus.cxx
@@ -70,7 +70,7 @@ FltError ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocum
     if( eRet != eERR_OK )
         return eRet;
 
-    if (aContext.pLotusRoot->eFirstType == Lotus_WK3)
+    if (aContext.pLotusRoot->eFirstType == Lotus123Typ::WK3)
     {
         // try to load *.FM3 file
         INetURLObject aURL( rMedium.GetURLObject() );
commit 7f3952acdbf1655d6344077d4e0dd07704f014f8
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:44:18 2017 +0200

    convert ConvErr to scoped enum
    
    and drop unused enumerators
    
    Change-Id: I78d4955d2ae92e0c4f3eeb58d783767c82ca9843

diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx
index fe09f4a..eaaac14 100644
--- a/sc/source/filter/excel/excform.cxx
+++ b/sc/source/filter/excel/excform.cxx
@@ -171,7 +171,7 @@ void ImportExcel::Formula(
     if (pCell)
     {
         pCell->SetNeedNumberFormat(false);
-        if( eErr != ConvOK )
+        if( eErr != ConvErr::OK )
             ExcelToSc::SetError( *pCell, eErr );
 
         if (rtl::math::isFinite(fCurVal))
@@ -219,7 +219,7 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s
     ScComplexRefData        aCRD;
     ExtensionTypeVec    aExtensions;
 
-    if( eStatus != ConvOK )
+    if( eStatus != ConvErr::OK )
     {
         aIn.Ignore( nFormulaLen );
         return eStatus;
@@ -230,7 +230,7 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s
         aPool.Store( OUString("-/-") );
         aPool >> aStack;
         pErgebnis = aPool[ aStack.Get() ];
-        return ConvOK;
+        return ConvErr::OK;
     }
 
     std::size_t nEndPos = aIn.GetRecPos() + nFormulaLen;
@@ -868,29 +868,29 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s
         aPool << ocBad;
         aPool >> aStack;
         pErgebnis = aPool[ aStack.Get() ];
-        eRet = ConvErrNi;
+        eRet = ConvErr::Ni;
     }
     else if( aIn.GetRecPos() != nEndPos )
     {
         aPool << ocBad;
         aPool >> aStack;
         pErgebnis = aPool[ aStack.Get() ];
-        eRet = ConvErrCount;
+        eRet = ConvErr::Count;
     }
     else if( bArrayFormula )
     {
         pErgebnis = nullptr;
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
     }
     else
     {
         pErgebnis = aPool[ aStack.Get() ];
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
     }
 
     aIn.Seek( nEndPos );
 
-    if( eRet == ConvOK )
+    if( eRet == ConvErr::OK )
         ReadExtensions( aExtensions, aIn );
 
     return eRet;
@@ -913,14 +913,14 @@ ConvErr ExcelToSc::Convert( ScRangeListTabs& rRangeList, XclImpStream& aIn, std:
     aCRD.Ref1.SetAbsTab(aEingPos.Tab());
     aCRD.Ref2.SetAbsTab(aEingPos.Tab());
 
-    if( eStatus != ConvOK )
+    if( eStatus != ConvErr::OK )
     {
         aIn.Ignore( nFormulaLen );
         return eStatus;
     }
 
     if( nFormulaLen == 0 )
-        return ConvOK;
+        return ConvErr::OK;
 
     std::size_t nEndPos = aIn.GetRecPos() + nFormulaLen;
 
@@ -1314,11 +1314,11 @@ ConvErr ExcelToSc::Convert( ScRangeListTabs& rRangeList, XclImpStream& aIn, std:
     ConvErr eRet;
 
     if( bError )
-        eRet = ConvErrNi;
+        eRet = ConvErr::Ni;
     else if( aIn.GetRecPos() != nEndPos )
-        eRet = ConvErrCount;
+        eRet = ConvErr::Count;
     else
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
 
     aIn.Seek( nEndPos );
     return eRet;
@@ -1749,11 +1749,10 @@ void ExcelToSc::SetError( ScFormulaCell &rCell, const ConvErr eErr )
 
     switch( eErr )
     {
-        case ConvErrNi:         nInd = FormulaError::UnknownToken; break;
-        case ConvErrNoMem:      nInd = FormulaError::CodeOverflow; break;
-        case ConvErrExternal:   nInd = FormulaError::NoName; break;
-        case ConvErrCount:      nInd = FormulaError::CodeOverflow; break;
-        default:                nInd = FormulaError::NoCode;   // I had no better idea
+        case ConvErr::Ni:         nInd = FormulaError::UnknownToken; break;
+        case ConvErr::External:   nInd = FormulaError::NoName; break;
+        case ConvErr::Count:      nInd = FormulaError::CodeOverflow; break;
+        default:                  nInd = FormulaError::NoCode;   // I had no better idea
     }
 
     rCell.SetErrCode( nInd );
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
index ef3d09a..cc26894 100644
--- a/sc/source/filter/excel/excform8.cxx
+++ b/sc/source/filter/excel/excform8.cxx
@@ -147,10 +147,10 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
     const bool              bRNorSF = bRangeNameOrCond || bSharedFormula;
 
     ScSingleRefData         aSRD;
-    ScComplexRefData            aCRD;
+    ScComplexRefData        aCRD;
     ExtensionTypeVec        aExtensions;
 
-    if( eStatus != ConvOK )
+    if( eStatus != ConvErr::OK )
     {
         aIn.Ignore( nFormulaLen );
         return eStatus;
@@ -161,7 +161,7 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
         aPool.Store( OUString( "-/-" ) );
         aPool >> aStack;
         rpTokArray = aPool[ aStack.Get() ];
-        return ConvOK;
+        return ConvErr::OK;
     }
 
     std::size_t nEndPos = aIn.GetRecPos() + nFormulaLen;
@@ -924,29 +924,29 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
         aPool << ocBad;
         aPool >> aStack;
         rpTokArray = aPool[ aStack.Get() ];
-        eRet = ConvErrNi;
+        eRet = ConvErr::Ni;
     }
     else if( aIn.GetRecPos() != nEndPos )
     {
         aPool << ocBad;
         aPool >> aStack;
         rpTokArray = aPool[ aStack.Get() ];
-        eRet = ConvErrCount;
+        eRet = ConvErr::Count;
     }
     else if( bArrayFormula )
     {
         rpTokArray = nullptr;
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
     }
     else
     {
         rpTokArray = aPool[ aStack.Get() ];
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
     }
 
     aIn.Seek( nEndPos );
 
-    if( eRet == ConvOK)
+    if( eRet == ConvErr::OK)
         ReadExtensions( aExtensions, aIn );
 
     return eRet;
@@ -966,14 +966,14 @@ ConvErr ExcelToSc8::Convert( ScRangeListTabs& rRangeList, XclImpStream& aIn, std
     ScSingleRefData         aSRD;
     ScComplexRefData            aCRD;
 
-    if( eStatus != ConvOK )
+    if( eStatus != ConvErr::OK )
     {
         aIn.Ignore( nFormulaLen );
         return eStatus;
     }
 
     if( nFormulaLen == 0 )
-        return ConvOK;
+        return ConvErr::OK;
 
     std::size_t nEndPos = aIn.GetRecPos() + nFormulaLen;
 
@@ -1286,11 +1286,11 @@ ConvErr ExcelToSc8::Convert( ScRangeListTabs& rRangeList, XclImpStream& aIn, std
     ConvErr eRet;
 
     if( bError )
-        eRet = ConvErrNi;
+        eRet = ConvErr::Ni;
     else if( aIn.GetRecPos() != nEndPos )
-        eRet = ConvErrCount;
+        eRet = ConvErr::Count;
     else
-        eRet = ConvOK;
+        eRet = ConvErr::OK;
 
     aIn.Seek( nEndPos );
     return eRet;
@@ -1310,7 +1310,7 @@ void ExcelToSc8::ConvertExternName( const ScTokenArray*& rpArray, XclImpStream&
     ScSingleRefData           aSRD;
     ScComplexRefData            aCRD;
 
-    if (eStatus != ConvOK)
+    if (eStatus != ConvErr::OK)
     {
         rStrm.Ignore(nFormulaLen);
         return;
diff --git a/sc/source/filter/excel/frmbase.cxx b/sc/source/filter/excel/frmbase.cxx
index 7a9df82..7f82a79 100644
--- a/sc/source/filter/excel/frmbase.cxx
+++ b/sc/source/filter/excel/frmbase.cxx
@@ -151,7 +151,7 @@ const ScRange* ScRangeListTabs::Next ()
 ConverterBase::ConverterBase( svl::SharedStringPool& rSPool, sal_uInt16 nNewBuffer ) :
     aPool(rSPool),
     aEingPos( 0, 0, 0 ),
-    eStatus( ConvOK )
+    eStatus( ConvErr::OK )
 {
     OSL_ENSURE( nNewBuffer > 0, "ConverterBase::ConverterBase - nNewBuffer == 0!" );
     pBuffer.reset( new sal_Char[ nNewBuffer ] );
@@ -163,7 +163,7 @@ ConverterBase::~ConverterBase()
 
 void ConverterBase::Reset()
 {
-    eStatus = ConvOK;
+    eStatus = ConvErr::OK;
     aPool.Reset();
     aStack.Reset();
 }
diff --git a/sc/source/filter/excel/xiname.cxx b/sc/source/filter/excel/xiname.cxx
index 7189c2a..8b599b1 100644
--- a/sc/source/filter/excel/xiname.cxx
+++ b/sc/source/filter/excel/xiname.cxx
@@ -160,11 +160,11 @@ XclImpName::XclImpName( XclImpStream& rStrm, sal_uInt16 nXclNameIdx ) :
         switch( mcBuiltIn )
         {
             case EXC_BUILTIN_PRINTAREA:
-                if( rFmlaConv.Convert( GetPrintAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvOK )
+                if( rFmlaConv.Convert( GetPrintAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvErr::OK )
                     meNameType |= ScRangeData::Type::PrintArea;
             break;
             case EXC_BUILTIN_PRINTTITLES:
-                if( rFmlaConv.Convert( GetTitleAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvOK )
+                if( rFmlaConv.Convert( GetTitleAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvErr::OK )
                     meNameType |= ScRangeData::Type::ColHeader | ScRangeData::Type::RowHeader;
             break;
         }
diff --git a/sc/source/filter/inc/formel.hxx b/sc/source/filter/inc/formel.hxx
index 1fd5c5a4..947a096 100644
--- a/sc/source/filter/inc/formel.hxx
+++ b/sc/source/filter/inc/formel.hxx
@@ -41,13 +41,12 @@ class ScTokenArray;
 struct ScSingleRefData;
 struct ScComplexRefData;
 
-enum ConvErr
+enum class ConvErr
 {
-    ConvOK = 0,
-    ConvErrNi,      // unimplemented/unknown opcode occurred
-    ConvErrNoMem,   // alloc error
-    ConvErrExternal,// excel add-ins are not converted
-    ConvErrCount    // did not get all bytes of formula
+    OK = 0,
+    Ni,      // unimplemented/unknown opcode occurred
+    External,// excel add-ins are not converted
+    Count    // did not get all bytes of formula
 };
 
 enum FORMULA_TYPE
diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx
index 96c9acf..f6cc471 100644
--- a/sc/source/filter/qpro/qpro.cxx
+++ b/sc/source/filter/qpro/qpro.cxx
@@ -105,7 +105,7 @@ FltError ScQProReader::readSheet( SCTAB nTab, ScDocument* pDoc, ScQProStyle *pSt
                 const ScTokenArray *pArray;
 
                 QProToSc aConv(*mpStream, pDoc->GetSharedStringPool(), aAddr);
-                if (ConvOK != aConv.Convert( pArray ))
+                if (ConvErr::OK != aConv.Convert( pArray ))
                     eRet = eERR_FORMAT;
                 else
                 {
diff --git a/sc/source/filter/qpro/qproform.cxx b/sc/source/filter/qpro/qproform.cxx
index 6a567dec..380d63f 100644
--- a/sc/source/filter/qpro/qproform.cxx
+++ b/sc/source/filter/qpro/qproform.cxx
@@ -205,7 +205,7 @@ ConvErr QProToSc::Convert( const ScTokenArray*& pArray )
             {
                 maIn.ReadUInt16( nInt );
                 nIntArray[ nIntCount ] = nInt;
-                SAFEDEC_OR_RET(nRef, 2, ConvErrCount);
+                SAFEDEC_OR_RET(nRef, 2, ConvErr::Count);
                 nIntCount++;
             }
 
@@ -214,7 +214,7 @@ ConvErr QProToSc::Convert( const ScTokenArray*& pArray )
                 double nFloat;
                 maIn.ReadDouble( nFloat );
                 nFloatArray[ nFloatCount ] = nFloat;
-                SAFEDEC_OR_RET(nRef, 8, ConvErrCount);
+                SAFEDEC_OR_RET(nRef, 8, ConvErr::Count);
                 nFloatCount++;
             }
 
@@ -223,7 +223,7 @@ ConvErr QProToSc::Convert( const ScTokenArray*& pArray )
                 maIn.ReadUChar( nArg ).ReadUInt16( nDummy ).ReadUInt16( nDLLId );
                 nArgArray[ nArgCount ] = nArg;
                 nDLLArray[ nDLLCount ] = nDLLId;
-                SAFEDEC_OR_RET(nRef, 5, ConvErrCount);
+                SAFEDEC_OR_RET(nRef, 5, ConvErr::Count);
                 nDLLCount++;
                 nArgCount++;
             }
@@ -232,12 +232,12 @@ ConvErr QProToSc::Convert( const ScTokenArray*& pArray )
                 OUString aTmp(::read_zeroTerminated_uInt8s_ToOUString(maIn, maIn.GetStreamCharSet()));
                 sStringArray[ nStringCount ] = aTmp;
                 nStringCount++;
-                SAFEDEC_OR_RET(nRef, aTmp.getLength() + 1, ConvErrCount);
+                SAFEDEC_OR_RET(nRef, aTmp.getLength() + 1, ConvErr::Count);
             }
         }
     }
     else
-        return ConvErrCount;
+        return ConvErr::Count;
 
     i = 0;
     nIntCount = 0;
@@ -368,7 +368,7 @@ ConvErr QProToSc::Convert( const ScTokenArray*& pArray )
         i++;
     }
     pArray = aPool[ aStack.Get() ];
-    return ConvOK;
+    return ConvErr::OK;
 }
 
 static const struct
diff --git a/sc/source/filter/xcl97/XclImpChangeTrack.cxx b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
index 986ffff..d5b2f44 100644
--- a/sc/source/filter/xcl97/XclImpChangeTrack.cxx
+++ b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
@@ -211,7 +211,7 @@ void XclImpChangeTrack::ReadFormula( ScTokenArray*& rpTokenArray, const ScAddres
     // read the formula, 3D tab refs from extended data
     const ScTokenArray* pArray = nullptr;
     aFmlConv.Reset( rPosition );
-    bool bOK = (aFmlConv.Convert( pArray, aFmlaStrm, nFmlSize, false ) == ConvOK);   // JEG : Check This
+    bool bOK = (aFmlConv.Convert( pArray, aFmlaStrm, nFmlSize, false ) == ConvErr::OK);   // JEG : Check This
     rpTokenArray = (bOK && pArray) ? new ScTokenArray( *pArray ) : nullptr;
     pStrm->Ignore( 1 );
 }
commit b116ca617e120d3aaff739ebd5ac0b9c65fd699b
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:33:22 2017 +0200

    convert FormulaType to scoped enum
    
    and drop unused FORMULATYPE_DEFINEDNAME enumerator
    
    Change-Id: Iaa2094346a52b9f34e71708ba4b6efe5a1809ad4

diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx
index a192422..2171661 100644
--- a/sc/source/filter/inc/formulabase.hxx
+++ b/sc/source/filter/inc/formulabase.hxx
@@ -210,14 +210,13 @@ const sal_uInt16 BIFF_FUNC_WEEKNUM              = 465;      /// Function identif
 // Formula type ===============================================================
 
 /** Enumerates all possible types of a formula. */
-enum FormulaType
+enum class FormulaType
 {
-    FORMULATYPE_CELL,           /// Simple cell formula, or reference to a shared formula name.
-    FORMULATYPE_ARRAY,          /// Array (matrix) formula.
-    FORMULATYPE_SHAREDFORMULA,  /// Shared formula definition.
-    FORMULATYPE_CONDFORMAT,     /// Condition of a conditional format rule.
-    FORMULATYPE_VALIDATION,     /// Condition of a data validation.
-    FORMULATYPE_DEFINEDNAME     /// Definition of a defined name.
+    Cell,           /// Simple cell formula, or reference to a shared formula name.
+    Array,          /// Array (matrix) formula.
+    SharedFormula,  /// Shared formula definition.
+    CondFormat,     /// Condition of a conditional format rule.
+    Validation      /// Condition of a data validation.
 };
 
 // Reference helpers ==========================================================
diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx
index 3dcb0b2..3af2b95 100644
--- a/sc/source/filter/oox/condformatbuffer.cxx
+++ b/sc/source/filter/oox/condformatbuffer.cxx
@@ -501,7 +501,7 @@ void CondFormatRule::importCfRule( SequenceInputStream& rStrm )
     if( rStrm.getRemaining() >= 8 )
     {
         ScAddress aBaseAddr = mrCondFormat.getRanges().GetTopLeftCorner();
-        ApiTokenSequence aTokens = getFormulaParser().importFormula( aBaseAddr, FORMULATYPE_CONDFORMAT, rStrm );
+        ApiTokenSequence aTokens = getFormulaParser().importFormula( aBaseAddr, FormulaType::CondFormat, rStrm );
         maModel.maFormulas.push_back( aTokens );
 
         // second formula
@@ -509,14 +509,14 @@ void CondFormatRule::importCfRule( SequenceInputStream& rStrm )
         OSL_ENSURE( (nFmla2Size > 0) == (rStrm.getRemaining() >= 8), "CondFormatRule::importCfRule - formula size mismatch" );
         if( rStrm.getRemaining() >= 8 )
         {
-            aTokens = getFormulaParser().importFormula( aBaseAddr, FORMULATYPE_CONDFORMAT, rStrm );
+            aTokens = getFormulaParser().importFormula( aBaseAddr, FormulaType::CondFormat, rStrm );
             maModel.maFormulas.push_back( aTokens );
 
             // third formula
             OSL_ENSURE( (nFmla3Size > 0) == (rStrm.getRemaining() >= 8), "CondFormatRule::importCfRule - formula size mismatch" );
             if( rStrm.getRemaining() >= 8 )
             {
-                aTokens = getFormulaParser().importFormula( aBaseAddr, FORMULATYPE_CONDFORMAT, rStrm );
+                aTokens = getFormulaParser().importFormula( aBaseAddr, FormulaType::CondFormat, rStrm );
                 maModel.maFormulas.push_back( aTokens );
             }
         }
diff --git a/sc/source/filter/oox/formulaparser.cxx b/sc/source/filter/oox/formulaparser.cxx
index d7f7cc9..f34d96a 100644
--- a/sc/source/filter/oox/formulaparser.cxx
+++ b/sc/source/filter/oox/formulaparser.cxx
@@ -594,25 +594,20 @@ void FormulaParserImpl::initializeImport( const ScAddress& rBaseAddr, FormulaTyp
     mbRelativeAsOffset = mb2dRefsAs3dRefs = mbSpecialTokens = false;
     switch( eType )
     {
-        case FORMULATYPE_CELL:
+        case FormulaType::Cell:
             mbSpecialTokens = true;
         break;
-        case FORMULATYPE_ARRAY:
+        case FormulaType::Array:
         break;
-        case FORMULATYPE_SHAREDFORMULA:
+        case FormulaType::SharedFormula:
             mbRelativeAsOffset = true;
         break;
-        case FORMULATYPE_CONDFORMAT:
+        case FormulaType::CondFormat:
             mbRelativeAsOffset = true;
         break;
-        case FORMULATYPE_VALIDATION:
+        case FormulaType::Validation:
             mbRelativeAsOffset = true;
         break;
-        case FORMULATYPE_DEFINEDNAME:
-            mbRelativeAsOffset = true;
-            // BIFF2-BIFF4: convert 2D references to absolute 3D references
-            mb2dRefsAs3dRefs = false;
-        break;
     }
 
     maTokenStorage.clear();
diff --git a/sc/source/filter/oox/sheetdatacontext.cxx b/sc/source/filter/oox/sheetdatacontext.cxx
index 95f8be4..189cd23 100644
--- a/sc/source/filter/oox/sheetdatacontext.cxx
+++ b/sc/source/filter/oox/sheetdatacontext.cxx
@@ -425,7 +425,7 @@ bool SheetDataContext::readCellHeader( SequenceInputStream& rStrm, CellType eCel
 ApiTokenSequence SheetDataContext::readCellFormula( SequenceInputStream& rStrm )
 {
     rStrm.skip( 2 );
-    return mxFormulaParser->importFormula( maCellData.maCellAddr, FORMULATYPE_CELL, rStrm );
+    return mxFormulaParser->importFormula( maCellData.maCellAddr, FormulaType::Cell, rStrm );
 }
 
 bool SheetDataContext::readFormulaRef( SequenceInputStream& rStrm )
@@ -535,7 +535,7 @@ void SheetDataContext::importArray( SequenceInputStream& rStrm )
     if( readFormulaRef( rStrm ) && maFmlaData.isValidArrayRef( maCellData.maCellAddr ) )
     {
         rStrm.skip( 1 );
-        ApiTokenSequence aTokens = mxFormulaParser->importFormula( maCellData.maCellAddr, FORMULATYPE_ARRAY, rStrm );
+        ApiTokenSequence aTokens = mxFormulaParser->importFormula( maCellData.maCellAddr, FormulaType::Array, rStrm );
         mrSheetData.createArrayFormula( maFmlaData.maFormulaRef, aTokens );
     }
 }
@@ -562,7 +562,7 @@ void SheetDataContext::importSharedFmla( SequenceInputStream& rStrm )
 {
     if( readFormulaRef( rStrm ) && maFmlaData.isValidSharedRef( maCellData.maCellAddr ) )
     {
-        ApiTokenSequence aTokens = mxFormulaParser->importFormula( maCellData.maCellAddr, FORMULATYPE_SHAREDFORMULA, rStrm );
+        ApiTokenSequence aTokens = mxFormulaParser->importFormula( maCellData.maCellAddr, FormulaType::SharedFormula, rStrm );
         mrSheetData.createSharedFormula( maCellData.maCellAddr, aTokens );
     }
 }
diff --git a/sc/source/filter/oox/worksheetfragment.cxx b/sc/source/filter/oox/worksheetfragment.cxx
index 24f6443..a91b17a 100644
--- a/sc/source/filter/oox/worksheetfragment.cxx
+++ b/sc/source/filter/oox/worksheetfragment.cxx
@@ -138,8 +138,8 @@ void DataValidationsContextBase::importDataValidation( SequenceInputStream& rStr
     // condition formula(s)
     FormulaParser& rParser = rTarget.getFormulaParser();
     ScAddress aBaseAddr = aModel.maRanges.GetTopLeftCorner();
-    aModel.maTokens1 = rParser.importFormula(aBaseAddr, FORMULATYPE_VALIDATION, rStrm);
-    aModel.maTokens2 = rParser.importFormula(aBaseAddr, FORMULATYPE_VALIDATION, rStrm);
+    aModel.maTokens1 = rParser.importFormula(aBaseAddr, FormulaType::Validation, rStrm);
+    aModel.maTokens2 = rParser.importFormula(aBaseAddr, FormulaType::Validation, rStrm);
     // process string list of a list validation (convert to list of string tokens)
     if ((aModel.mnType == XML_list) && getFlag(nFlags, BIFF_DATAVAL_STRINGLIST))
         rParser.convertStringToStringList(aModel.maTokens1, ',', true);
commit 04004cc25905de47bb8406cb99be8fb34dd6f633
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:27:08 2017 +0200

    convert FuncParamValidity to scoped enum
    
    and drop unused NONE enumerator
    
    Change-Id: Ibc77390efb195a9158ba809ad96aab4dcdbc09cb

diff --git a/compilerplugins/clang/unusedenumconstants.py b/compilerplugins/clang/unusedenumconstants.py
index 975e23c..5a71bf4 100755
--- a/compilerplugins/clang/unusedenumconstants.py
+++ b/compilerplugins/clang/unusedenumconstants.py
@@ -112,6 +112,7 @@ for d in definitionSet:
          "include/svtools/rtftoken.h", # RTF_TOKEN_IDS
          "starmath/source/mathtype.hxx", # MathType::MTOKENS
          "sd/source/filter/eppt/epptbase.hxx", # PPTExTextAttr
+         "sc/source/filter/inc/tokstack.hxx", # E_TYPE
         # unit test code
          "cppu/source/uno/check.cxx",
         # general weird nonsense going on
diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx
index e217165..a192422 100644
--- a/sc/source/filter/inc/formulabase.hxx
+++ b/sc/source/filter/inc/formulabase.hxx
@@ -367,12 +367,11 @@ struct ApiOpCodes
 // Function parameter info ====================================================
 
 /** Enumerates validity modes for a function parameter. */
-enum FuncParamValidity
+enum class FuncParamValidity
 {
-    FUNC_PARAM_NONE = 0,        /// Default for an unspecified entry in a C-array.
-    FUNC_PARAM_REGULAR,         /// Parameter supported by Calc and Excel.
-    FUNC_PARAM_CALCONLY,        /// Parameter supported by Calc only.
-    FUNC_PARAM_EXCELONLY        /// Parameter supported by Excel only.
+    Regular,         /// Parameter supported by Calc and Excel.
+    CalcOnly,        /// Parameter supported by Calc only.
+    ExcelOnly        /// Parameter supported by Excel only.
 };
 
 /** Structure that contains all needed information for a parameter in a
@@ -474,7 +473,7 @@ enum FunctionLibraryType
 
     The member mpParamInfos points to a C-array of type information structures
     for all parameters of the function. The last initialized structure
-    describing a regular parameter (member meValid == FUNC_PARAM_REGULAR) in
+    describing a regular parameter (member meValid == FuncParamValidity::Regular) in
     this array is used repeatedly for all following parameters supported by a
     function.
  */
diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx
index 01de05a..d0e73d5 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -203,18 +203,18 @@ const sal_uInt8 V = BIFF_TOKCLASS_VAL;
 const sal_uInt8 A = BIFF_TOKCLASS_ARR;
 
 // abbreviations for parameter infos
-#define RO   { FUNC_PARAM_REGULAR }
-#define RA   { FUNC_PARAM_REGULAR }
-#define RR   { FUNC_PARAM_REGULAR }
-#define RX   { FUNC_PARAM_REGULAR }
-#define VO   { FUNC_PARAM_REGULAR  }
-#define VV   { FUNC_PARAM_REGULAR  }
-#define VA   { FUNC_PARAM_REGULAR  }
-#define VR   { FUNC_PARAM_REGULAR  }
-#define VX   { FUNC_PARAM_REGULAR  }
-#define RO_E { FUNC_PARAM_EXCELONLY }
-#define VR_E { FUNC_PARAM_EXCELONLY  }
-#define C    { FUNC_PARAM_CALCONLY }
+#define RO   { FuncParamValidity::Regular }
+#define RA   { FuncParamValidity::Regular }
+#define RR   { FuncParamValidity::Regular }
+#define RX   { FuncParamValidity::Regular }
+#define VO   { FuncParamValidity::Regular  }
+#define VV   { FuncParamValidity::Regular  }
+#define VA   { FuncParamValidity::Regular  }
+#define VR   { FuncParamValidity::Regular  }
+#define VX   { FuncParamValidity::Regular  }
+#define RO_E { FuncParamValidity::ExcelOnly }
+#define VR_E { FuncParamValidity::ExcelOnly  }
+#define C    { FuncParamValidity::CalcOnly }
 
 // Note: parameter types of all macro sheet functions (FUNCFLAG_MACROFUNC/FUNCFLAG_MACROCMD) untested!
 
@@ -928,12 +928,12 @@ FunctionParamInfoIterator::FunctionParamInfoIterator( const FunctionInfo& rFuncI
 
 bool FunctionParamInfoIterator::isCalcOnlyParam() const
 {
-    return mpParamInfo && (mpParamInfo->meValid == FUNC_PARAM_CALCONLY);
+    return mpParamInfo && (mpParamInfo->meValid == FuncParamValidity::CalcOnly);
 }
 
 bool FunctionParamInfoIterator::isExcelOnlyParam() const
 {
-    return mpParamInfo && (mpParamInfo->meValid == FUNC_PARAM_EXCELONLY);
+    return mpParamInfo && (mpParamInfo->meValid == FuncParamValidity::ExcelOnly);
 }
 
 FunctionParamInfoIterator& FunctionParamInfoIterator::operator++()
@@ -941,7 +941,7 @@ FunctionParamInfoIterator& FunctionParamInfoIterator::operator++()
     if( mpParamInfo )
     {
         // move pointer to next entry, if something explicit follows
-        if( (mpParamInfo + 1 < mpParamInfoEnd) && (mpParamInfo[ 1 ].meValid != FUNC_PARAM_NONE) )
+        if( mpParamInfo + 1 < mpParamInfoEnd )
             ++mpParamInfo;
         // if last parameter type is 'Excel-only' or 'Calc-only', do not repeat it
         else if( isExcelOnlyParam() || isCalcOnlyParam() )
commit f4ae7da07703de3a7636f00213fd01cb548682a0
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:13:34 2017 +0200

    convert WorksheetType to scoped enum
    
    and drop unused MODULE enumerator
    
    Change-Id: I905c6366bbd84172675e51a3f441d9ea419e8150

diff --git a/sc/source/filter/inc/worksheethelper.hxx b/sc/source/filter/inc/worksheethelper.hxx
index 3c2276e..a63e048 100644
--- a/sc/source/filter/inc/worksheethelper.hxx
+++ b/sc/source/filter/inc/worksheethelper.hxx
@@ -58,14 +58,13 @@ class WorksheetSettings;
 typedef ::std::map< OUString, ScDataBarFormatData* >  ExtLst;
 
 /** An enumeration for all types of sheets in a workbook. */
-enum WorksheetType
+enum class WorksheetType
 {
-    SHEETTYPE_WORKSHEET,            /// Worksheet.
-    SHEETTYPE_CHARTSHEET,           /// Chart sheet.
-    SHEETTYPE_MACROSHEET,           /// Macro sheet.
-    SHEETTYPE_DIALOGSHEET,          /// Dialog sheet (BIFF5+).
-    SHEETTYPE_MODULESHEET,          /// VB module sheet (BIFF5 only).
-    SHEETTYPE_EMPTYSHEET            /// Other (unsupported) sheet type.
+    Work,            /// Worksheet.
+    Chart,           /// Chart sheet.
+    Macro,           /// Macro sheet.
+    Dialog,          /// Dialog sheet (BIFF5+).
+    Empty            /// Other (unsupported) sheet type.
 };
 
 /** Stores settings and formatting data about a range of sheet columns. */
diff --git a/sc/source/filter/oox/drawingfragment.cxx b/sc/source/filter/oox/drawingfragment.cxx
index 91a2e50..c3626c4 100644
--- a/sc/source/filter/oox/drawingfragment.cxx
+++ b/sc/source/filter/oox/drawingfragment.cxx
@@ -156,7 +156,7 @@ GroupShapeContext::GroupShapeContext( ContextHandler2Helper& rParent,
         {
             ShapePtr xShape( new Shape( rHelper, rAttribs, "com.sun.star.drawing.GraphicObjectShape" ) );
             if( pxShape ) *pxShape = xShape;
-            return new GraphicalObjectFrameContext( rParent, rxParentShape, xShape, rHelper.getSheetType() != SHEETTYPE_CHARTSHEET );
+            return new GraphicalObjectFrameContext( rParent, rxParentShape, xShape, rHelper.getSheetType() != WorksheetType::Chart );
         }
         case XDR_TOKEN( grpSp ):
         {
diff --git a/sc/source/filter/oox/pagesettings.cxx b/sc/source/filter/oox/pagesettings.cxx
index f8b1277..b0397f4 100644
--- a/sc/source/filter/oox/pagesettings.cxx
+++ b/sc/source/filter/oox/pagesettings.cxx
@@ -894,7 +894,7 @@ void PageSettingsConverter::writePageSettingsProperties(
         PropertySet& rPropSet, const PageSettingsModel& rModel, WorksheetType eSheetType )
 {
     // special handling for chart sheets
-    bool bChartSheet = eSheetType == SHEETTYPE_CHARTSHEET;
+    bool bChartSheet = eSheetType == WorksheetType::Chart;
 
     // printout scaling
     if( bChartSheet )
diff --git a/sc/source/filter/oox/pivotcachefragment.cxx b/sc/source/filter/oox/pivotcachefragment.cxx
index f324b12..caa7021 100644
--- a/sc/source/filter/oox/pivotcachefragment.cxx
+++ b/sc/source/filter/oox/pivotcachefragment.cxx
@@ -198,7 +198,7 @@ void PivotCacheDefinitionFragment::finalizeImport()
         if( !aRecFragmentPath.isEmpty() )
         {
             SCTAB nSheet = mrPivotCache.getSourceRange().aStart.Tab();
-            WorksheetGlobalsRef xSheetGlob = WorksheetHelper::constructGlobals( *this, ISegmentProgressBarRef(), SHEETTYPE_WORKSHEET, nSheet );
+            WorksheetGlobalsRef xSheetGlob = WorksheetHelper::constructGlobals( *this, ISegmentProgressBarRef(), WorksheetType::Work, nSheet );
             if( xSheetGlob.get() )
                 importOoxFragment( new PivotCacheRecordsFragment( *xSheetGlob, aRecFragmentPath, mrPivotCache ) );
         }
diff --git a/sc/source/filter/oox/viewsettings.cxx b/sc/source/filter/oox/viewsettings.cxx
index 6ac2ace..ffc9e75 100644
--- a/sc/source/filter/oox/viewsettings.cxx
+++ b/sc/source/filter/oox/viewsettings.cxx
@@ -327,7 +327,7 @@ void SheetViewSettings::finalizeImport()
     SheetViewModelRef xModel = maSheetViews.empty() ? createSheetView() : maSheetViews.front();
 
     // #i59590# #158194# special handling for chart sheets (Excel ignores some settings in chart sheets)
-    if( getSheetType() == SHEETTYPE_CHARTSHEET )
+    if( getSheetType() == WorksheetType::Chart )
     {
         xModel->maPaneSelMap.clear();
         xModel->maFirstPos = xModel->maSecondPos = ScAddress( SCCOL ( 0 ), SCROW ( 0 ), SCTAB (getSheetIndex() ) );
diff --git a/sc/source/filter/oox/workbookfragment.cxx b/sc/source/filter/oox/workbookfragment.cxx
index 300b567..0416214 100644
--- a/sc/source/filter/oox/workbookfragment.cxx
+++ b/sc/source/filter/oox/workbookfragment.cxx
@@ -401,21 +401,21 @@ void WorkbookFragment::finalizeImport()
                 ISegmentProgressBarRef xSheetSegment = getProgressBar().createSegment( fSegmentLength );
 
                 // get the sheet type according to the relations type
-                WorksheetType eSheetType = SHEETTYPE_EMPTYSHEET;
+                WorksheetType eSheetType = WorksheetType::Empty;
                 if( pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE( "worksheet" ) ||
                         pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE_STRICT( "worksheet" ))
-                    eSheetType = SHEETTYPE_WORKSHEET;
+                    eSheetType = WorksheetType::Work;
                 else if( pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE( "chartsheet" ) ||
                         pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE_STRICT( "chartsheet" ))
-                    eSheetType = SHEETTYPE_CHARTSHEET;
+                    eSheetType = WorksheetType::Chart;
                 else if( (pRelation->maType == CREATE_MSOFFICE_RELATION_TYPE( "xlMacrosheet" )) ||
                          (pRelation->maType == CREATE_MSOFFICE_RELATION_TYPE( "xlIntlMacrosheet" )) )
-                    eSheetType = SHEETTYPE_MACROSHEET;
+                    eSheetType = WorksheetType::Macro;
                 else if( pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE( "dialogsheet" ) ||
                         pRelation->maType == CREATE_OFFICEDOC_RELATION_TYPE_STRICT(" dialogsheet" ))
-                    eSheetType = SHEETTYPE_DIALOGSHEET;
-                OSL_ENSURE( eSheetType != SHEETTYPE_EMPTYSHEET, "WorkbookFragment::finalizeImport - unknown sheet type" );
-                if( eSheetType != SHEETTYPE_EMPTYSHEET )
+                    eSheetType = WorksheetType::Dialog;
+                OSL_ENSURE( eSheetType != WorksheetType::Empty, "WorkbookFragment::finalizeImport - unknown sheet type" );
+                if( eSheetType != WorksheetType::Empty )
                 {
                     // create the WorksheetGlobals object
                     WorksheetGlobalsRef xSheetGlob = WorksheetHelper::constructGlobals( *this, xSheetSegment, eSheetType, nCalcSheet );
@@ -426,17 +426,16 @@ void WorkbookFragment::finalizeImport()
                         ::rtl::Reference< WorksheetFragmentBase > xFragment;
                         switch( eSheetType )
                         {
-                            case SHEETTYPE_WORKSHEET:
-                            case SHEETTYPE_MACROSHEET:
-                            case SHEETTYPE_DIALOGSHEET:
+                            case WorksheetType::Work:
+                            case WorksheetType::Macro:
+                            case WorksheetType::Dialog:
                                 xFragment.set( new WorksheetFragment( *xSheetGlob, aFragmentPath ) );
                             break;
-                            case SHEETTYPE_CHARTSHEET:
+                            case WorksheetType::Chart:
                                 xFragment.set( new ChartsheetFragment( *xSheetGlob, aFragmentPath ) );
                             break;
                             // coverity[dead_error_begin] - following conditions exist to avoid compiler warning
-                            case SHEETTYPE_EMPTYSHEET:
-                            case SHEETTYPE_MODULESHEET:
+                            case WorksheetType::Empty:
                                 break;
                         }
 
diff --git a/sc/source/filter/oox/worksheetfragment.cxx b/sc/source/filter/oox/worksheetfragment.cxx
index c4882f8..24f6443 100644
--- a/sc/source/filter/oox/worksheetfragment.cxx
+++ b/sc/source/filter/oox/worksheetfragment.cxx
@@ -356,12 +356,11 @@ ContextHandlerRef WorksheetFragment::onCreateContext( sal_Int32 nElement, const
     {
         case XML_ROOT_CONTEXT: switch( getSheetType() )
         {
-            case SHEETTYPE_WORKSHEET:   return (nElement == XLS_TOKEN( worksheet )) ? this : nullptr;
-            case SHEETTYPE_CHARTSHEET:  return nullptr;
-            case SHEETTYPE_MACROSHEET:  return (nElement == XM_TOKEN( macrosheet )) ? this : nullptr;
-            case SHEETTYPE_DIALOGSHEET: return (nElement == XLS_TOKEN( dialogsheet )) ? this : nullptr;
-            case SHEETTYPE_MODULESHEET: return nullptr;
-            case SHEETTYPE_EMPTYSHEET:  return nullptr;
+            case WorksheetType::Work:   return (nElement == XLS_TOKEN( worksheet )) ? this : nullptr;
+            case WorksheetType::Chart:  return nullptr;
+            case WorksheetType::Macro:  return (nElement == XM_TOKEN( macrosheet )) ? this : nullptr;
+            case WorksheetType::Dialog: return (nElement == XLS_TOKEN( dialogsheet )) ? this : nullptr;
+            case WorksheetType::Empty:  return nullptr;
         }
         break;
 
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 2fcc4d5..728a45a 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -1164,7 +1164,7 @@ void WorksheetGlobals::convertColumns( OutlineLevelVec& orColLevels,
     sal_Int32 nWidth = getUnitConverter().scaleToMm100( rModel.mfWidth, UNIT_DIGIT );
 
     // macro sheets have double width
-    if( meSheetType == SHEETTYPE_MACROSHEET )
+    if( meSheetType == WorksheetType::Macro )
         nWidth *= 2;
 
     SCTAB nTab = getSheetIndex();
commit 3c96c22417a137fb7ac8dfc2ddb9b2c8f8923812
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:05:37 2017 +0200

    convert SylkVersion to scoped enum
    
    Change-Id: Ib7e02fee748bd55be6d74d60bff3d8ed765ea225

diff --git a/compilerplugins/clang/unusedenumconstants.py b/compilerplugins/clang/unusedenumconstants.py
index 5219c2c..975e23c 100755
--- a/compilerplugins/clang/unusedenumconstants.py
+++ b/compilerplugins/clang/unusedenumconstants.py
@@ -128,6 +128,7 @@ for d in definitionSet:
          "svtools/source/config/helpopt.cxx", # HelpProperty
          "include/svtools/htmltokn.h",
          "include/sfx2/sidebar/Theme.hxx", # ThemeItem
+         "sc/source/ui/docshell/impex.cxx", # SylkVersion
         # Windows or OSX only
          "include/canvas/rendering/icolorbuffer.hxx",
          "include/vcl/commandevent.hxx",
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index cf0fd2a..75ad60f 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -79,12 +79,12 @@ namespace
     }
 }
 
-enum SylkVersion
+enum class SylkVersion
 {
-    SYLK_SCALC3,    // Wrote wrongly quoted strings and unescaped semicolons.
-    SYLK_OOO32,     // Correct strings, plus multiline content.
-    SYLK_OWN,       // Place our new versions, if any, before this value.
-    SYLK_OTHER      // Assume that aliens wrote correct strings.
+    SCALC3,    // Wrote wrongly quoted strings and unescaped semicolons.
+    OOO32,     // Correct strings, plus multiline content.
+    OWN,       // Place our new versions, if any, before this value.
+    OTHER      // Assume that aliens wrote correct strings.
 };
 
 // Whole document without Undo
@@ -696,7 +696,7 @@ static void lcl_UnescapeSylk( OUString & rString, SylkVersion eVersion )
     // Older versions didn't escape the semicolon.
     // Older versions quoted the string and doubled embedded quotes, but not
     // the semicolons, which was plain wrong.
-    if (eVersion >= SYLK_OOO32)
+    if (eVersion >= SylkVersion::OOO32)
         rString = rString.replaceAll(";;", ";");
     else
         rString = rString.replaceAll("\"\"", "\"");
@@ -714,7 +714,7 @@ static const sal_Unicode* lcl_ScanSylkString( const sal_Unicode* p,
         if( *p == '"' )
         {
             pEndQuote = p;
-            if (eVersion >= SYLK_OOO32)
+            if (eVersion >= SylkVersion::OOO32)
             {
                 if (*(p+1) == ';')
                 {
@@ -750,7 +750,7 @@ static const sal_Unicode* lcl_ScanSylkFormula( const sal_Unicode* p,
         OUString& rString, SylkVersion eVersion )
 {
     const sal_Unicode* pStart = p;
-    if (eVersion >= SYLK_OOO32)
+    if (eVersion >= SylkVersion::OOO32)
     {
         while (*p)
         {
@@ -1712,7 +1712,7 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
 {
     bool bOk = true;
     bool bMyDoc = false;
-    SylkVersion eVersion = SYLK_OTHER;
+    SylkVersion eVersion = SylkVersion::OTHER;
 
     // US-English separators for StringToDouble
     sal_Unicode cDecSep = '.';
@@ -1941,10 +1941,10 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
             {
                 aLine = aLine.copy(4);
                 if (aLine == "CALCOOO32")
-                    eVersion = SYLK_OOO32;
+                    eVersion = SylkVersion::OOO32;
                 else if (aLine == "SCALC3")
-                    eVersion = SYLK_SCALC3;
-                bMyDoc = (eVersion <= SYLK_OWN);
+                    eVersion = SylkVersion::SCALC3;
+                bMyDoc = (eVersion <= SylkVersion::OWN);
             }
             else if( cTag == 'E' )                      // Ende
                 break;
commit d2871068d71aa35f4530081a2fe5ba9361c6eb20
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 11:02:09 2017 +0200

    convert DoubledQuoteMode to scoped enum
    
    and drop unused enumerators
    
    Change-Id: I0dc45e2bec1a25357405ca0c0197632ee4806cb0

diff --git a/compilerplugins/clang/unusedenumconstants.py b/compilerplugins/clang/unusedenumconstants.py
index 4d45a42..5219c2c 100755
--- a/compilerplugins/clang/unusedenumconstants.py
+++ b/compilerplugins/clang/unusedenumconstants.py
@@ -154,6 +154,7 @@ for d in definitionSet:
          "sd/source/ui/inc/animobjs.hxx", # BitmapAdjustment (from UI)
          "sd/source/ui/dlg/PhotoAlbumDialog.hxx", # SlideImageLayout (from UI)
          "sd/inc/pres.hxx", # AutoLayout (from UI)
+         "sc/source/ui/inc/scuitphfedit.hxx", # ScHFEntryId (from UI)
         # represents constants from an external API
          "opencl/inc/opencl_device_selection.h",
          "vcl/inc/sft.hxx",
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 44694a5..cf0fd2a 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -630,19 +630,16 @@ static bool lcl_appendLineData( OUString& rField, const sal_Unicode* p1, const s
     }
 }
 
-enum DoubledQuoteMode
+enum class DoubledQuoteMode
 {
-    DQM_KEEP_ALL,   // both are taken, additionally start and end quote are included in string
-    DQM_KEEP,       // both are taken
-    DQM_ESCAPE,     // escaped quote, one is taken, one ignored
-    DQM_CONCAT,     // first is end, next is start, both ignored => strings combined
-    DQM_SEPARATE    // end one string and begin next
+    KEEP_ALL,   // both are taken, additionally start and end quote are included in string
+    ESCAPE,     // escaped quote, one is taken, one ignored
 };
 
 static const sal_Unicode* lcl_ScanString( const sal_Unicode* p, OUString& rString,
             const sal_Unicode* pSeps, sal_Unicode cStr, DoubledQuoteMode eMode, bool& rbOverflowCell )
 {
-    if (eMode != DQM_KEEP_ALL)
+    if (eMode != DoubledQuoteMode::KEEP_ALL)
         p++;    //! jump over opening quote
     bool bCont;
     do
@@ -658,7 +655,7 @@ static const sal_Unicode* lcl_ScanString( const sal_Unicode* p, OUString& rStrin
                 if ( *++p != cStr )
                 {
                     // break or continue for loop
-                    if (eMode == DQM_ESCAPE)
+                    if (eMode == DoubledQuoteMode::ESCAPE)
                     {
                         if (lcl_isFieldEndQuote( p-1, pSeps) == FIELDEND_QUOTE)
                             break;
@@ -671,28 +668,15 @@ static const sal_Unicode* lcl_ScanString( const sal_Unicode* p, OUString& rStrin
                 // doubled quote char
                 switch ( eMode )
                 {
-                    case DQM_KEEP_ALL :
-                    case DQM_KEEP :
+                    case DoubledQuoteMode::KEEP_ALL :
                         p++;            // both for us (not breaking for-loop)
                     break;
-                    case DQM_ESCAPE :
+                    case DoubledQuoteMode::ESCAPE :
                         p++;            // one for us (breaking for-loop)
                         bCont = true;   // and more
                     break;
-                    case DQM_CONCAT :
-                        if ( p0+1 < p )
-                        {
-                            // first part
-                            if (!lcl_appendLineData( rString, p0, p-1))
-                                rbOverflowCell = true;
-                        }
-                        p0 = ++p;       // text of next part starts here
-                    break;
-                    case DQM_SEPARATE :
-                                        // positioned on next opening quote
-                    break;
                 }
-                if ( eMode == DQM_ESCAPE || eMode == DQM_SEPARATE )
+                if ( eMode == DoubledQuoteMode::ESCAPE )
                     break;
             }
             else
@@ -700,7 +684,7 @@ static const sal_Unicode* lcl_ScanString( const sal_Unicode* p, OUString& rStrin
         }
         if ( p0 < p )
         {
-            if (!lcl_appendLineData( rString, p0, ((eMode != DQM_KEEP_ALL && (*p || *(p-1) == cStr)) ? p-1 : p)))
+            if (!lcl_appendLineData( rString, p0, ((eMode != DoubledQuoteMode::KEEP_ALL && (*p || *(p-1) == cStr)) ? p-1 : p)))
                 rbOverflowCell = true;
         }
     } while ( bCont );
@@ -893,7 +877,7 @@ bool ScImportExport::Text2Doc( SvStream& rStrm )
                 {
                     // Always look for a pairing quote and ignore separator in between.
                     while (*p && *p == cStr)
-                        q = p = lcl_ScanString( p, aCell, pSeps, cStr, DQM_KEEP_ALL, bOverflowCell );
+                        q = p = lcl_ScanString( p, aCell, pSeps, cStr, DoubledQuoteMode::KEEP_ALL, bOverflowCell );
                     // All until next separator or quote.
                     while (*p && *p != cSep && *p != cStr)
                         ++p;
@@ -1548,7 +1532,7 @@ const sal_Unicode* ScImportExport::ScanNextFieldFromString( const sal_Unicode* p
     {
         rbIsQuoted = true;
         const sal_Unicode* p1;
-        p1 = p = lcl_ScanString( p, rField, pSeps, cStr, DQM_ESCAPE, rbOverflowCell );
+        p1 = p = lcl_ScanString( p, rField, pSeps, cStr, DoubledQuoteMode::ESCAPE, rbOverflowCell );
         while ( *p && !ScGlobal::UnicodeStrChr( pSeps, *p ) )
             p++;
         // Append remaining unquoted and undelimited data (dirty, dirty) to
commit 48565c4bf1b9dc36666199e74e49ac3527b99cfb
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Feb 15 10:45:43 2017 +0200

    convert ScFilterBoxMode to scoped enum
    
    and drop unused enumerators
    
    Change-Id: I3f59622e17355ccc39597c0f79d4e254e6cc92c6

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 8b02579..e4c3b6b 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -153,12 +153,10 @@ using namespace css::uno;
 #define SC_AUTOFILTER_EMPTY     3
 #define SC_AUTOFILTER_NOTEMPTY  4
 
-enum ScFilterBoxMode
+enum class ScFilterBoxMode
 {
-    SC_FILTERBOX_FILTER,
-    SC_FILTERBOX_DATASELECT,
-    SC_FILTERBOX_SCENARIO,
-    SC_FILTERBOX_PAGEFIELD
+    DataSelect,
+    Scenario
 };
 
 struct ScGridWindow::MouseEventState
@@ -206,7 +204,7 @@ private:
     bool            bInit;
     bool            bCancelled;
     bool            bInSelect;
-    sal_uLong           nSel;
+    sal_uLong       nSel;
     ScFilterBoxMode eMode;
 
 protected:
@@ -961,7 +959,7 @@ void ScGridWindow::DoScenarioMenu( const ScRange& rScenRange )
 
     mpFilterFloat.reset(VclPtr<ScFilterFloatingWindow>::Create(this, WinBits(WB_BORDER)));
     mpFilterFloat->SetPopupModeEndHdl( LINK( this, ScGridWindow, PopupModeEndHdl ) );
-    mpFilterBox.reset(VclPtr<ScFilterListBox>::Create(mpFilterFloat.get(), this, nCol, nRow, SC_FILTERBOX_SCENARIO));
+    mpFilterBox.reset(VclPtr<ScFilterListBox>::Create(mpFilterFloat.get(), this, nCol, nRow, ScFilterBoxMode::Scenario));
     if (bLayoutRTL)
         mpFilterBox->EnableMirroring();
 
@@ -1085,8 +1083,7 @@ void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow )
 
     mpFilterFloat.reset(VclPtr<ScFilterFloatingWindow>::Create(this, WinBits(WB_BORDER)));
     mpFilterFloat->SetPopupModeEndHdl(LINK( this, ScGridWindow, PopupModeEndHdl));
-    ScFilterBoxMode eFilterMode = SC_FILTERBOX_DATASELECT;
-    mpFilterBox.reset(VclPtr<ScFilterListBox>::Create(mpFilterFloat.get(), this, nCol, nRow, eFilterMode));
+    mpFilterBox.reset(VclPtr<ScFilterListBox>::Create(mpFilterFloat.get(), this, nCol, nRow, ScFilterBoxMode::DataSelect));
     // Fix for bug fdo#44925
     if (AllSettings::GetLayoutRTL() != bLayoutRTL)
         mpFilterBox->EnableMirroring();
@@ -1225,19 +1222,12 @@ void ScGridWindow::FilterSelect( sal_uLong nSel )
     SCROW nRow = mpFilterBox->GetRow();
     switch (mpFilterBox->GetMode())
     {
-        case SC_FILTERBOX_DATASELECT:
+        case ScFilterBoxMode::DataSelect:
             ExecDataSelect(nCol, nRow, aString);
             break;
-        case SC_FILTERBOX_FILTER:
-            ExecFilter(nSel, nCol, nRow, aString);
-            break;
-        case SC_FILTERBOX_SCENARIO:
+        case ScFilterBoxMode::Scenario:
             pViewData->GetView()->UseScenario(aString);
             break;
-        case SC_FILTERBOX_PAGEFIELD:
-            // first entry is "all"
-            ExecPageFieldSelect( nCol, nRow, (nSel != 0), aString );
-            break;
     }
 
     if (mpFilterFloat)


More information about the Libreoffice-commits mailing list