diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-10-25 19:52:08 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-11-26 18:15:55 +0100 |
commit | ae16870b2c84c116cde8279a47db106a4fa9d529 (patch) | |
tree | e5c1e79c38f967fd5cd69c0e3943bc29fa2f3791 | |
parent | 5c2f6d9e2efe1015cfbf9d89a88ed940127c0a4f (diff) |
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@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r-- | configure.ac | 54 | ||||
-rw-r--r-- | external/firebird/UnpackedTarball_firebird.mk | 1 | ||||
-rw-r--r-- | external/firebird/c++17.patch | 301 | ||||
-rw-r--r-- | external/libcmis/StaticLibrary_libcmis.mk | 11 | ||||
-rw-r--r-- | external/libcmis/UnpackedTarball_libcmis.mk | 1 | ||||
-rw-r--r-- | external/libcmis/c++17.patch.0 | 412 | ||||
-rw-r--r-- | ucb/source/ucp/cmis/auth_provider.hxx | 5 | ||||
-rw-r--r-- | ucb/source/ucp/cmis/certvalidation_handler.hxx | 5 | ||||
-rw-r--r-- | ucb/source/ucp/cmis/cmis_content.hxx | 5 | ||||
-rw-r--r-- | ucb/source/ucp/cmis/cmis_url.cxx | 5 |
10 files changed, 760 insertions, 40 deletions
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> |