From 6dd8b701058fc02e78941270ce0423199e4d2352 Mon Sep 17 00:00:00 2001 From: Takeshi Abe Date: Mon, 13 Nov 2017 18:39:20 +0900 Subject: sot: Simplify SotData_Impl with std::unique_ptr Change-Id: I08752c66fd2680aa5f2eb2968d7e23cf797090f9 Reviewed-on: https://gerrit.libreoffice.org/44667 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sot/source/base/exchange.cxx | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx index 1d230a43fccf..37d917730e46 100644 --- a/sot/source/base/exchange.cxx +++ b/sot/source/base/exchange.cxx @@ -31,6 +31,7 @@ #include #include +#include #include using namespace::com::sun::star::uno; @@ -213,25 +214,11 @@ namespace const DataFlavorRepresentation, ImplFormatArray_Impl > {}; - typedef std::vector tDataFlavorList; + typedef std::vector> tDataFlavorList; struct SotData_Impl { - tDataFlavorList* pDataFlavorList; - - SotData_Impl(): pDataFlavorList(nullptr) {} - ~SotData_Impl() - { - if (pDataFlavorList) - { - for( tDataFlavorList::iterator aI = pDataFlavorList->begin(), - aEnd = pDataFlavorList->end(); aI != aEnd; ++aI) - { - delete *aI; - } - delete pDataFlavorList; - } - } + std::unique_ptr pDataFlavorList; }; struct ImplData : public rtl::Static {}; @@ -241,7 +228,7 @@ static tDataFlavorList& InitFormats_Impl() { SotData_Impl *pSotData = &ImplData::get(); if( !pSotData->pDataFlavorList ) - pSotData->pDataFlavorList = new tDataFlavorList; + pSotData->pDataFlavorList.reset(new tDataFlavorList); return *pSotData->pDataFlavorList; } @@ -272,17 +259,17 @@ SotClipboardFormatId SotExchange::RegisterFormatName( const OUString& rName ) tDataFlavorList& rL = InitFormats_Impl(); for( tDataFlavorList::size_type i = 0; i < rL.size(); i++ ) { - DataFlavor* pFlavor = rL[ i ]; + auto const& pFlavor = rL[ i ]; if( pFlavor && rName == pFlavor->HumanPresentableName ) return static_cast(i + static_cast(SotClipboardFormatId::USER_END) + 1); } - DataFlavor* pNewFlavor = new DataFlavor; + std::unique_ptr pNewFlavor(new DataFlavor); pNewFlavor->MimeType = rName; pNewFlavor->HumanPresentableName = rName; pNewFlavor->DataType = cppu::UnoType::get(); - rL.push_back( pNewFlavor ); + rL.push_back( std::move(pNewFlavor) ); return static_cast(static_cast(rL.size()-1) + static_cast(SotClipboardFormatId::USER_END) + 1); } @@ -303,17 +290,17 @@ SotClipboardFormatId SotExchange::RegisterFormatMimeType( const OUString& rMimeT tDataFlavorList& rL = InitFormats_Impl(); for( tDataFlavorList::size_type i = 0; i < rL.size(); i++ ) { - DataFlavor* pFlavor = rL[ i ]; + auto const& pFlavor = rL[ i ]; if( pFlavor && rMimeType == pFlavor->MimeType ) return static_cast(i + static_cast(SotClipboardFormatId::USER_END) + 1); } - DataFlavor* pNewFlavor = new DataFlavor; + std::unique_ptr pNewFlavor(new DataFlavor); pNewFlavor->MimeType = rMimeType; pNewFlavor->HumanPresentableName = rMimeType; pNewFlavor->DataType = cppu::UnoType::get(); - rL.push_back( pNewFlavor ); + rL.push_back( std::move(pNewFlavor) ); return static_cast(static_cast(rL.size()-1) + static_cast(SotClipboardFormatId::USER_END) + 1); } @@ -332,7 +319,7 @@ SotClipboardFormatId SotExchange::RegisterFormat( const DataFlavor& rFlavor ) { tDataFlavorList& rL = InitFormats_Impl(); nRet = static_cast(rL.size() + static_cast(SotClipboardFormatId::USER_END) + 1); - rL.push_back( new DataFlavor( rFlavor ) ); + rL.emplace_back( new DataFlavor( rFlavor ) ); } return nRet; @@ -433,7 +420,7 @@ SotClipboardFormatId SotExchange::GetFormatIdFromMimeType( const OUString& rMime for( tDataFlavorList::size_type i = 0; i < rL.size(); i++ ) { - DataFlavor* pFlavor = rL[ i ]; + auto const& pFlavor = rL[ i ]; if( pFlavor && rMimeType == pFlavor->MimeType ) return static_cast(i + static_cast(SotClipboardFormatId::USER_END) + 1); } @@ -470,7 +457,7 @@ SotClipboardFormatId SotExchange::GetFormat( const DataFlavor& rFlavor ) tDataFlavorList& rL = InitFormats_Impl(); for( tDataFlavorList::size_type i = 0; i < rL.size(); i++ ) { - DataFlavor* pFlavor = rL[ i ]; + auto const& pFlavor = rL[ i ]; if( pFlavor && rMimeType == pFlavor->MimeType ) return static_cast(i + static_cast(SotClipboardFormatId::USER_END) + 1); } -- cgit