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

Stephan Bergmann sbergman at redhat.com
Fri Jan 20 11:36:23 UTC 2017


 codemaker/source/cppumaker/cpputype.cxx |   56 ++------------------------------
 1 file changed, 5 insertions(+), 51 deletions(-)

New commits:
commit 550e0e42d9ccef1244299b2d6cbda18549f8af19
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Jan 20 12:33:07 2017 +0100

    Remove dynamic exception specifications from cppumaker-generated code
    
    See the mail thread starting at
    <https://lists.freedesktop.org/archives/libreoffice/2017-January/076665.html>
    "Dynamic Exception Specifications" for details.
    
    This leaves some #include <...Exception.hpp> in the generated code that are no
    longer needed by the generated files themselves.  But C++ implementation classes
    still use dynamic exception specifications and usually don't repeat the relevant
    #includes, so postpone removal until the implementation classes are cleaned up
    in a later step.
    
    Change-Id: Ifb7df3bb12f7f10c655b85cb0626afe5050479a4

diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index e3ce817..47aab6c 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -1103,10 +1103,6 @@ private:
     virtual sal_uInt32 checkInheritedMemberCount() const override
     { return BaseOffset(m_typeMgr, entity_).get(); }
 
-    static void dumpExceptionSpecification(
-        FileStream & out, std::vector< OUString > const & exceptions,
-        bool runtimeException);
-
     void dumpExceptionTypeName(
         FileStream & out, OUString const & prefix, sal_uInt32 index,
         OUString const & name);
@@ -1185,18 +1181,14 @@ void InterfaceType::dumpAttributes(FileStream & out) {
         dumpDeprecation(out, depr);
         out << "virtual ";
         dumpType(out, attr.type);
-        out << " SAL_CALL get" << attr.name << "()";
-        dumpExceptionSpecification(out, attr.getExceptions, true);
-        out << " = 0;\n";
+        out << " SAL_CALL get" << attr.name << "() = 0;\n";
         if (!attr.readOnly) {
             bool byRef = passByReference(attr.type);
             out << indent();
             dumpDeprecation(out, depr);
             out << "virtual void SAL_CALL set" << attr.name << "( ";
             dumpType(out, attr.type, byRef, byRef);
-            out << " _" << attr.name.toAsciiLowerCase() << " )";
-            dumpExceptionSpecification(out, attr.setExceptions, true);
-            out << " = 0;\n";
+            out << " _" << attr.name.toAsciiLowerCase() << " ) = 0;\n";
         }
     }
 }
@@ -1212,9 +1204,7 @@ void InterfaceType::dumpMethods(FileStream & out) {
         out << "virtual ";
         dumpType(out, method.returnType);
         out << " SAL_CALL " << method.name << "(";
-        if (method.parameters.empty()) {
-            out << ")";
-        } else {
+        if (!method.parameters.empty()) {
             out << " ";
             for (std::vector< unoidl::InterfaceTypeEntity::Method::Parameter >::
                      const_iterator j(method.parameters.begin());
@@ -1239,11 +1229,9 @@ void InterfaceType::dumpMethods(FileStream & out) {
                     out << ", ";
                 }
             }
-            out << " )";
+            out << " ";
         }
-        dumpExceptionSpecification(
-            out, method.exceptions, method.name != "acquire" && method.name != "release");
-        out << " = 0;\n";
+        out << ") = 0;\n";
     }
 }
 
@@ -1582,40 +1570,6 @@ void InterfaceType::dumpMethodsCppuDecl(
     }
 }
 
-void InterfaceType::dumpExceptionSpecification(
-    FileStream & out, std::vector< OUString > const & exceptions,
-    bool runtimeException)
-{
-    // Exception specifications are undesirable in production code, but make
-    // for useful assertions in debug builds (on platforms where they are
-    // enforced at runtime):
-#if !defined DBG_UTIL
-    out << " /*";
-#endif
-    out << " throw (";
-    bool bFirst = true;
-    for (const OUString& ex : exceptions)
-    {
-        if (ex != "com.sun.star.uno.RuntimeException") {
-            if (!bFirst) {
-                out << ", ";
-            }
-            out << codemaker::cpp::scopedCppName(u2b(ex));
-            bFirst = false;
-        }
-    }
-    if (runtimeException) {
-        if (!bFirst) {
-            out << ", ";
-        }
-        out << "::css::uno::RuntimeException, ::std::exception";
-    }
-    out << ")";
-#if !defined DBG_UTIL
-    out << " */";
-#endif
-}
-
 void InterfaceType::dumpExceptionTypeName(
     FileStream & out, OUString const & prefix, sal_uInt32 index,
     OUString const & name)


More information about the Libreoffice-commits mailing list