From 97ebc98f0e956712d242e13f15531742f844a738 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 5 Nov 2018 12:24:35 +0200 Subject: convert some macros to local functions Change-Id: If2c89f0f53615f6200b6cd1fb6267cc9b47df927 Reviewed-on: https://gerrit.libreoffice.org/62884 Tested-by: Jenkins Reviewed-by: Noel Grandin --- ucb/source/cacher/cachedcontentresultsetstub.cxx | 244 ++++++++++++----------- ucb/source/cacher/cachedcontentresultsetstub.hxx | 3 + ucb/source/cacher/contentresultsetwrapper.cxx | 73 ++++--- ucb/source/cacher/contentresultsetwrapper.hxx | 2 + ucb/source/ucp/ftp/ftpurl.cxx | 28 +-- 5 files changed, 194 insertions(+), 156 deletions(-) (limited to 'ucb/source') diff --git a/ucb/source/cacher/cachedcontentresultsetstub.cxx b/ucb/source/cacher/cachedcontentresultsetstub.cxx index 8642e53a7cfa..b9085f7ac323 100644 --- a/ucb/source/cacher/cachedcontentresultsetstub.cxx +++ b/ucb/source/cacher/cachedcontentresultsetstub.cxx @@ -179,125 +179,131 @@ css::uno::Sequence< OUString > SAL_CALL CachedContentResultSetStub::getSupported // XFetchProvider methods. -#define FETCH_XXX( impl_loadRow, loadInterface ) \ -impl_EnsureNotDisposed(); \ -if( !m_xResultSetOrigin.is() ) \ -{ \ - OSL_FAIL( "broadcaster was disposed already" ); \ - throw RuntimeException(); \ -} \ -impl_propagateFetchSizeAndDirection( nRowCount, bDirection ); \ -FetchResult aRet; \ -aRet.StartIndex = nRowStartPosition; \ -aRet.Orientation = bDirection; \ -aRet.FetchError = FetchError::SUCCESS; /*ENDOFDATA, EXCEPTION*/ \ -sal_Int32 nOldOriginal_Pos = m_xResultSetOrigin->getRow(); \ -if( impl_isForwardOnly() ) \ -{ \ - if( nOldOriginal_Pos != nRowStartPosition ) \ - { \ - /*@todo*/ \ - aRet.FetchError = FetchError::EXCEPTION; \ - return aRet; \ - } \ - if( nRowCount != 1 ) \ - aRet.FetchError = FetchError::EXCEPTION; \ - \ - aRet.Rows.realloc( 1 ); \ - \ - try \ - { \ - impl_loadRow( aRet.Rows[0], loadInterface ); \ - } \ - catch( SQLException& ) \ - { \ - aRet.Rows.realloc( 0 ); \ - aRet.FetchError = FetchError::EXCEPTION; \ - return aRet; \ - } \ - return aRet; \ -} \ -aRet.Rows.realloc( nRowCount ); \ -bool bOldOriginal_AfterLast = false; \ -if( !nOldOriginal_Pos ) \ - bOldOriginal_AfterLast = m_xResultSetOrigin->isAfterLast(); \ -sal_Int32 nN = 1; \ -bool bValidNewPos = false; \ -try \ -{ \ - try \ - { \ - /*if( nOldOriginal_Pos != nRowStartPosition )*/ \ - bValidNewPos = m_xResultSetOrigin->absolute( nRowStartPosition ); \ - } \ - catch( SQLException& ) \ - { \ - aRet.Rows.realloc( 0 ); \ - aRet.FetchError = FetchError::EXCEPTION; \ - return aRet; \ - } \ - if( !bValidNewPos ) \ - { \ - aRet.Rows.realloc( 0 ); \ - aRet.FetchError = FetchError::EXCEPTION; \ - \ - /*restore old position*/ \ - if( nOldOriginal_Pos ) \ - m_xResultSetOrigin->absolute( nOldOriginal_Pos ); \ - else if( bOldOriginal_AfterLast ) \ - m_xResultSetOrigin->afterLast(); \ - else \ - m_xResultSetOrigin->beforeFirst(); \ - \ - return aRet; \ - } \ - for( ; nN <= nRowCount; ) \ - { \ - impl_loadRow( aRet.Rows[nN-1], loadInterface ); \ - nN++; \ - if( nN <= nRowCount ) \ - { \ - if( bDirection ) \ - { \ - if( !m_xResultSetOrigin->next() ) \ - { \ - aRet.Rows.realloc( nN-1 ); \ - aRet.FetchError = FetchError::ENDOFDATA; \ - break; \ - } \ - } \ - else \ - { \ - if( !m_xResultSetOrigin->previous() ) \ - { \ - aRet.Rows.realloc( nN-1 ); \ - aRet.FetchError = FetchError::ENDOFDATA; \ - break; \ - } \ - } \ - } \ - } \ -} \ -catch( SQLException& ) \ -{ \ - aRet.Rows.realloc( nN-1 ); \ - aRet.FetchError = FetchError::EXCEPTION; \ -} \ -/*restore old position*/ \ -if( nOldOriginal_Pos ) \ - m_xResultSetOrigin->absolute( nOldOriginal_Pos ); \ -else if( bOldOriginal_AfterLast ) \ - m_xResultSetOrigin->afterLast(); \ -else \ - m_xResultSetOrigin->beforeFirst(); \ -return aRet; +FetchResult CachedContentResultSetStub::impl_fetchHelper( + sal_Int32 nRowStartPosition, sal_Int32 nRowCount, bool bDirection, + std::function impl_loadRow) +{ + impl_EnsureNotDisposed(); + if( !m_xResultSetOrigin.is() ) + { + OSL_FAIL( "broadcaster was disposed already" ); + throw RuntimeException(); + } + impl_propagateFetchSizeAndDirection( nRowCount, bDirection ); + FetchResult aRet; + aRet.StartIndex = nRowStartPosition; + aRet.Orientation = bDirection; + aRet.FetchError = FetchError::SUCCESS; /*ENDOFDATA, EXCEPTION*/ + sal_Int32 nOldOriginal_Pos = m_xResultSetOrigin->getRow(); + if( impl_isForwardOnly() ) + { + if( nOldOriginal_Pos != nRowStartPosition ) + { + /*@todo*/ + aRet.FetchError = FetchError::EXCEPTION; + return aRet; + } + if( nRowCount != 1 ) + aRet.FetchError = FetchError::EXCEPTION; + + aRet.Rows.realloc( 1 ); + + try + { + impl_loadRow( aRet.Rows[0] ); + } + catch( SQLException& ) + { + aRet.Rows.realloc( 0 ); + aRet.FetchError = FetchError::EXCEPTION; + return aRet; + } + return aRet; + } + aRet.Rows.realloc( nRowCount ); + bool bOldOriginal_AfterLast = false; + if( !nOldOriginal_Pos ) + bOldOriginal_AfterLast = m_xResultSetOrigin->isAfterLast(); + sal_Int32 nN = 1; + bool bValidNewPos = false; + try + { + try + { + /*if( nOldOriginal_Pos != nRowStartPosition )*/ + bValidNewPos = m_xResultSetOrigin->absolute( nRowStartPosition ); + } + catch( SQLException& ) + { + aRet.Rows.realloc( 0 ); + aRet.FetchError = FetchError::EXCEPTION; + return aRet; + } + if( !bValidNewPos ) + { + aRet.Rows.realloc( 0 ); + aRet.FetchError = FetchError::EXCEPTION; + + /*restore old position*/ + if( nOldOriginal_Pos ) + m_xResultSetOrigin->absolute( nOldOriginal_Pos ); + else if( bOldOriginal_AfterLast ) + m_xResultSetOrigin->afterLast(); + else + m_xResultSetOrigin->beforeFirst(); + + return aRet; + } + for( ; nN <= nRowCount; ) + { + impl_loadRow( aRet.Rows[nN-1] ); + nN++; + if( nN <= nRowCount ) + { + if( bDirection ) + { + if( !m_xResultSetOrigin->next() ) + { + aRet.Rows.realloc( nN-1 ); + aRet.FetchError = FetchError::ENDOFDATA; + break; + } + } + else + { + if( !m_xResultSetOrigin->previous() ) + { + aRet.Rows.realloc( nN-1 ); + aRet.FetchError = FetchError::ENDOFDATA; + break; + } + } + } + } + } + catch( SQLException& ) + { + aRet.Rows.realloc( nN-1 ); + aRet.FetchError = FetchError::EXCEPTION; + } + /*restore old position*/ + if( nOldOriginal_Pos ) + m_xResultSetOrigin->absolute( nOldOriginal_Pos ); + else if( bOldOriginal_AfterLast ) + m_xResultSetOrigin->afterLast(); + else + m_xResultSetOrigin->beforeFirst(); + return aRet; +} FetchResult SAL_CALL CachedContentResultSetStub ::fetch( sal_Int32 nRowStartPosition , sal_Int32 nRowCount, sal_Bool bDirection ) { impl_init_xRowOrigin(); - FETCH_XXX( impl_getCurrentRowContent, m_xRowOrigin ); + return impl_fetchHelper( nRowStartPosition, nRowCount, bDirection, + [&](css::uno::Any& rRowContent) + { return impl_getCurrentRowContent(rRowContent, m_xRowOrigin); }); } sal_Int32 CachedContentResultSetStub @@ -460,7 +466,9 @@ FetchResult SAL_CALL CachedContentResultSetStub , sal_Int32 nRowCount, sal_Bool bDirection ) { impl_init_xContentAccessOrigin(); - FETCH_XXX( impl_getCurrentContentIdentifierString, m_xContentAccessOrigin ); + return impl_fetchHelper( nRowStartPosition, nRowCount, bDirection, + [&](css::uno::Any& rRowContent) + { return impl_getCurrentContentIdentifierString(rRowContent, m_xContentAccessOrigin); }); } //virtual @@ -469,7 +477,9 @@ FetchResult SAL_CALL CachedContentResultSetStub , sal_Int32 nRowCount, sal_Bool bDirection ) { impl_init_xContentAccessOrigin(); - FETCH_XXX( impl_getCurrentContentIdentifier, m_xContentAccessOrigin ); + return impl_fetchHelper( nRowStartPosition, nRowCount, bDirection, + [&](css::uno::Any& rRowContent) + { return impl_getCurrentContentIdentifier(rRowContent, m_xContentAccessOrigin); }); } //virtual @@ -478,7 +488,9 @@ FetchResult SAL_CALL CachedContentResultSetStub , sal_Int32 nRowCount, sal_Bool bDirection ) { impl_init_xContentAccessOrigin(); - FETCH_XXX( impl_getCurrentContent, m_xContentAccessOrigin ); + return impl_fetchHelper( nRowStartPosition, nRowCount, bDirection, + [&](css::uno::Any& rRowContent) + { return impl_getCurrentContent(rRowContent, m_xContentAccessOrigin); }); } diff --git a/ucb/source/cacher/cachedcontentresultsetstub.hxx b/ucb/source/cacher/cachedcontentresultsetstub.hxx index 65f120086604..c4ba74410680 100644 --- a/ucb/source/cacher/cachedcontentresultsetstub.hxx +++ b/ucb/source/cacher/cachedcontentresultsetstub.hxx @@ -82,6 +82,9 @@ private: void impl_propagateFetchSizeAndDirection( sal_Int32 nFetchSize, bool bFetchDirection ); + css::ucb::FetchResult impl_fetchHelper(sal_Int32 nRowStartPosition, sal_Int32 nRowCount, bool bDirection, + std::function impl_loadRow); + public: CachedContentResultSetStub( css::uno::Reference< css::sdbc::XResultSet > const & xOrigin ); diff --git a/ucb/source/cacher/contentresultsetwrapper.cxx b/ucb/source/cacher/contentresultsetwrapper.cxx index 8cf5c5b07f8c..be35593388c0 100644 --- a/ucb/source/cacher/contentresultsetwrapper.cxx +++ b/ucb/source/cacher/contentresultsetwrapper.cxx @@ -1055,15 +1055,16 @@ Reference< XInterface > SAL_CALL ContentResultSetWrapper::getStatement() // XRow methods. -#define XROW_GETXXX( getXXX ) \ -impl_EnsureNotDisposed(); \ -impl_init_xRowOrigin(); \ -if( !m_xRowOrigin.is() ) \ -{ \ - OSL_FAIL( "broadcaster was disposed already" );\ - throw RuntimeException(); \ -} \ -return m_xRowOrigin->getXXX( columnIndex ); +void ContentResultSetWrapper::verifyGet() +{ + impl_EnsureNotDisposed(); + impl_init_xRowOrigin(); + if( !m_xRowOrigin.is() ) + { + OSL_FAIL( "broadcaster was disposed already" ); + throw RuntimeException(); + } +} //virtual sal_Bool SAL_CALL ContentResultSetWrapper::wasNull() @@ -1081,85 +1082,99 @@ sal_Bool SAL_CALL ContentResultSetWrapper::wasNull() //virtual OUString SAL_CALL ContentResultSetWrapper::getString( sal_Int32 columnIndex ) { - XROW_GETXXX( getString ); + verifyGet(); + return m_xRowOrigin->getString( columnIndex ); } //virtual sal_Bool SAL_CALL ContentResultSetWrapper::getBoolean( sal_Int32 columnIndex ) { - XROW_GETXXX( getBoolean ); + verifyGet(); + return m_xRowOrigin->getBoolean( columnIndex ); } //virtual sal_Int8 SAL_CALL ContentResultSetWrapper::getByte( sal_Int32 columnIndex ) { - XROW_GETXXX( getByte ); + verifyGet(); + return m_xRowOrigin->getByte( columnIndex ); } //virtual sal_Int16 SAL_CALL ContentResultSetWrapper::getShort( sal_Int32 columnIndex ) { - XROW_GETXXX( getShort ); + verifyGet(); + return m_xRowOrigin->getShort( columnIndex ); } //virtual sal_Int32 SAL_CALL ContentResultSetWrapper::getInt( sal_Int32 columnIndex ) { - XROW_GETXXX( getInt ); + verifyGet(); + return m_xRowOrigin->getInt( columnIndex ); } //virtual sal_Int64 SAL_CALL ContentResultSetWrapper::getLong( sal_Int32 columnIndex ) { - XROW_GETXXX( getLong ); + verifyGet(); + return m_xRowOrigin->getLong( columnIndex ); } //virtual float SAL_CALL ContentResultSetWrapper::getFloat( sal_Int32 columnIndex ) { - XROW_GETXXX( getFloat ); + verifyGet(); + return m_xRowOrigin->getFloat( columnIndex ); } //virtual double SAL_CALL ContentResultSetWrapper::getDouble( sal_Int32 columnIndex ) { - XROW_GETXXX( getDouble ); + verifyGet(); + return m_xRowOrigin->getDouble( columnIndex ); } //virtual Sequence< sal_Int8 > SAL_CALL ContentResultSetWrapper::getBytes( sal_Int32 columnIndex ) { - XROW_GETXXX( getBytes ); + verifyGet(); + return m_xRowOrigin->getBytes( columnIndex ); } //virtual Date SAL_CALL ContentResultSetWrapper::getDate( sal_Int32 columnIndex ) { - XROW_GETXXX( getDate ); + verifyGet(); + return m_xRowOrigin->getDate( columnIndex ); } //virtual Time SAL_CALL ContentResultSetWrapper::getTime( sal_Int32 columnIndex ) { - XROW_GETXXX( getTime ); + verifyGet(); + return m_xRowOrigin->getTime( columnIndex ); } //virtual DateTime SAL_CALL ContentResultSetWrapper::getTimestamp( sal_Int32 columnIndex ) { - XROW_GETXXX( getTimestamp ); + verifyGet(); + return m_xRowOrigin->getTimestamp( columnIndex ); } //virtual Reference< css::io::XInputStream > SAL_CALL ContentResultSetWrapper::getBinaryStream( sal_Int32 columnIndex ) { - XROW_GETXXX( getBinaryStream ); + verifyGet(); + return m_xRowOrigin->getBinaryStream( columnIndex ); } //virtual Reference< css::io::XInputStream > SAL_CALL ContentResultSetWrapper::getCharacterStream( sal_Int32 columnIndex ) { - XROW_GETXXX( getCharacterStream ); + verifyGet(); + return m_xRowOrigin->getCharacterStream( columnIndex ); } //virtual @@ -1181,25 +1196,29 @@ Any SAL_CALL ContentResultSetWrapper::getObject( sal_Int32 columnIndex, const Re //virtual Reference< XRef > SAL_CALL ContentResultSetWrapper::getRef( sal_Int32 columnIndex ) { - XROW_GETXXX( getRef ); + verifyGet(); + return m_xRowOrigin->getRef( columnIndex ); } //virtual Reference< XBlob > SAL_CALL ContentResultSetWrapper::getBlob( sal_Int32 columnIndex ) { - XROW_GETXXX( getBlob ); + verifyGet(); + return m_xRowOrigin->getBlob( columnIndex ); } //virtual Reference< XClob > SAL_CALL ContentResultSetWrapper::getClob( sal_Int32 columnIndex ) { - XROW_GETXXX( getClob ); + verifyGet(); + return m_xRowOrigin->getClob( columnIndex ); } //virtual Reference< XArray > SAL_CALL ContentResultSetWrapper::getArray( sal_Int32 columnIndex ) { - XROW_GETXXX( getArray ); + verifyGet(); + return m_xRowOrigin->getArray( columnIndex ); } diff --git a/ucb/source/cacher/contentresultsetwrapper.hxx b/ucb/source/cacher/contentresultsetwrapper.hxx index 1dff70d00935..458524566195 100644 --- a/ucb/source/cacher/contentresultsetwrapper.hxx +++ b/ucb/source/cacher/contentresultsetwrapper.hxx @@ -104,6 +104,8 @@ private: void impl_getVetoableChangeListenerContainer(); + void verifyGet(); + protected: diff --git a/ucb/source/ucp/ftp/ftpurl.cxx b/ucb/source/ucp/ftp/ftpurl.cxx index 01c2eb292860..a72a153d5eac 100644 --- a/ucb/source/ucp/ftp/ftpurl.cxx +++ b/ucb/source/ucp/ftp/ftpurl.cxx @@ -374,13 +374,15 @@ namespace ftp { &control) -#define SET_URL(url) \ - OString urlParAscii(url.getStr(), \ - url.getLength(), \ - RTL_TEXTENCODING_UTF8); \ - curl_easy_setopt(curl, \ - CURLOPT_URL, \ +static void setCurlUrl(CURL* curl, OUString const & url) +{ + OString urlParAscii(url.getStr(), + url.getLength(), + RTL_TEXTENCODING_UTF8); + curl_easy_setopt(curl, + CURLOPT_URL, urlParAscii.getStr()); +}; oslFileHandle FTPURL::open() { @@ -391,7 +393,7 @@ oslFileHandle FTPURL::open() SET_CONTROL_CONTAINER; OUString url(ident(false,true)); - SET_URL(url); + setCurlUrl(curl, url); oslFileHandle res( nullptr ); if ( osl_createTempFile( nullptr, &res, nullptr ) == osl_File_E_None ) @@ -432,7 +434,7 @@ std::vector FTPURL::list( curl_easy_setopt(curl,CURLOPT_WRITEDATA,&data); OUString url(ident(true,true)); - SET_URL(url); + setCurlUrl(curl, url); curl_easy_setopt(curl,CURLOPT_POSTQUOTE,0); CURLcode err = curl_easy_perform(curl); @@ -528,7 +530,7 @@ OUString FTPURL::net_title() const else if(!try_more && url.endsWith("/")) url = url.copy(0,url.getLength()-1); // remove end-slash - SET_URL(url); + setCurlUrl(curl, url); err = curl_easy_perform(curl); if(err == CURLE_OK) { // get the title from the server @@ -650,7 +652,7 @@ void FTPURL::insert(bool replaceExisting,void* stream) const curl_easy_setopt(curl, CURLOPT_UPLOAD,1); OUString url(ident(false,true)); - SET_URL(url); + setCurlUrl(curl, url); CURLcode err = curl_easy_perform(curl); curl_easy_setopt(curl, CURLOPT_UPLOAD,false); @@ -700,7 +702,7 @@ void FTPURL::mkdir(bool ReplaceExisting) const OUString url(parent(true)); if(!url.endsWith("/")) url += "/"; - SET_URL(url); + setCurlUrl(curl, url); CURLcode err = curl_easy_perform(curl); curl_slist_free_all(slist); @@ -739,7 +741,7 @@ OUString FTPURL::ren(const OUString& NewTitle) OUString url(parent(true)); if(!url.endsWith("/")) url += "/"; - SET_URL(url); + setCurlUrl(curl, url); CURLcode err = curl_easy_perform(curl); curl_slist_free_all(slist); @@ -789,7 +791,7 @@ void FTPURL::del() const OUString url(parent(true)); if(!url.endsWith("/")) url += "/"; - SET_URL(url); + setCurlUrl(curl, url); CURLcode err = curl_easy_perform(curl); curl_slist_free_all(slist); -- cgit