[Libreoffice-commits] core.git: configure.ac external/firebird external/libcmis ucb/source

Stephan Bergmann sbergman at redhat.com
Sun Nov 26 17:16:24 UTC 2017


 configure.ac                                   |   54 ++-
 external/firebird/UnpackedTarball_firebird.mk  |    1 
 external/firebird/c++17.patch                  |  301 ++++++++++++++++++
 external/libcmis/StaticLibrary_libcmis.mk      |   11 
 external/libcmis/UnpackedTarball_libcmis.mk    |    1 
 external/libcmis/c++17.patch.0                 |  412 +++++++++++++++++++++++++
 ucb/source/ucp/cmis/auth_provider.hxx          |    5 
 ucb/source/ucp/cmis/certvalidation_handler.hxx |    5 
 ucb/source/ucp/cmis/cmis_content.hxx           |    5 
 ucb/source/ucp/cmis/cmis_url.cxx               |    5 
 10 files changed, 760 insertions(+), 40 deletions(-)

New commits:
commit ae16870b2c84c116cde8279a47db106a4fa9d529
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Oct 25 19:52:08 2017 +0200

    Build as C++17 when GCC/Clang supports it
    
    ...and the gperf being used no longer emits "register" in C++ code.
    
    Unlike Clang with -Wdynamic-exception-spec ignored, at least GCC 7.2
    -std=gnu++17 always makes dynamic exception specs hard errors, which would cause
    errors both when building StaticLibrary_libcmis and when including
    libcmis/libcmis.hxx in ucb/source/ucp/cmis/.  So patch away all dynamic
    exception specifications from all external/libcmis include files indirectly
    included via libcmis/libcmis.hxx, and (to silence the remaining dynamic
    exception specifications in the innards of external/libcmis, which I did not
    feel like also patching away) build StaticLibrary_libcmis as C++03 if necessary,
    and wait for upstream libcmis to eventually be ported to C++17.
    
    And external/firebird needs to be built with CXXFLAGS_CXX11 (which amounts to
    C++17 with this patch) since 9206a08ada00e8762c4a634f242bd566028964bb "Upgrade
    to ICU 60.1", so the relevant dynamic exception specifications had to be patched
    away from its innards.
    
    Change-Id: I3a0c9ec83c7c1d413559459631970f69ab977f31
    Reviewed-on: https://gerrit.libreoffice.org/43851
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/configure.ac b/configure.ac
index 42239059cdcd..3d0e09733ec5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5962,6 +5962,24 @@ AC_MSG_RESULT([$cpp_library_name])
 AC_LANG_POP([C++])
 
 dnl ===================================================================
+dnl Check for gperf
+dnl ===================================================================
+AC_PATH_PROG(GPERF, gperf)
+if test -z "$GPERF"; then
+    AC_MSG_ERROR([gperf not found but needed. Install it.])
+fi
+if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
+    GPERF=`cygpath -m $GPERF`
+fi
+AC_MSG_CHECKING([gperf version])
+if test "`$GPERF --version | $EGREP ^GNU\ gperf | $AWK '{ print $3 }' | cut -d. -f1`" -ge "3"; then
+    AC_MSG_RESULT([OK])
+else
+    AC_MSG_ERROR([too old, you need at least 3.0.0])
+fi
+AC_SUBST(GPERF)
+
+dnl ===================================================================
 dnl C++11
 dnl ===================================================================
 
@@ -5972,8 +5990,11 @@ if test "$COM" = MSC; then
     # MSVC supports (a subset of) CXX11 without any switch
 elif test "$GCC" = "yes"; then
     HAVE_CXX11=
-    AC_MSG_CHECKING([whether $CXX supports C++14 or C++11])
-    for flag in -std=gnu++14 -std=gnu++1y -std=c++14 -std=c++1y -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x ; do
+    AC_MSG_CHECKING([whether $CXX supports C++17, C++14, or C++11])
+    dnl But only use C++17 if the gperf that is being used knows not to emit
+    dnl "register" in C++ output:
+    printf 'foo\n' | $GPERF -L C++ > conftest.inc
+    for flag in -std=gnu++17 -std=gnu++1z -std=c++17 -std=c++1z -std=gnu++14 -std=gnu++1y -std=c++14 -std=c++1y -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x ; do
         save_CXXFLAGS=$CXXFLAGS
         CXXFLAGS="$CXXFLAGS $flag -Werror"
         AC_LANG_PUSH([C++])
@@ -5981,6 +6002,16 @@ elif test "$GCC" = "yes"; then
             #include <algorithm>
             #include <functional>
             #include <vector>
+
+            #include <string.h>
+            #pragma GCC diagnostic push
+            #pragma GCC diagnostic ignored "-Wpragmas"
+                // make GCC not warn about next pragma
+            #pragma GCC diagnostic ignored "-Wdeprecated-register"
+                // make Clang with -std < C++17 not even warn about register
+            #include "conftest.inc"
+            #pragma GCC diagnostic pop
+
             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
                 std::sort(v.begin(), v.end(), fn);
             }
@@ -5992,6 +6023,7 @@ elif test "$GCC" = "yes"; then
             break
         fi
     done
+    rm conftest.inc
     if test "$HAVE_CXX11" = TRUE; then
         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
     else
@@ -7262,24 +7294,6 @@ fi
 AC_SUBST(ENABLE_LWP)
 
 dnl ===================================================================
