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

Stephan Bergmann sbergman at redhat.com
Tue Oct 18 14:54:57 UTC 2016


 basic/source/basmgr/basmgr.cxx    |    3 -
 basic/source/classes/sbunoobj.cxx |   74 +++++++++++++++++---------------------
 basic/source/runtime/runtime.cxx  |   10 +++--
 3 files changed, 42 insertions(+), 45 deletions(-)

New commits:
commit 7596535983dfe6978d624cf0ff31b40e85e14a6b
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Oct 18 16:53:18 2016 +0200

    Simplify some dynamic/static_casts
    
    ...that are unnecessarily complicated after the "remove tools/rtti.hxx" commits
    
    Change-Id: I570751a1f81c547b50248fe4e2824c5c7c5dd624

diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx
index 6e29cae..157eed0 100644
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
@@ -1011,9 +1011,8 @@ bool BasicManager::ImplLoadBasic( SvStream& rStrm, StarBASICRef& rOldBasic ) con
     bool bLoaded = false;
     if( xNew.Is() )
     {
-        if( nullptr != dynamic_cast<const StarBASIC*>( xNew.get() ) )
+        if( auto pNew = dynamic_cast<StarBASIC*>( xNew.get() ) )
         {
-            StarBASIC* pNew = static_cast<StarBASIC*>( xNew.get() );
             // Use the Parent of the old BASICs
             if( rOldBasic.Is() )
             {
diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx
index 141a308..1933e69 100644
--- a/basic/source/classes/sbunoobj.cxx
+++ b/basic/source/classes/sbunoobj.cxx
@@ -868,11 +868,8 @@ Type getUnoTypeForSbxValue( const SbxValue* pVal )
             return aRetType;
         }
 
-        if( nullptr != dynamic_cast<const SbxDimArray*>( xObj.get() ) )
+        if( auto pArray = dynamic_cast<SbxDimArray*>( xObj.get() ) )
         {
-            SbxBase* pObj = xObj.get();
-            SbxDimArray* pArray = static_cast<SbxDimArray*>(pObj);
-
             short nDims = pArray->GetDims();
             Type aElementType = getUnoTypeForSbxBaseType( (SbxDataType)(pArray->GetType() & 0xfff) );
             TypeClass eElementTypeClass = aElementType.getTypeClass();
@@ -962,14 +959,14 @@ Type getUnoTypeForSbxValue( const SbxValue* pVal )
             }
         }
         // No array, but ...
-        else if( nullptr != dynamic_cast<const SbUnoObject*>( xObj.get() ) )
+        else if( auto obj = dynamic_cast<SbUnoObject*>( xObj.get() ) )
         {
-            aRetType = static_cast<SbUnoObject*>(xObj.get())->getUnoAny().getValueType();
+            aRetType = obj->getUnoAny().getValueType();
         }
         // SbUnoAnyObject?
-        else if( nullptr != dynamic_cast<const SbUnoAnyObject*>( xObj.get() ) )
+        else if( auto any = dynamic_cast<SbUnoAnyObject*>( xObj.get() ) )
         {
-            aRetType = static_cast<SbUnoAnyObject*>(xObj.get())->getValue().getValueType();
+            aRetType = any->getValue().getValueType();
         }
         // Otherwise it is a No-Uno-Basic-Object -> default==deliver void
     }
@@ -990,12 +987,11 @@ Any sbxToUnoValueImpl( const SbxValue* pVar, bool bBlockConversionToSmallestType
         SbxBaseRef xObj = pVar->GetObject();
         if( xObj.Is() )
         {
-            if( nullptr != dynamic_cast<const SbUnoAnyObject*>( xObj.get() ) )
-                return static_cast<SbUnoAnyObject*>(xObj.get())->getValue();
-            if( nullptr != dynamic_cast<const SbClassModuleObject*>( xObj.get() ) )
+            if( auto obj = dynamic_cast<SbUnoAnyObject*>( xObj.get() ) )
+                return obj->getValue();
+            if( auto pClassModuleObj = dynamic_cast<SbClassModuleObject*>( xObj.get() ) )
             {
                 Any aRetAny;
-                SbClassModuleObject* pClassModuleObj = static_cast<SbClassModuleObject*>(xObj.get());
                 SbModule* pClassModule = pClassModuleObj->getClassModule();
                 if( pClassModule->createCOMWrapperForIface( aRetAny, pClassModuleObj ) )
                     return aRetAny;
@@ -1189,9 +1185,9 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& rType, Property* pUnoProper
     if( eBaseType == SbxOBJECT )
     {
         SbxBaseRef xObj = pVar->GetObject();
-        if( xObj.Is() && nullptr != dynamic_cast<const SbUnoAnyObject*>( xObj.get() ) )
+        if ( auto obj = dynamic_cast<SbUnoAnyObject*>( xObj.get() ) )
         {
-            return static_cast<SbUnoAnyObject*>(xObj.get())->getValue();
+            return obj->getValue();
         }
     }
 
@@ -1244,13 +1240,13 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& rType, Property* pUnoProper
                 }
 
                 SbxBaseRef pObj = pVar->GetObject();
-                if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj.get() ) )
+                if( auto obj = dynamic_cast<SbUnoObject*>( pObj.get() ) )
                 {
-                    aRetVal = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
+                    aRetVal = obj->getUnoAny();
                 }
