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

Stephan Bergmann sbergman at redhat.com
Mon Aug 17 03:20:33 PDT 2015


 ucb/source/ucp/webdav/webdavresponseparser.cxx |   23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

New commits:
commit 81908b38536be0764955fe73f200417b7955a91b
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Aug 17 12:19:42 2015 +0200

    Clean up reinterpret_casts
    
    Change-Id: Idd25acf645af7f99e332ec1d5431f7988408675d

diff --git a/ucb/source/ucp/webdav/webdavresponseparser.cxx b/ucb/source/ucp/webdav/webdavresponseparser.cxx
index f7a6ee5..deadf5a 100644
--- a/ucb/source/ucp/webdav/webdavresponseparser.cxx
+++ b/ucb/source/ucp/webdav/webdavresponseparser.cxx
@@ -839,7 +839,8 @@ namespace
     void parseWebDAVResponse(
         const uno::Reference< io::XInputStream >& xInputStream,
         std::vector< T >& rResult,
-        WebDAVResponseParserMode eWebDAVResponseParserMode)
+        WebDAVResponseParserMode eWebDAVResponseParserMode,
+        std::vector<T> const & (WebDAVResponseParser::* fn)() const)
     {
         if(xInputStream.is())
         {
@@ -862,19 +863,7 @@ namespace
                 xParser->parseStream(myInputSource);
 
                 // get result
-                switch(eWebDAVResponseParserMode)
-                {
-                    //TODO: Clean up reinterpret_casts:
-                    case WebDAVResponseParserMode_PropFind:
-                        rResult = reinterpret_cast<std::vector<T> const &>(pWebDAVResponseParser->getResult_PropFind());
-                        break;
-                    case WebDAVResponseParserMode_PropName:
-                        rResult = reinterpret_cast<std::vector<T> const &>(pWebDAVResponseParser->getResult_PropName());
-                        break;
-                    case WebDAVResponseParserMode_Lock:
-                        rResult = reinterpret_cast<std::vector<T> const &>(pWebDAVResponseParser->getResult_Lock());
-                        break;
-                }
+                rResult = (pWebDAVResponseParser->*fn)();
             }
             catch(uno::Exception&)
             {
@@ -892,21 +881,21 @@ namespace http_dav_ucp
     std::vector< ucb::Lock > parseWebDAVLockResponse(const uno::Reference< io::XInputStream >& xInputStream)
     {
         std::vector< ucb::Lock > aResult;
-        parseWebDAVResponse< ucb::Lock >(xInputStream, aResult, WebDAVResponseParserMode_Lock);
+        parseWebDAVResponse< ucb::Lock >(xInputStream, aResult, WebDAVResponseParserMode_Lock, &WebDAVResponseParser::getResult_Lock);
         return aResult;
     }
 
     std::vector< DAVResource > parseWebDAVPropFindResponse(const uno::Reference< io::XInputStream >& xInputStream)
     {
         std::vector< DAVResource > aResult;
-        parseWebDAVResponse< DAVResource >(xInputStream, aResult, WebDAVResponseParserMode_PropFind);
+        parseWebDAVResponse< DAVResource >(xInputStream, aResult, WebDAVResponseParserMode_PropFind, &WebDAVResponseParser::getResult_PropFind);
         return aResult;
     }
 
     std::vector< DAVResourceInfo > parseWebDAVPropNameResponse(const uno::Reference< io::XInputStream >& xInputStream)
     {
         std::vector< DAVResourceInfo > aResult;
-        parseWebDAVResponse< DAVResourceInfo >(xInputStream, aResult, WebDAVResponseParserMode_PropName);
+        parseWebDAVResponse< DAVResourceInfo >(xInputStream, aResult, WebDAVResponseParserMode_PropName, &WebDAVResponseParser::getResult_PropName);
         return aResult;
     }
 } // namespace http_dav_ucp


More information about the Libreoffice-commits mailing list