-dnl Check for gperf
-dnl ===================================================================
-AC_PATH_PROG(GPERF, gperf)
-if test -z "$GPERF"; then
-    AC_MSG_ERROR([gperf not found but needed. Install it.])
-fi
-if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
-    GPERF=`cygpath -m $GPERF`
-fi
-AC_MSG_CHECKING([gperf version])
-if test "`$GPERF --version | $EGREP ^GNU\ gperf | $AWK '{ print $3 }' | cut -d. -f1`" -ge "3"; then
-    AC_MSG_RESULT([OK])
-else
-    AC_MSG_ERROR([too old, you need at least 3.0.0])
-fi
-AC_SUBST(GPERF)
-
-dnl ===================================================================
 dnl Check for building ODK
 dnl ===================================================================
 if test "$enable_odk" = no; then
diff --git a/external/firebird/UnpackedTarball_firebird.mk b/external/firebird/UnpackedTarball_firebird.mk
index f0cc5aea01b6..9c03f7c8755f 100644
--- a/external/firebird/UnpackedTarball_firebird.mk
+++ b/external/firebird/UnpackedTarball_firebird.mk
@@ -28,6 +28,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
 		external/firebird/libc++.patch \
 		external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1 \
 		external/firebird/0002-Backported-fix-for-CORE-5452-Segfault-when-engine-s-.patch.1 \
+		external/firebird/c++17.patch \
 ))
 
 ifeq ($(OS),WNT)
