summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-11-05 12:24:35 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-11-06 07:46:11 +0100
commit97ebc98f0e956712d242e13f15531742f844a738 (patch)
treef8f59969604c4cac28a3efba17c4c281752fa62f /ucb
parent4b363760b9f196e139ee367d54252c4d6cbe25f3 (diff)
convert some macros to local functions
Change-Id: If2c89f0f53615f6200b6cd1fb6267cc9b47df927 Reviewed-on: https://gerrit.libreoffice.org/62884 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'ucb')
-rw-r--r--ucb/source/cacher/cachedcontentresultsetstub.cxx244
-rw-r--r--ucb/source/cacher/cachedcontentresultsetstub.hxx3
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.cxx73
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.hxx2
-rw-r--r--ucb/source/ucp/ftp/ftpurl.cxx28
5 files changed, 194 insertions, 156 deletions
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<void( css::uno::Any& rRowContent)> 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<void(css::uno::Any& rRowContent)> 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<FTPDirentry> 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);