[Libreoffice-commits] core.git: avmedia/source compilerplugins/clang framework/inc sal/qa vcl/osx

Stephan Bergmann sbergman at redhat.com
Fri Jun 3 08:58:59 UTC 2016


 avmedia/source/macavf/player.mm          |    2 
 avmedia/source/macavf/window.mm          |    2 
 compilerplugins/clang/stringconstant.cxx |   14 ++++++
 compilerplugins/clang/typecheck.cxx      |   10 ++++
 compilerplugins/clang/typecheck.hxx      |    2 
 framework/inc/protocols.h                |   20 ++++----
 sal/qa/rtl/oustring/rtl_OUString2.cxx    |   53 +++++-----------------
 vcl/osx/printaccessoryview.mm            |   72 +++++++++++++++----------------
 8 files changed, 86 insertions(+), 89 deletions(-)

New commits:
commit 643b70006fd5f6762561696421808f20d4e1e86f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Jun 3 10:58:26 2016 +0200

    Teach loplugin:stringconstant about RTL_CONSTASCII_STRINGPARAM
    
    Change-Id: I8ff0e104aad045f3835dc8facc760a8339b1d088

diff --git a/avmedia/source/macavf/player.mm b/avmedia/source/macavf/player.mm
index 4f753c3..e747364 100644
--- a/avmedia/source/macavf/player.mm
+++ b/avmedia/source/macavf/player.mm
@@ -392,7 +392,7 @@ uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber()
 sal_Bool SAL_CALL Player::supportsService( const ::rtl::OUString& ServiceName )
     throw (uno::RuntimeException)
 {
-    return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( AVMEDIA_MACAVF_PLAYER_SERVICENAME ) );
+    return ServiceName == AVMEDIA_MACAVF_PLAYER_SERVICENAME;
 }
 
 
diff --git a/avmedia/source/macavf/window.mm b/avmedia/source/macavf/window.mm
index 0ddee7f..6bfd6c1 100644
--- a/avmedia/source/macavf/window.mm
+++ b/avmedia/source/macavf/window.mm
@@ -282,7 +282,7 @@ void SAL_CALL Window::removeEventListener( const uno::Reference< lang::XEventLis
 sal_Bool SAL_CALL Window::supportsService( const ::rtl::OUString& ServiceName )
     throw (uno::RuntimeException)
 {
-    return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( AVMEDIA_MACAVF_WINDOW_SERVICENAME ) );
+    return ServiceName == AVMEDIA_MACAVF_WINDOW_SERVICENAME;
 }
 
 