diff --git a/external/firebird/c++17.patch b/external/firebird/c++17.patch
new file mode 100644
index 000000000000..f5ac666bad16
--- /dev/null
+++ b/external/firebird/c++17.patch
@@ -0,0 +1,301 @@
+--- src/common/DynamicStrings.cpp
++++ src/common/DynamicStrings.cpp
+@@ -37,7 +37,7 @@
+ 
+ namespace Firebird {
+ 
+-unsigned makeDynamicStrings(unsigned length, ISC_STATUS* const dst, const ISC_STATUS* const src) throw(BadAlloc)
++unsigned makeDynamicStrings(unsigned length, ISC_STATUS* const dst, const ISC_STATUS* const src)
+ {
+ 	const ISC_STATUS* end = &src[length];
+ 
+--- src/common/DynamicStrings.h
++++ src/common/DynamicStrings.h
+@@ -34,7 +34,7 @@
+ 
+ namespace Firebird {
+ 
+-unsigned makeDynamicStrings(unsigned len, ISC_STATUS* const dst, const ISC_STATUS* const src) throw(BadAlloc);
++unsigned makeDynamicStrings(unsigned len, ISC_STATUS* const dst, const ISC_STATUS* const src);
+ char* findDynamicStrings(unsigned len, ISC_STATUS* ptr) throw();
+ 
+ } // namespace Firebird
+--- src/common/StatusArg.cpp
++++ src/common/StatusArg.cpp
+@@ -53,7 +53,7 @@
+ 
+ namespace Arg {
+ 
+-Base::Base(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc) :
++Base::Base(ISC_STATUS k, ISC_STATUS c) :
+ 	implementation(FB_NEW_POOL(*getDefaultMemoryPool()) ImplBase(k, c))
+ {
+ }
+@@ -94,28 +94,28 @@
+ 	assign(ex);
+ }
+ 
+-StatusVector::StatusVector(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc) :
++StatusVector::StatusVector(ISC_STATUS k, ISC_STATUS c) :
+ 	Base(FB_NEW_POOL(*getDefaultMemoryPool()) ImplStatusVector(k, c))
+ {
+ 	operator<<(*(static_cast<Base*>(this)));
+ }
+ 
+-StatusVector::StatusVector(const ISC_STATUS* s) throw(Firebird::BadAlloc) :
++StatusVector::StatusVector(const ISC_STATUS* s) :
+ 	Base(FB_NEW_POOL(*getDefaultMemoryPool()) ImplStatusVector(s))
+ {
+ }
+ 
+-StatusVector::StatusVector(const IStatus* s) throw(Firebird::BadAlloc) :
++StatusVector::StatusVector(const IStatus* s) :
+ 	Base(FB_NEW_POOL(*getDefaultMemoryPool()) ImplStatusVector(s))
+ {
+ }
+ 
+-StatusVector::StatusVector(const Exception& ex) throw(Firebird::BadAlloc) :
++StatusVector::StatusVector(const Exception& ex) :
+ 	Base(FB_NEW_POOL(*getDefaultMemoryPool()) ImplStatusVector(ex))
+ {
+ }
+ 
+-StatusVector::StatusVector() throw(Firebird::BadAlloc) :
++StatusVector::StatusVector() :
+ 	Base(FB_NEW_POOL(*getDefaultMemoryPool()) ImplStatusVector(0, 0))
+ {
+ }
+--- src/common/StatusArg.h
++++ src/common/StatusArg.h
+@@ -86,7 +86,7 @@
+ 		virtual ~ImplBase() { }
+ 	};
+ 
+-	Base(ISC_STATUS k, ISC_STATUS c) throw(Firebird::BadAlloc);
++	Base(ISC_STATUS k, ISC_STATUS c);
+ 	explicit Base(ImplBase* i) throw() : implementation(i) { }
+ 	~Base() throw() { delete implementation; }
+ 
+@@ -142,13 +142,13 @@
+ 		explicit ImplStatusVector(const Exception& ex) throw();
+ 	};
+ 
+-	StatusVector(ISC_STATUS k, ISC_STATUS v) throw(Firebird::BadAlloc);
++	StatusVector(ISC_STATUS k, ISC_STATUS v);
+ 
+ public:
+-	explicit StatusVector(const ISC_STATUS* s) throw(Firebird::BadAlloc);
+-	explicit StatusVector(const IStatus* s) throw(Firebird::BadAlloc);
+-	explicit StatusVector(const Exception& ex) throw(Firebird::BadAlloc);
+-	StatusVector() throw(Firebird::BadAlloc);
++	explicit StatusVector(const ISC_STATUS* s);
++	explicit StatusVector(const IStatus* s);
++	explicit StatusVector(const Exception& ex);
++	StatusVector();
+ 	~StatusVector() { }
+ 
+ 	const ISC_STATUS* value() const throw() { return implementation->value(); }
+--- src/common/classes/alloc.cpp
++++ src/common/classes/alloc.cpp
+@@ -1431,7 +1431,7 @@
+ 
+ 	~FreeObjects();
+ 
+-	FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) throw (OOM_EXCEPTION)
++	FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size)
+ 	{
+ 		size_t full_size = size + (from ? 0 : ListBuilder::MEM_OVERHEAD);
+ 		if (full_size > Limits::TOP_LIMIT)
+@@ -1498,7 +1498,7 @@
+ 	ListBuilder listBuilder;
+ 	Extent* currentExtent;
+ 
+-	MemBlock* newBlock(MemPool* pool, unsigned slot) throw (OOM_EXCEPTION);
++	MemBlock* newBlock(MemPool* pool, unsigned slot);
+ };
+ 
+ 
+@@ -1538,26 +1538,26 @@
+ 	AtomicCounter used_memory, mapped_memory;
+ 
+ private:
+-	MemBlock* alloc(size_t from, size_t& length, bool flagRedirect) throw (OOM_EXCEPTION);
++	MemBlock* alloc(size_t from, size_t& length, bool flagRedirect);
+ 	void releaseBlock(MemBlock *block) throw ();
+ 
+ public:
+-	void* allocate(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION);
+-	MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS) throw (OOM_EXCEPTION);
++	void* allocate(size_t size ALLOC_PARAMS);
++	MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS);
+ 
+ private:
+-	virtual void memoryIsExhausted(void) throw (OOM_EXCEPTION);
+-	void* allocRaw(size_t length) throw (OOM_EXCEPTION);
++	virtual void memoryIsExhausted(void);
++	void* allocRaw(size_t length);
+ 	static void release(void* block, bool flagDecr) throw ();
+ 	static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) throw ();
+-	void* getExtent(size_t from, size_t& to) throw (OOM_EXCEPTION);
++	void* getExtent(size_t from, size_t& to);
+ 
+ public:
+ 	static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) throw ();
+ 
+ 	// pass desired size, return actual extent size
+ 	template <class Extent>
+-	void newExtent(size_t& size, Extent** linkedList) throw (OOM_EXCEPTION);
++	void newExtent(size_t& size, Extent** linkedList);
+ 
+ private:
+ #ifdef USE_VALGRIND
+@@ -1667,7 +1667,7 @@
+ 
+ 
+ template <class ListBuilder, class Limits>
+-MemBlock* FreeObjects<ListBuilder, Limits>::newBlock(MemPool* pool, unsigned slot) throw (OOM_EXCEPTION)
++MemBlock* FreeObjects<ListBuilder, Limits>::newBlock(MemPool* pool, unsigned slot)
+ {
+ 	size_t size = Limits::getSize(slot);
+ 
+@@ -1902,7 +1902,7 @@
+ }
+ 
+ template <class Extent>
+-void MemPool::newExtent(size_t& size, Extent** linkedList) throw(OOM_EXCEPTION)
++void MemPool::newExtent(size_t& size, Extent** linkedList)
+ {
+ 	// No large enough block found. We need to extend the pool
+ 	void* memory = NULL;
+@@ -1967,7 +1967,7 @@
+ 	pool->setStatsGroup(newStats);
+ }
+ 
+-MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) throw (OOM_EXCEPTION)
++MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect)
+ {
+ 	MutexEnsureUnlock guard(mutex, "MemPool::alloc");
+ 	guard.enter();
+@@ -2026,7 +2026,7 @@
+ #ifdef DEBUG_GDS_ALLOC
+ 	, const char* fileName, int line
+ #endif
+-) throw (OOM_EXCEPTION)
++)
+ {
+ 	size_t length = from ? size : ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + GUARD_BYTES;
+ 	MemBlock* memory = alloc(from, length, true);
+@@ -2055,7 +2055,7 @@
+ }
+ 
+ 
+-void* MemPool::allocate(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION)
++void* MemPool::allocate(size_t size ALLOC_PARAMS)
+ {
+ 	MemBlock* memory = allocate2(0, size ALLOC_PASS_ARGS);
+ 
+@@ -2180,12 +2180,12 @@
+ 	releaseRaw(pool_destroying, hunk, hunk->length, false);
+ }
+ 
+-void MemPool::memoryIsExhausted(void) throw (OOM_EXCEPTION)
++void MemPool::memoryIsExhausted(void)
+ {
+ 	Firebird::BadAlloc::raise();
+ }
+ 
+-void* MemPool::allocRaw(size_t size) throw (OOM_EXCEPTION)
++void* MemPool::allocRaw(size_t size)
+ {
+ #ifndef USE_VALGRIND
+ 	if (size == DEFAULT_ALLOCATION)
+@@ -2245,7 +2245,7 @@
+ }
+ 
+ 
+-void* MemPool::getExtent(size_t from, size_t& to) throw(OOM_EXCEPTION)		// pass desired minimum size, return actual extent size
++void* MemPool::getExtent(size_t from, size_t& to)                     		// pass desired minimum size, return actual extent size
+ {
+ 	MemBlock* extent = allocate2(from, to ALLOC_ARGS);
+ 	return &extent->body;
+@@ -2348,7 +2348,7 @@
+ 	deallocate(block);
+ }
+ 
+-void* MemoryPool::calloc(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION)
++void* MemoryPool::calloc(size_t size ALLOC_PARAMS)
+ {
+ 	void* block = allocate(size ALLOC_PASS_ARGS);
+ 	memset(block, 0, size);
+@@ -2489,7 +2489,7 @@
+ 	MemPool::globalFree(block);
+ }
+ 
+-void* MemoryPool::allocate(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION)
++void* MemoryPool::allocate(size_t size ALLOC_PARAMS)
+ {
+ 	return pool->allocate(size ALLOC_PASS_ARGS);
+ }
+@@ -2547,11 +2547,11 @@
+ // in a case when we actually need "new" only with file/line information
+ // this version should be also present as a pair for "delete".
+ #ifdef DEBUG_GDS_ALLOC
+-void* operator new(size_t s) throw (OOM_EXCEPTION)
++void* operator new(size_t s)
+ {
+ 	return MemoryPool::globalAlloc(s ALLOC_ARGS);
+ }
+-void* operator new[](size_t s) throw (OOM_EXCEPTION)
++void* operator new[](size_t s)
+ {
+ 	return MemoryPool::globalAlloc(s ALLOC_ARGS);
+ }
+--- src/common/classes/alloc.h
++++ src/common/classes/alloc.h
+@@ -186,18 +186,18 @@
+ #define ALLOC_PASS_ARGS
+ #endif // DEBUG_GDS_ALLOC
+ 
+-	void* calloc(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION);
++	void* calloc(size_t size ALLOC_PARAMS);
+ 
+ #ifdef LIBC_CALLS_NEW
+ 	static void* globalAlloc(size_t s ALLOC_PARAMS) throw (OOM_EXCEPTION);
+ #else
+-	static void* globalAlloc(size_t s ALLOC_PARAMS) throw (OOM_EXCEPTION)
++	static void* globalAlloc(size_t s ALLOC_PARAMS)
+ 	{
+ 		return defaultMemoryManager->allocate(s ALLOC_PASS_ARGS);
+ 	}
+ #endif // LIBC_CALLS_NEW
+ 
+-	void* allocate(size_t size ALLOC_PARAMS) throw (OOM_EXCEPTION);
++	void* allocate(size_t size ALLOC_PARAMS);
+ 
+ 	static void globalFree(void* mem) throw ();
+ 	void deallocate(void* mem) throw ();
+@@ -295,20 +295,20 @@
+ 
+ // operators new and delete
+ 
+-inline void* operator new(size_t s ALLOC_PARAMS) throw (OOM_EXCEPTION)
++inline void* operator new(size_t s ALLOC_PARAMS)
+ {
+ 	return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
+ }
+-inline void* operator new[](size_t s ALLOC_PARAMS) throw (OOM_EXCEPTION)
++inline void* operator new[](size_t s ALLOC_PARAMS)
+ {
+ 	return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
+ }
+ 
+-inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) throw (OOM_EXCEPTION)
++inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
+ {
+ 	return pool.allocate(s ALLOC_PASS_ARGS);
+ }
+-inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) throw (OOM_EXCEPTION)
++inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
+ {
+ 	return pool.allocate(s ALLOC_PASS_ARGS);
+ }
diff --git a/external/libcmis/StaticLibrary_libcmis.mk b/external/libcmis/StaticLibrary_libcmis.mk
index b7e662465479..b3940b7a749a 100644
--- a/external/libcmis/StaticLibrary_libcmis.mk
+++ b/external/libcmis/StaticLibrary_libcmis.mk
@@ -23,6 +23,17 @@ $(eval $(call gb_StaticLibrary_add_cxxflags,libcmis,\
 ))
 endif
 