-                else if( pObj.Is() && nullptr != dynamic_cast<const SbUnoStructRefObject*>( pObj.get() ) )
+                else if( auto structRef = dynamic_cast<SbUnoStructRefObject*>( pObj.get() ) )
                 {
-                    aRetVal = static_cast<SbUnoStructRefObject*>(pObj.get())->getUnoAny();
+                    aRetVal = structRef->getUnoAny();
                 }
                 else
                 {
@@ -1270,9 +1266,9 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& rType, Property* pUnoProper
                 Reference< XIdlClass > xIdlClass;
 
                 SbxBaseRef pObj = pVar->GetObject();
-                if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj.get() ) )
+                if( auto obj = dynamic_cast<SbUnoObject*>( pObj.get() ) )
                 {
-                    Any aUnoAny = static_cast<SbUnoObject*>( pObj.get() )->getUnoAny();
+                    Any aUnoAny = obj->getUnoAny();
                     aUnoAny >>= xIdlClass;
                 }
 
@@ -1306,11 +1302,8 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& rType, Property* pUnoProper
         case TypeClass_SEQUENCE:
         {
             SbxBaseRef xObj = pVar->GetObject();
-            if( xObj.Is() && nullptr != dynamic_cast<const SbxDimArray*>( xObj.get() ) )
+            if( auto pArray = dynamic_cast<SbxDimArray*>( xObj.get() ) )
             {
-                SbxBase* pObj = xObj.get();
-                SbxDimArray* pArray = static_cast<SbxDimArray*>(pObj);
-
                 short nDims = pArray->GetDims();
 
                 // Normal case: One dimensional array
@@ -3084,11 +3077,12 @@ void RTL_Impl_HasInterfaces( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
 
     // get the Uno-Object
     SbxBaseRef pObj = rPar.Get( 1 )->GetObject();
-    if( !(pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj.get() )) )
+    auto obj = dynamic_cast<SbUnoObject*>( pObj.get() );
+    if( obj == nullptr )
     {
         return;
     }
-    Any aAny = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
+    Any aAny = obj->getUnoAny();
     auto x = o3tl::tryAccess<Reference<XInterface>>(aAny);
     if( !x )
     {
@@ -3148,11 +3142,12 @@ void RTL_Impl_IsUnoStruct( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj = rPar.Get( 1 )->GetObject();
-    if( !(pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj.get() )) )
+    auto obj = dynamic_cast<SbUnoObject*>( pObj.get() );
+    if( obj == nullptr )
     {
         return;
     }
-    Any aAny = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
+    Any aAny = obj->getUnoAny();
     TypeClass eType = aAny.getValueType().getTypeClass();
     if( eType == TypeClass_STRUCT )
     {
@@ -3183,11 +3178,12 @@ void RTL_Impl_EqualUnoObjects( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj1 = xParam1->GetObject();
-    if( !(pObj1.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj1.get() )) )
+    auto obj1 = dynamic_cast<SbUnoObject*>( pObj1.get() );
+    if( obj1 == nullptr )
     {
         return;
     }
-    Any aAny1 = static_cast<SbUnoObject*>(pObj1.get())->getUnoAny();
+    Any aAny1 = obj1->getUnoAny();
     TypeClass eType1 = aAny1.getValueType().getTypeClass();
     if( eType1 != TypeClass_INTERFACE )
     {
@@ -3202,11 +3198,12 @@ void RTL_Impl_EqualUnoObjects( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj2 = xParam2->GetObject();
-    if( !(pObj2.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj2.get() )) )
+    auto obj2 = dynamic_cast<SbUnoObject*>( pObj2.get() );
+    if( obj2 == nullptr )
     {
         return;
     }
-    Any aAny2 = static_cast<SbUnoObject*>(pObj2.get())->getUnoAny();
+    Any aAny2 = obj2->getUnoAny();
     TypeClass eType2 = aAny2.getValueType().getTypeClass();
     if( eType2 != TypeClass_INTERFACE )
     {
@@ -4192,9 +4189,9 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
             Reference< XIdlClass > xIdlClass;
 
             SbxBaseRef pObj = pVal->GetObject();
-            if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( pObj.get() ) )
+            if( auto obj = dynamic_cast<SbUnoObject*>( pObj.get() ) )
             {
-                Any aUnoAny = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
+                Any aUnoAny = obj->getUnoAny();
                 aUnoAny >>= xIdlClass;
             }
 
@@ -4307,7 +4304,7 @@ void SAL_CALL ModuleInvocationProxy::setValue(const OUString& rProperty, const A
                                    + rProperty;
 
     SbxVariable* p = m_xScopeObj->Find( aPropertyFunctionName, SbxClassType::Method );
-    SbMethod* pMeth = p != nullptr ? dynamic_cast<SbMethod*>( p ) : nullptr;
+    SbMethod* pMeth = dynamic_cast<SbMethod*>( p );
     if( pMeth == nullptr )
     {
         // TODO: Check vba behavior concernig missing function
@@ -4346,7 +4343,7 @@ Any SAL_CALL ModuleInvocationProxy::getValue(const OUString& rProperty)
                                    + rProperty;
 
     SbxVariable* p = m_xScopeObj->Find( aPropertyFunctionName, SbxClassType::Method );
-    SbMethod* pMeth = p != nullptr ? dynamic_cast<SbMethod*>( p ) : nullptr;
+    SbMethod* pMeth = dynamic_cast<SbMethod*>( p );
     if( pMeth == nullptr )
     {
         // TODO: Check vba behavior concernig missing function
@@ -4403,7 +4400,7 @@ Any SAL_CALL ModuleInvocationProxy::invoke( const OUString& rFunction,
     }
 
     SbxVariable* p = xScopeObj->Find( aFunctionName, SbxClassType::Method );
-    SbMethod* pMeth = p != nullptr ? dynamic_cast<SbMethod*>( p ) : nullptr;
+    SbMethod* pMeth = dynamic_cast<SbMethod*>( p );
     if( pMeth == nullptr )
     {
         // TODO: Check vba behavior concernig missing function
@@ -4670,8 +4667,7 @@ bool handleToStringForCOMObjects( SbxObject* pObj, SbxValue* pVal )
 {
     bool bSuccess = false;
 
-    SbUnoObject* pUnoObj = nullptr;
-    if( pObj != nullptr && (pUnoObj = dynamic_cast<SbUnoObject*>( pObj)) != nullptr  )
+    if( auto pUnoObj = dynamic_cast<SbUnoObject*>( pObj) )
     {
         // Only for native COM objects
         if( pUnoObj->isNativeCOMObject() )
diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx
index 1d9bacb..67108d8 100644
--- a/basic/source/runtime/runtime.cxx
+++ b/basic/source/runtime/runtime.cxx
@@ -1885,7 +1885,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, SbxVariableRef& refVar, b
             Reference< XInterface > xComListener;
 
             SbxBase* pObj = refVal->GetObject();
-            SbUnoObject* pUnoObj = (pObj != nullptr) ? dynamic_cast<SbUnoObject*>( pObj ) : nullptr;
+            SbUnoObject* pUnoObj = dynamic_cast<SbUnoObject*>( pObj );
             if( pUnoObj != nullptr )
             {
                 Any aControlAny = pUnoObj->getUnoAny();
@@ -3189,10 +3189,12 @@ bool SbiRuntime::checkClass_Impl( const SbxVariableRef& refVal,
     SbxDataType t = refVal->GetType();
     SbxVariable* pVal = refVal.get();
     // we don't know the type of uno properties that are (maybevoid)
-    if ( t == SbxEMPTY && nullptr != dynamic_cast<const SbUnoProperty*>( refVal.get() ) )
+    if ( t == SbxEMPTY )
     {
-        SbUnoProperty* pProp = static_cast<SbUnoProperty*>(pVal);
-        t = pProp->getRealType();
+        if ( auto pProp = dynamic_cast<SbUnoProperty*>( refVal.get() ) )
+        {
+            t = pProp->getRealType();
+        }
     }
     if( t == SbxOBJECT )
     {


More information about the Libreoffice-commits mailing list