diff --git a/compilerplugins/clang/stringconstant.cxx b/compilerplugins/clang/stringconstant.cxx
index 456413c..c68d58f 100644
--- a/compilerplugins/clang/stringconstant.cxx
+++ b/compilerplugins/clang/stringconstant.cxx
@@ -821,6 +821,20 @@ bool StringConstant::isStringConstant(
     assert(embeddedNuls != nullptr);
     assert(terminatingNul != nullptr);
     QualType t = expr->getType();
+    // Look inside RTL_CONSTASCII_STRINGPARAM:
+    if (loplugin::TypeCheck(t).Pointer().Const().Char()) {
+        auto e2 = dyn_cast<UnaryOperator>(expr);
+        if (e2 == nullptr || e2->getOpcode() != UO_AddrOf) {
+            return false;
+        }
+        auto e3 = dyn_cast<ArraySubscriptExpr>(
+            e2->getSubExpr()->IgnoreParenImpCasts());
+        if (e3 == nullptr || !isZero(e3->getIdx()->IgnoreParenImpCasts())) {
+            return false;
+        }
+        expr = e3->getBase()->IgnoreParenImpCasts();
+        t = expr->getType();
+    }
     if (!(t->isConstantArrayType() && t.isConstQualified()
           && (loplugin::TypeCheck(t->getAsArrayTypeUnsafe()->getElementType())
               .Char())))
diff --git a/compilerplugins/clang/typecheck.cxx b/compilerplugins/clang/typecheck.cxx
index e185643..800a2d2 100644
--- a/compilerplugins/clang/typecheck.cxx
+++ b/compilerplugins/clang/typecheck.cxx
@@ -39,6 +39,16 @@ TypeCheck TypeCheck::LvalueReference() const {
     return TypeCheck();
 }
 
+TypeCheck TypeCheck::Pointer() const {
+    if (!type_.isNull()) {
+        auto const t = type_->getAs<clang::PointerType>();
+        if (t != nullptr) {
+            return TypeCheck(t->getPointeeType());
+        }
+    }
+    return TypeCheck();
+}
+
 TypeCheck TypeCheck::NotSubstTemplateTypeParmType() const {
     return
         (!type_.isNull()
diff --git a/compilerplugins/clang/typecheck.hxx b/compilerplugins/clang/typecheck.hxx
index 70e3d8c..c49adcc 100644
--- a/compilerplugins/clang/typecheck.hxx
+++ b/compilerplugins/clang/typecheck.hxx
@@ -31,6 +31,8 @@ public:
 
     TerminalCheck Char() const;
 
+    TypeCheck Pointer() const;
+
     TypeCheck LvalueReference() const;
 
     template<std::size_t N> inline NamespaceCheck Class(char const (& id)[N])
diff --git a/framework/inc/protocols.h b/framework/inc/protocols.h
index fafba56..d729d6f 100644
--- a/framework/inc/protocols.h
+++ b/framework/inc/protocols.h
@@ -86,34 +86,34 @@ class ProtocolCheck
         switch(eRequired)
         {
             case E_PRIVATE:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_PRIVATE));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_PRIVATE);
                 break;
             case E_PRIVATE_OBJECT:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_PRIVATE_OBJECT));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_PRIVATE_OBJECT);
                 break;
             case E_PRIVATE_STREAM:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_PRIVATE_STREAM));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_PRIVATE_STREAM);
                 break;
             case E_PRIVATE_FACTORY:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_PRIVATE_FACTORY));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_PRIVATE_FACTORY);
                 break;
             case E_SLOT:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_SLOT));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_SLOT);
                 break;
             case E_UNO:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_UNO));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_UNO);
                 break;
             case E_MACRO:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_MACRO));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_MACRO);
                 break;
             case E_SERVICE:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_SERVICE));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_SERVICE);
                 break;
             case E_MAILTO:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_MAILTO));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_MAILTO);
                 break;
             case E_NEWS:
-                bRet = sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(SPECIALPROTOCOL_NEWS));
+                bRet = sURL.startsWith(SPECIALPROTOCOL_NEWS);
                 break;
             default:
                 bRet = sal_False;
diff --git a/sal/qa/rtl/oustring/rtl_OUString2.cxx b/sal/qa/rtl/oustring/rtl_OUString2.cxx
index 6c44741..00a7f66 100644
--- a/sal/qa/rtl/oustring/rtl_OUString2.cxx
+++ b/sal/qa/rtl/oustring/rtl_OUString2.cxx
@@ -925,32 +925,16 @@ public:
 };
 
 void indexOfAscii::test() {
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), rtl::OUString().indexOf(""));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), rtl::OUString().lastIndexOf(""));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), rtl::OUString("foo").indexOf("foo"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), rtl::OUString("foo").lastIndexOf("foo"));
     CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(-1),
-        rtl::OUString().indexOfAsciiL(RTL_CONSTASCII_STRINGPARAM("")));
+        sal_Int32(2), rtl::OUString("fofoobar").indexOf("foo"));
     CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(-1),
-        rtl::OUString().lastIndexOfAsciiL(RTL_CONSTASCII_STRINGPARAM("")));
+        sal_Int32(3), rtl::OUString("foofoofob").lastIndexOf("foo"));
     CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(0),