+# Build as C++03 if necessary to avoid GCC C++17 "error: ISO C++1z does not
+# allow dynamic exception specifications", until upstream libcmis is ported to
+# C++17:
+ifeq ($(COM)-$(COM_IS_CLANG),GCC-)
+$(eval $(call gb_StaticLibrary_add_cxxflags,libcmis, \
+    $(if $(filter -std=gnu++17 -std=gnu++1z -std=c++17 -std=c++1z, \
+            $(CXXFLAGS_CXX11)), \
+        $(gb_CXX03FLAGS)) \
+))
+endif
+
 $(eval $(call gb_StaticLibrary_set_include,libcmis, \
     -I$(call gb_UnpackedTarball_get_dir,libcmis/src/libcmis) \
     $$(INCLUDE) \
diff --git a/external/libcmis/UnpackedTarball_libcmis.mk b/external/libcmis/UnpackedTarball_libcmis.mk
index 3730888bf6b5..8ce0b03d10c4 100644
--- a/external/libcmis/UnpackedTarball_libcmis.mk
+++ b/external/libcmis/UnpackedTarball_libcmis.mk
@@ -20,6 +20,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,libcmis, \
 						external/libcmis/libcmis-fix-google-drive-2.patch \
 						external/libcmis/libcmis-sharepoint-repository-root.patch \
 						external/libcmis/libcmis-fix-error-handling.patch \
+						external/libcmis/c++17.patch.0 \
 ))
 
 ifeq ($(OS),WNT)
