[Libreoffice-commits] core.git: sw/source

Jochen Nitschke j.nitschke+logerrit at ok.de
Thu Apr 28 18:32:01 UTC 2016


 sw/source/ui/dbui/dbinsdlg.cxx |   71 +++++++++++++++++++----------------------
 1 file changed, 33 insertions(+), 38 deletions(-)

New commits:
commit f8eb7f9c7db6c3dd460868d00758733318cdc266
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date:   Thu Apr 28 01:35:05 2016 +0200

    use initialization list
    
    use anonymous union to make initialization and
    access easier
    prevent overwriting type and use scoped enum
    
    Change-Id: I76037ec666c5740096849b0c58fd9a187ada1d54
    Reviewed-on: https://gerrit.libreoffice.org/24455
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx
index 3fe8b9a..af78932 100644
--- a/sw/source/ui/dbui/dbinsdlg.cxx
+++ b/sw/source/ui/dbui/dbinsdlg.cxx
@@ -110,49 +110,44 @@ const char cDBFieldEnd    = '>';
 // Helper structure for adding database rows as fields or text
 struct DB_Column
 {
-    enum ColType { DB_FILLTEXT, DB_COL_FIELD, DB_COL_TEXT, DB_SPLITPARA } eColType;
+    const enum class Type { FILLTEXT, COL_FIELD, COL_TEXT, SPLITPARA } eColType;
 
     union {
         OUString* pText;
         SwField* pField;
         sal_uLong nFormat;
-    } DB_ColumnData;
+    };
     const SwInsDBColumn* pColInfo;
 
-    DB_Column()
-    {
-        pColInfo = nullptr;
-        DB_ColumnData.pText = nullptr;
-        eColType = DB_SPLITPARA;
-    }
+    DB_Column() : eColType(Type::SPLITPARA),
+                  pText(nullptr),
+                  pColInfo(nullptr)
+    {}
 
     explicit DB_Column( const OUString& rText )
-    {
-        pColInfo = nullptr;
-        DB_ColumnData.pText = new OUString( rText );
-        eColType = DB_FILLTEXT;
-    }
+                        : eColType(Type::FILLTEXT),
+                          pText(new OUString(rText)),
+                          pColInfo(nullptr)
+    {}
 
-    DB_Column( const SwInsDBColumn& rInfo, sal_uLong nFormat )
-    {
-        pColInfo = &rInfo;
-        DB_ColumnData.nFormat = nFormat;
-        eColType = DB_COL_TEXT;
-    }
+    DB_Column( const SwInsDBColumn& rInfo, sal_uLong nFormat_ )
+                        : eColType(Type::COL_TEXT),
+                          nFormat(nFormat_),
+                          pColInfo(&rInfo)
+    {}
 
     DB_Column( const SwInsDBColumn& rInfo, SwDBField& rField )
-    {
-        pColInfo = &rInfo;
-        DB_ColumnData.pField = &rField;
-        eColType = DB_COL_FIELD;
-    }
+                        : eColType(Type::COL_FIELD),
+                          pField(&rField),
+                          pColInfo(&rInfo)
+    {}
 
     ~DB_Column()
     {
-        if( DB_COL_FIELD == eColType )
-            delete DB_ColumnData.pField;
-        else if( DB_FILLTEXT == eColType )
-            delete DB_ColumnData.pText;
+        if( Type::COL_FIELD == eColType )
+            delete pField;
+        else if( Type::FILLTEXT == eColType )
+            delete pText;
     }
 };
 
@@ -936,7 +931,7 @@ bool SwInsertDBColAutoPilot::SplitTextToColArr( const OUString& rText,
                             static_cast<SwDBFieldType*>(rSh.InsertFieldType( aFieldType )),
                                                             nFormat ) );
                     if( nSubType )
-                        pNew->DB_ColumnData.pField->SetSubType( nSubType );
+                        pNew->pField->SetSubType( nSubType );
                 }
                 else
                     pNew = new DB_Column( rFndCol, nFormat );
@@ -1281,11 +1276,11 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
                     OUString sIns;
                     switch( pDBCol->eColType )
                     {
-                    case DB_Column::DB_FILLTEXT:
-                        sIns =  *pDBCol->DB_ColumnData.pText;
+                    case DB_Column::Type::FILLTEXT:
+                        sIns =  *pDBCol->pText;
                         break;
 
-                    case DB_Column::DB_SPLITPARA:
+                    case DB_Column::Type::SPLITPARA:
                         rSh.SplitNode();
                         // when the template is not the same as the follow template,
                         // the selected has to be set newly
@@ -1293,10 +1288,10 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
                             rSh.SetTextFormatColl( pColl );
                         break;
 
-                    case DB_Column::DB_COL_FIELD:
+                    case DB_Column::Type::COL_FIELD:
                         {
                             std::unique_ptr<SwDBField> pField(static_cast<SwDBField *>(
-                                pDBCol->DB_ColumnData.pField->CopyField()));
+                                pDBCol->pField->CopyField()));
                             double nValue = DBL_MAX;
 
                             Reference< XPropertySet > xColumnProps;
@@ -1330,7 +1325,7 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
                         }
                         break;
 
-                    case DB_Column::DB_COL_TEXT:
+                    case DB_Column::Type::COL_TEXT:
                         {
                             double nValue = DBL_MAX;
                             Reference< XPropertySet > xColumnProps;
@@ -1339,18 +1334,18 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
                                                 xColumnProps,
                                                 aDBFormatData,
                                                 &nValue );
-                            if( pDBCol->DB_ColumnData.nFormat &&
+                            if( pDBCol->nFormat &&
                                 DBL_MAX != nValue )
                             {
                                 Color* pCol;
-                                if(rNumFormatr.GetType(pDBCol->DB_ColumnData.nFormat) & css::util::NumberFormat::DATE)
+                                if(rNumFormatr.GetType(pDBCol->nFormat) & css::util::NumberFormat::DATE)
                                 {
                                     ::Date aStandard(1,1,1900);
                                     if (*rNumFormatr.GetNullDate() != aStandard)
                                         nValue += (aStandard - *rNumFormatr.GetNullDate());
                                 }
                                 rNumFormatr.GetOutputString( nValue,
-                                            pDBCol->DB_ColumnData.nFormat,
+                                            pDBCol->nFormat,
                                             sIns, &pCol );
                             }
                         }


More information about the Libreoffice-commits mailing list