-        rtl::OUString("foo").indexOfAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("foo")));
-    CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(0),
-        rtl::OUString("foo").lastIndexOfAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("foo")));
-    CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(2),
-        rtl::OUString("fofoobar").indexOfAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("foo")));
-    CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(3),
-        rtl::OUString("foofoofob").
-        lastIndexOfAsciiL(RTL_CONSTASCII_STRINGPARAM("foo")));
-    CPPUNIT_ASSERT_EQUAL(
-        sal_Int32(3),
-        rtl::OUString("foofoobar").indexOfAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("foo"), 1));
+        sal_Int32(3), rtl::OUString("foofoobar").indexOf("foo", 1));
 }
 
 class endsWith: public CppUnit::TestFixture {
@@ -963,24 +947,11 @@ public:
 };
 
 void endsWith::test() {
-    CPPUNIT_ASSERT_EQUAL(
-        true,
-        rtl::OUString().endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM("")));
-    CPPUNIT_ASSERT_EQUAL(
-        false,
-        rtl::OUString().endsWithAsciiL(RTL_CONSTASCII_STRINGPARAM("foo")));
-    CPPUNIT_ASSERT_EQUAL(
-        true,
-        rtl::OUString("bar").endsWithAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("bar")));
-    CPPUNIT_ASSERT_EQUAL(
-        true,
-        rtl::OUString("foobar").endsWithAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("bar")));
-    CPPUNIT_ASSERT_EQUAL(
-        false,
-        rtl::OUString("FOOBAR").endsWithAsciiL(
-            RTL_CONSTASCII_STRINGPARAM("bar")));
+    CPPUNIT_ASSERT_EQUAL(true, rtl::OUString().endsWith(""));
+    CPPUNIT_ASSERT_EQUAL(false, rtl::OUString().endsWith("foo"));
+    CPPUNIT_ASSERT_EQUAL(true, rtl::OUString("bar").endsWith("bar"));
+    CPPUNIT_ASSERT_EQUAL(true, rtl::OUString("foobar").endsWith("bar"));
+    CPPUNIT_ASSERT_EQUAL(false, rtl::OUString("FOOBAR").endsWith("bar"));
 }
 
 class isEmpty: public CppUnit::TestFixture {
diff --git a/vcl/osx/printaccessoryview.mm b/vcl/osx/printaccessoryview.mm
index db23d3c..e25bf7a 100644
--- a/vcl/osx/printaccessoryview.mm
+++ b/vcl/osx/printaccessoryview.mm
@@ -259,7 +259,7 @@ public:
             if( pVal )
             {
                 // ugly
-                if( name_it->second.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("PrintContent")) )
+                if( name_it->second == "PrintContent" )
                    pVal->Value <<= i_bValue ? sal_Int32(2) : sal_Int32(0);
                else
                    pVal->Value <<= i_bValue;
@@ -301,7 +301,7 @@ public:
                        -1;
 
             std::map< int, rtl::OUString >::const_iterator name_it = maTagToPropertyName.find( nTag );
-            if( name_it != maTagToPropertyName.end() && ! name_it->second.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("PrintContent")) )
+            if( name_it != maTagToPropertyName.end() && name_it->second != "PrintContent" )
             {
                 vcl::PrinterController * mpController = [mpAccessoryController printerController];
                 BOOL bEnabled = mpController->isUIOptionEnabled( name_it->second ) ? YES : NO;
@@ -889,7 +889,7 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
     aFieldRect.origin.y = rCurY - aFieldRect.size.height;
     [pFieldView setFrame: aFieldRect];
 
-    if( rCtrlType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Range" ) ) )
+    if( rCtrlType == "Range" )
     {
         // add a stepper control
         NSRect aStepFrame = { { aFieldRect.origin.x + aFieldRect.size.width + 5,
@@ -1011,29 +1011,29 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
         for( int n = 0; n < aOptProp.getLength(); n++ )
         {
             const beans::PropertyValue& rEntry( aOptProp[ n ] );
-            if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ControlType")) )
+            if( rEntry.Name == "ControlType" )
             {
                 rEntry.Value >>= aCtrlType;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Choices")) )
+            else if( rEntry.Name == "Choices" )
             {
                 rEntry.Value >>= aChoices;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ChoicesDisabled")) )
+            else if( rEntry.Name == "ChoicesDisabled" )
             {
                 rEntry.Value >>= aChoicesDisabled;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Property")) )
+            else if( rEntry.Name == "Property" )
             {
                 PropertyValue aVal;
                 rEntry.Value >>= aVal;
                 aPropertyName = aVal.Name;
-                if( aPropertyName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("PrintContent")) )
+                if( aPropertyName == "PrintContent" )
                     aVal.Value >>= aSelectionChecked;
             }
         }
-        if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Radio")) &&
-            aPropertyName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("PrintContent")) &&
+        if( aCtrlType == "Radio" &&
+            aPropertyName == "PrintContent" &&
             aChoices.getLength() > 2 )
         {
             bAddSelectionCheckBox = true;
@@ -1062,74 +1062,74 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
         for( int n = 0; n < aOptProp.getLength(); n++ )
         {
             const beans::PropertyValue& rEntry( aOptProp[ n ] );
-            if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Text")) )
+            if( rEntry.Name == "Text" )
             {
                 rEntry.Value >>= aText;
                 aText = filterAccelerator( aText );
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ControlType")) )
+            else if( rEntry.Name == "ControlType" )
             {
                 rEntry.Value >>= aCtrlType;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Choices")) )
+            else if( rEntry.Name == "Choices" )
             {
                 rEntry.Value >>= aChoices;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Property")) )
+            else if( rEntry.Name == "Property" )
             {
                 PropertyValue aVal;
                 rEntry.Value >>= aVal;
                 aPropertyName = aVal.Name;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Enabled")) )
+            else if( rEntry.Name == "Enabled" )
             {
                 sal_Bool bValue = true;
                 rEntry.Value >>= bValue;
                 bEnabled = bValue;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("MinValue")) )
+            else if( rEntry.Name == "MinValue" )
             {
                 rEntry.Value >>= nMinValue;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("MaxValue")) )
+            else if( rEntry.Name == "MaxValue" )
             {
                 rEntry.Value >>= nMaxValue;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("AttachToDependency")) )
+            else if( rEntry.Name == "AttachToDependency" )
             {
                 nAttachOffset = 20;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("InternalUIOnly")) )
+            else if( rEntry.Name == "InternalUIOnly" )
             {
                 sal_Bool bValue = false;
                 rEntry.Value >>= bValue;
                 bIgnore = bValue;
             }
-            else if( rEntry.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("GroupingHint")) )
+            else if( rEntry.Name == "GroupingHint" )
             {
                 rEntry.Value >>= aGroupHint;
             }
         }
 
-        if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Group")) ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Subgroup")) ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Radio")) ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("List"))  ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Edit"))  ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Range"))  ||
-            aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Bool")) )
+        if( aCtrlType == "Group" ||
+            aCtrlType == "Subgroup" ||
+            aCtrlType == "Radio" ||
+            aCtrlType == "List"  ||
+            aCtrlType == "Edit"  ||
+            aCtrlType == "Range"  ||
+            aCtrlType == "Bool" )
         {
             bool bIgnoreSubgroup = false;
 
             // with `setAccessoryView' method only one accessory view can be set
             // so create this single accessory view as tabbed for grouping
-            if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Group"))
+            if( aCtrlType == "Group"
                 || ! pCurParent
-                || ( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Subgroup")) && nCurY < -250 && ! bIgnore ) 
+                || ( aCtrlType == "Subgroup" && nCurY < -250 && ! bIgnore )
                )
             {
                 rtl::OUString aGroupTitle( aText );
-                if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Subgroup")) )
+                if( aCtrlType == "Subgroup" )
                     aGroupTitle = pControllerProperties->getMoreString();
 
                 // set size of current parent
@@ -1163,7 +1163,7 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
                 }
             }
 
-            if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Subgroup")) && pCurParent )
+            if( aCtrlType == "Subgroup" && pCurParent )
             {
                 bIgnoreSubgroup = bIgnore;
                 if( bIgnore )
@@ -1175,7 +1175,7 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
             {
                 continue;
             }
-            else if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Bool")) && pCurParent )
+            else if( aCtrlType == "Bool" && pCurParent )
             {
                 sal_Bool bVal = false;
                 PropertyValue* pVal = pController->getValue( aPropertyName );
@@ -1185,7 +1185,7 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
                          aText, true, aPropertyName, bVal,
                          aRightColumn, pControllerProperties, pCtrlTarget );
             }
-            else if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Radio")) && pCurParent )
+            else if( aCtrlType == "Radio" && pCurParent )
             {
                 // get currently selected value
                 sal_Int32 nSelectVal = 0;
@@ -1198,7 +1198,7 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
                           aLeftColumn, aRightColumn,
                           pControllerProperties, pCtrlTarget );
             }
-            else if( aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("List")) && pCurParent )
+            else if( aCtrlType == "List" && pCurParent )
             {
                 PropertyValue* pVal = pController->getValue( aPropertyName );
                 sal_Int32 aSelectVal = 0;
@@ -1210,8 +1210,8 @@ static void addEdit( NSView* pCurParent, long& rCurX, long& rCurY, long nAttachO
                          aLeftColumn, aRightColumn,
                          pControllerProperties, pCtrlTarget );
             }
-            else if( (aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Edit"))
-                || aCtrlType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Range"))) && pCurParent )
+            else if( (aCtrlType == "Edit"
+                || aCtrlType == "Range") && pCurParent )
             {
                 // current value
                 PropertyValue* pVal = pController->getValue( aPropertyName );


More information about the Libreoffice-commits mailing list