diff --git a/external/libcmis/c++17.patch.0 b/external/libcmis/c++17.patch.0
new file mode 100644
index 000000000000..e2e90f581610
--- /dev/null
+++ b/external/libcmis/c++17.patch.0
@@ -0,0 +1,412 @@
+--- src/libcmis/allowable-actions.cxx
++++ src/libcmis/allowable-actions.cxx
+@@ -62,7 +62,7 @@
+         }
+     }
+ 
+-    ObjectAction::Type ObjectAction::parseType( string type ) throw ( Exception )
++    ObjectAction::Type ObjectAction::parseType( string type )
+     {
+         Type value = DeleteObject;
+         if ( type == "canDeleteObject" )
+--- src/libcmis/allowable-actions.hxx
++++ src/libcmis/allowable-actions.hxx
+@@ -92,7 +92,7 @@
+             /** Parses the permission name into one of the enum values or throws
+                 an exception for invalid input strings.
+               */
+-            static Type parseType( std::string type ) throw ( Exception );
++            static Type parseType( std::string type );
+ 
+     };
+ 
+--- src/libcmis/document.hxx
++++ src/libcmis/document.hxx
+@@ -56,7 +56,7 @@
+ 
+                 @return the parents folder if any.
+               */
+-            virtual std::vector< boost::shared_ptr< Folder > > getParents( ) throw ( Exception ) = 0;
++            virtual std::vector< boost::shared_ptr< Folder > > getParents( ) = 0;
+             
+             /** Get the content stream without using a temporary file.
+ 
+@@ -74,7 +74,7 @@
+                     guaranteed.
+               */
+             virtual boost::shared_ptr< std::istream > getContentStream( std::string streamId = std::string( ) ) 
+-                        throw ( Exception ) = 0;
++                        = 0;
+ 
+             /** Set or replace the content stream of the document.
+ 
+@@ -88,7 +88,7 @@
+                                 capability.
+               */
+             virtual void setContentStream( boost::shared_ptr< std::ostream > os, std::string contentType,
+-                                           std::string filename, bool overwrite = true ) throw ( Exception ) = 0;
++                                           std::string filename, bool overwrite = true ) = 0;
+ 
+             /** Get the content mime type.
+               */
+@@ -107,12 +107,12 @@
+ 
+                 \return the Private Working Copy document
+               */
+-            virtual boost::shared_ptr< Document > checkOut( ) throw ( Exception ) = 0;
++            virtual boost::shared_ptr< Document > checkOut( ) = 0;
+ 
+             /** Cancels the checkout if the document is a private working copy, or
+                 throws an exception.
+               */
+-            virtual void cancelCheckout( ) throw ( Exception ) = 0;
++            virtual void cancelCheckout( ) = 0;
+ 
+             /** Check in the private working copy and create a new version or throw
+                 an exception.
+@@ -131,9 +131,9 @@
+             virtual boost::shared_ptr< Document > checkIn( bool isMajor, std::string comment,
+                                   const std::map< std::string, PropertyPtr >& properties,
+                                   boost::shared_ptr< std::ostream > stream,
+-                                  std::string contentType, std::string fileName ) throw ( Exception ) = 0;
++                                  std::string contentType, std::string fileName ) = 0;
+ 
+-            virtual std::vector< boost::shared_ptr< Document > > getAllVersions( ) throw ( Exception ) = 0;
++            virtual std::vector< boost::shared_ptr< Document > > getAllVersions( ) = 0;
+ 
+             // virtual methods form Object
+             virtual std::vector< std::string > getPaths( );
+--- src/libcmis/folder.cxx
++++ src/libcmis/folder.cxx
+@@ -40,7 +40,7 @@
+         return paths;
+     }
+     
+-    libcmis::FolderPtr Folder::getFolderParent( ) throw ( libcmis::Exception )
++    libcmis::FolderPtr Folder::getFolderParent( )
+     {
+         if ( getAllowableActions( ).get() && !getAllowableActions()->isAllowed( libcmis::ObjectAction::GetFolderParent ) )
+             throw libcmis::Exception( string( "GetFolderParent not allowed on node " ) + getId() );
+--- src/libcmis/folder.hxx
++++ src/libcmis/folder.hxx
+@@ -59,20 +59,20 @@
+ 
+             virtual std::vector< std::string > getPaths( );
+ 
+-            virtual ::boost::shared_ptr< Folder > getFolderParent( ) throw ( Exception );
+-            virtual std::vector< ObjectPtr > getChildren( ) throw ( Exception ) = 0;
++            virtual ::boost::shared_ptr< Folder > getFolderParent( );
++            virtual std::vector< ObjectPtr > getChildren( ) = 0;
+             virtual std::string getParentId( );
+             virtual std::string getPath( );
+ 
+             virtual bool isRootFolder( );
+ 
+             virtual ::boost::shared_ptr< Folder > createFolder( const std::map< std::string, PropertyPtr >& properties )
+-                throw ( libcmis::Exception ) = 0;
++                = 0;
+             virtual ::boost::shared_ptr< Document > createDocument( const std::map< std::string, PropertyPtr >& properties,
+-                                    boost::shared_ptr< std::ostream > os, std::string contentType, std::string fileName ) throw ( Exception ) = 0;
++                                    boost::shared_ptr< std::ostream > os, std::string contentType, std::string fileName ) = 0;
+ 
+             virtual std::vector< std::string > removeTree( bool allVersion = true, UnfileObjects::Type unfile = UnfileObjects::Delete,
+-                                    bool continueOnError = false ) throw ( Exception ) = 0;
++                                    bool continueOnError = false ) = 0;
+         
+             virtual std::string toString( );
+     };
+--- src/libcmis/object.cxx
++++ src/libcmis/object.cxx
+@@ -226,7 +226,6 @@
+     }
+ 
+     ObjectPtr Object::addSecondaryType( string id, PropertyPtrMap properties )
+-        throw ( Exception )
+     {
+         // First make sure the cmis:secondaryObjectTypeIds property can be defined
+         map< string, PropertyTypePtr >& propertyTypes = getTypeDescription( )->
+@@ -253,7 +252,7 @@
+         return updateProperties( newProperties );
+     }
+ 
+-    ObjectPtr Object::removeSecondaryType( string id ) throw ( Exception )
++    ObjectPtr Object::removeSecondaryType( string id )
+     {
+         // First make sure the cmis:secondaryObjectTypeIds property can be defined
+         map< string, PropertyTypePtr >& propertyTypes = getTypeDescription( )->
+@@ -297,12 +296,12 @@
+         return m_typeDescription;
+     }
+ 
+-    vector< RenditionPtr> Object::getRenditions( string /*filter*/ ) throw ( Exception )
++    vector< RenditionPtr> Object::getRenditions( string /*filter*/ )
+     {
+         return m_renditions;
+     }
+ 
+-    string Object::getThumbnailUrl( ) throw ( Exception )
++    string Object::getThumbnailUrl( )
+     {
+         string url;
+         vector< RenditionPtr > renditions = getRenditions( );
+--- src/libcmis/object.hxx
++++ src/libcmis/object.hxx
+@@ -129,8 +129,7 @@
+               */
+             virtual boost::shared_ptr< Object > addSecondaryType(
+                                                         std::string id,
+-                                                        PropertyPtrMap properties )
+-                throw ( Exception );
++                                                        PropertyPtrMap properties );
+ 
+             /** Convenience function removing a secondary type from the object.
+ 
+@@ -154,8 +153,7 @@
+                     to throw a constraint exception if it doesn't allow the
+                     operation.
+               */
+-            virtual boost::shared_ptr< Object > removeSecondaryType( std::string id )
+-                throw ( Exception );
++            virtual boost::shared_ptr< Object > removeSecondaryType( std::string id );
+ 
+             /** Gives access to the properties of the object.
+ 
+@@ -179,8 +177,7 @@
+                 \attention
+                     The streamId of the rendition is used in getContentStream( )
+               */
+-            virtual std::vector< RenditionPtr> getRenditions( std::string filter = std::string( ) )
+-                throw ( Exception );
++            virtual std::vector< RenditionPtr> getRenditions( std::string filter = std::string( ) );
+             virtual AllowableActionsPtr getAllowableActions( ) { return m_allowableActions; }
+ 
+             /** Update the object properties and return the updated object.
+@@ -191,21 +188,21 @@
+                     are still two different instances to ease memory handling.
+               */
+             virtual boost::shared_ptr< Object > updateProperties(
+-                        const PropertyPtrMap& properties ) throw ( Exception ) = 0;
++                        const PropertyPtrMap& properties ) = 0;
+ 
+             virtual ObjectTypePtr getTypeDescription( );
+ 
+             /** Reload the data from the server.
+               */
+-            virtual void refresh( ) throw ( Exception ) = 0;
++            virtual void refresh( ) = 0;
+             virtual time_t getRefreshTimestamp( ) { return m_refreshTimestamp; }
+ 
+-            virtual void remove( bool allVersions = true ) throw ( Exception ) = 0;
++            virtual void remove( bool allVersions = true ) = 0;
+ 
+-            virtual void move( boost::shared_ptr< Folder > source, boost::shared_ptr< Folder > destination ) throw ( Exception ) = 0;
++            virtual void move( boost::shared_ptr< Folder > source, boost::shared_ptr< Folder > destination ) = 0;
+ 
+ 
+-            virtual std::string getThumbnailUrl( ) throw ( Exception );
++            virtual std::string getThumbnailUrl( );
+ 
+             /** Dump the object as a string for debugging or display purpose.
+               */
+--- src/libcmis/object-type.cxx
++++ src/libcmis/object-type.cxx
+@@ -293,22 +293,22 @@
+         }
+     }
+ 
+-    void ObjectType::refresh( ) throw ( Exception )
++    void ObjectType::refresh( )
+     {
+         throw Exception( "ObjectType::refresh() shouldn't be called" );
+     }
+ 
+-    ObjectTypePtr  ObjectType::getParentType( ) throw ( Exception )
++    ObjectTypePtr  ObjectType::getParentType( )
+     {
+         throw Exception( "ObjectType::getParentType() shouldn't be called" );
+     }
+ 
+-    ObjectTypePtr  ObjectType::getBaseType( ) throw ( Exception )
++    ObjectTypePtr  ObjectType::getBaseType( )
+     {
+         throw Exception( "ObjectType::getBaseType() shouldn't be called" );
+     }
+ 
+-    vector< ObjectTypePtr > ObjectType::getChildren( ) throw ( Exception )
++    vector< ObjectTypePtr > ObjectType::getChildren( )
+     {
+         throw Exception( "ObjectType::getChildren() shouldn't be called" );
+     }
+--- src/libcmis/object-type.hxx
++++ src/libcmis/object-type.hxx
+@@ -94,7 +94,7 @@
+                     This method needs to be implemented in subclasses or it will
+                     do nothing
+              */
+-            virtual void refresh( ) throw ( Exception );
++            virtual void refresh( );
+             virtual time_t getRefreshTimestamp( ) const;
+ 
+             std::string getId( ) const;
+@@ -104,9 +104,9 @@
+             std::string getQueryName( ) const;
+             std::string getDescription( ) const;
+ 
+-            virtual boost::shared_ptr< ObjectType >  getParentType( ) throw ( Exception );
+-            virtual boost::shared_ptr< ObjectType >  getBaseType( ) throw ( Exception );
+-            virtual std::vector< boost::shared_ptr< ObjectType > > getChildren( ) throw ( Exception );
++            virtual boost::shared_ptr< ObjectType >  getParentType( );
++            virtual boost::shared_ptr< ObjectType >  getBaseType( );
++            virtual std::vector< boost::shared_ptr< ObjectType > > getChildren( );
+ 
+             /** Get the parent type id without extracting the complete parent type from
+                 the repository. This is mainly provided for performance reasons.
+--- src/libcmis/session-factory.cxx
++++ src/libcmis/session-factory.cxx
+@@ -57,7 +57,7 @@
+ 
+     Session* SessionFactory::createSession( string bindingUrl, string username,
+             string password, string repository, bool noSslCheck,
+-            libcmis::OAuth2DataPtr oauth2, bool verbose ) throw ( Exception )
++            libcmis::OAuth2DataPtr oauth2, bool verbose )
+     {
+         Session* session = NULL;
+ 
+@@ -138,7 +138,7 @@
+     }
+ 
+     vector< RepositoryPtr > SessionFactory::getRepositories( string bindingUrl,
+-            string username, string password, bool verbose ) throw ( Exception )
++            string username, string password, bool verbose )
+     {
+         vector< RepositoryPtr > repos;
+ 
+--- src/libcmis/session-factory.hxx
++++ src/libcmis/session-factory.hxx
+@@ -128,7 +128,7 @@
+                     std::string password = std::string( ),
+                     std::string repositoryId = std::string( ),
+                     bool noSslCheck = false,
+-                    OAuth2DataPtr oauth2 = OAuth2DataPtr(), bool verbose = false ) throw ( Exception );
++                    OAuth2DataPtr oauth2 = OAuth2DataPtr(), bool verbose = false );
+ 
+             /**
+                 Gets the informations of the repositories on the server.
+@@ -142,7 +142,7 @@
+             static std::vector< RepositoryPtr > getRepositories( std::string bindingUrl,
+                     std::string username = std::string( ),
+                     std::string password = std::string( ),
+-                    bool verbose = false ) throw ( Exception );
++                    bool verbose = false );
+     };
+ }
+ 
+--- src/libcmis/session.hxx
++++ src/libcmis/session.hxx
+@@ -47,7 +47,7 @@
+ 
+             /** Get the current repository.
+               */
+-            virtual RepositoryPtr getRepository( ) throw ( Exception ) = 0;
++            virtual RepositoryPtr getRepository( ) = 0;
+ 
+             virtual std::vector< RepositoryPtr > getRepositories( ) = 0;
+ 
+@@ -61,27 +61,27 @@
+ 
+             /** Get the Root folder of the repository
+               */
+-            virtual FolderPtr getRootFolder() throw ( Exception )= 0;
++            virtual FolderPtr getRootFolder() = 0;
+             
+             /** Get a CMIS object from its ID.
+               */
+-            virtual ObjectPtr getObject( std::string id ) throw ( Exception ) = 0;
++            virtual ObjectPtr getObject( std::string id ) = 0;
+ 
+             /** Get a CMIS object from one of its path.
+               */
+-            virtual ObjectPtr getObjectByPath( std::string path ) throw ( Exception ) = 0;
++            virtual ObjectPtr getObjectByPath( std::string path ) = 0;
+ 
+             /** Get a CMIS folder from its ID.
+               */
+-            virtual libcmis::FolderPtr getFolder( std::string id ) throw ( Exception ) = 0;
++            virtual libcmis::FolderPtr getFolder( std::string id ) = 0;
+ 
+             /** Get a CMIS object type from its ID.
+               */
+-            virtual ObjectTypePtr getType( std::string id ) throw ( Exception ) = 0;
++            virtual ObjectTypePtr getType( std::string id ) = 0;
+ 
+             /** Get all the CMIS base object types known by the server.
+               */
+-            virtual std::vector< ObjectTypePtr > getBaseTypes( ) throw ( Exception ) = 0;
++            virtual std::vector< ObjectTypePtr > getBaseTypes( ) = 0;
+ 
+             /** Enable or disable the SSL certificate verification.
+ 
+--- src/libcmis/xml-utils.cxx
++++ src/libcmis/xml-utils.cxx
+@@ -361,7 +361,6 @@
+     string getXmlNodeAttributeValue( xmlNodePtr node,
+                                      const char* attributeName,
+                                      const char* defaultValue )
+-        throw ( Exception )
+     {
+         xmlChar* xmlStr = xmlGetProp( node, BAD_CAST( attributeName ) );
+         if ( xmlStr == NULL )
+@@ -450,7 +449,7 @@
+         return str;
+     }
+ 
+-    bool parseBool( string boolStr ) throw ( Exception )
++    bool parseBool( string boolStr )
+     {
+         bool value = false;
+         if ( boolStr == "true" || boolStr == "1" )
+@@ -462,7 +461,7 @@
+         return value;
+     }
+ 
+-    long parseInteger( string intStr ) throw ( Exception )
++    long parseInteger( string intStr )
+     {
+         char* end;
+         errno = 0;
+@@ -481,7 +480,7 @@
+         return value;
+     }
+ 
+-    double parseDouble( string doubleStr ) throw ( Exception )
++    double parseDouble( string doubleStr )
+     {
+         char* end;
+         errno = 0;
+--- src/libcmis/xml-utils.hxx
++++ src/libcmis/xml-utils.hxx
+@@ -132,8 +132,7 @@
+       */
+     std::string getXmlNodeAttributeValue( xmlNodePtr node,
+                                           const char* attributeName,
+-                                          const char* defaultValue = NULL )
+-        throw ( Exception );
++                                          const char* defaultValue = NULL );
+ 
+     /** Parse a xsd:dateTime string and return the corresponding UTC posix time.
+      */
+@@ -142,11 +141,11 @@
+     /// Write a UTC time object to an xsd:dateTime string
+     std::string writeDateTime( boost::posix_time::ptime time );
+ 
+-    bool parseBool( std::string str ) throw ( Exception );
++    bool parseBool( std::string str );
+ 
+-    long parseInteger( std::string str ) throw ( Exception );
++    long parseInteger( std::string str );
+ 
+-    double parseDouble( std::string str ) throw ( Exception );
++    double parseDouble( std::string str );
+ 
+     /** Trim spaces on the left and right of a string.
+      */
diff --git a/ucb/source/ucp/cmis/auth_provider.hxx b/ucb/source/ucp/cmis/auth_provider.hxx
index 6b80ec0b9df2..77fe4366f2aa 100644
--- a/ucb/source/ucp/cmis/auth_provider.hxx
+++ b/ucb/source/ucp/cmis/auth_provider.hxx
@@ -13,15 +13,10 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated"
 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdynamic-exception-spec"
 #endif
 #include <libcmis/libcmis.hxx>
 #if defined __GNUC__ && __GNUC__ >= 7
 #pragma GCC diagnostic pop
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic pop
 #endif
 
 #include <com/sun/star/ucb/XCommandEnvironment.hpp>
diff --git a/ucb/source/ucp/cmis/certvalidation_handler.hxx b/ucb/source/ucp/cmis/certvalidation_handler.hxx
index 077b9670a49e..1554785873cf 100644
--- a/ucb/source/ucp/cmis/certvalidation_handler.hxx
+++ b/ucb/source/ucp/cmis/certvalidation_handler.hxx
@@ -16,15 +16,10 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated"
 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdynamic-exception-spec"
 #endif
 #include <libcmis/libcmis.hxx>
 #if defined __GNUC__ && __GNUC__ >= 7
 #pragma GCC diagnostic pop
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic pop
 #endif
 
 #include <com/sun/star/ucb/XCommandEnvironment.hpp>
diff --git a/ucb/source/ucp/cmis/cmis_content.hxx b/ucb/source/ucp/cmis/cmis_content.hxx
index 3a83cde97b06..54aa3fa66873 100644
--- a/ucb/source/ucp/cmis/cmis_content.hxx
+++ b/ucb/source/ucp/cmis/cmis_content.hxx
@@ -28,15 +28,10 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated"
 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdynamic-exception-spec"
 #endif
 #include <libcmis/libcmis.hxx>
 #if defined __GNUC__ && __GNUC__ >= 7
 #pragma GCC diagnostic pop
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic pop
 #endif
 
 #include <list>
diff --git a/ucb/source/ucp/cmis/cmis_url.cxx b/ucb/source/ucp/cmis/cmis_url.cxx
index 053518761976..8f5f9146d9eb 100644
--- a/ucb/source/ucp/cmis/cmis_url.cxx
+++ b/ucb/source/ucp/cmis/cmis_url.cxx
@@ -11,15 +11,10 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated"
 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdynamic-exception-spec"
 #endif
 #include <libcmis/libcmis.hxx>
 #if defined __GNUC__ && __GNUC__ >= 7
 #pragma GCC diagnostic pop
-#elif defined __clang__ && __cplusplus > 201402L
-#pragma clang diagnostic pop
 #endif
 
 #include <config_oauth2.h>


More information about the Libreoffice-commits mailing list