diff options
author | Matthew Pottage <matthewpottage@invincitech.com> | 2014-12-22 17:35:47 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-01-07 15:47:42 +0000 |
commit | 2c71f383019e0ac13b83aabd3011d7f7b55a62b3 (patch) | |
tree | db0718193405e93cd916a423e7176b10f9948b2a | |
parent | 651441ef39446f0d073ec3644ca7fe479f069d57 (diff) |
fdo#75757: Remove inheritance from std::vector.
In framework/inc/stdtypes.h. class OUStringList.
Removed inheritance and separated additional functionality into more general
functions. Changed to using std::vector<OUString> rather than SequenceAsVector.
The functions now work for any vector. Although they could be made more general
and support any container by altering the arguments.
Change-Id: I472267029dc69da1ad0a98d55e26e3784f6b07cd
Reviewed-on: https://gerrit.libreoffice.org/13612
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | framework/inc/classes/filtercachedata.hxx | 22 | ||||
-rw-r--r-- | framework/inc/jobs/jobdata.hxx | 2 | ||||
-rw-r--r-- | framework/inc/stdtypes.h | 48 | ||||
-rw-r--r-- | framework/source/accelerators/storageholder.cxx | 2 | ||||
-rw-r--r-- | framework/source/jobs/jobdata.cxx | 2 | ||||
-rw-r--r-- | framework/source/jobs/jobexecutor.cxx | 16 | ||||
-rw-r--r-- | framework/source/services/pathsettings.cxx | 48 |
7 files changed, 67 insertions, 73 deletions
diff --git a/framework/inc/classes/filtercachedata.hxx b/framework/inc/classes/filtercachedata.hxx index 8825a6b8fee8..ad82d07ee681 100644 --- a/framework/inc/classes/filtercachedata.hxx +++ b/framework/inc/classes/filtercachedata.hxx @@ -90,8 +90,8 @@ struct FileType sClipboardFormat.clear(); nDocumentIconID = 0; lUINames.free (); - lURLPattern.free(); - lExtensions.free(); + framework::free(lURLPattern); + framework::free(lExtensions); } inline FileType& impl_copy( const FileType& rCopy ) @@ -153,8 +153,8 @@ struct Filter nFlags = 0; nFileFormatVersion = 0; sTemplateName.clear(); - lUINames.free (); - lUserData.free (); + lUINames.free(); + framework::free(lUserData); } inline Filter& impl_copy( const Filter& rCopy ) @@ -213,7 +213,7 @@ struct Detector inline void impl_clear() { sName.clear(); - lTypes.free(); + framework::free(lTypes); } inline Detector& impl_copy( const Detector& rCopy ) @@ -254,8 +254,8 @@ struct Loader inline void impl_clear() { sName.clear(); - lUINames.free (); - lTypes.free (); + lUINames.free(); + framework::free(lTypes); } inline Loader& impl_copy( const Loader& rCopy ) @@ -297,7 +297,7 @@ struct ContentHandler inline void impl_clear() { sName.clear(); - lTypes.free(); + framework::free(lTypes); } inline ContentHandler& impl_copy( const ContentHandler& rCopy ) @@ -335,9 +335,9 @@ class SetNodeHash : public std::unordered_map< OUString , inline void free() { SetNodeHash().swap( *this ); // get rid of reserved capacity - lAddedItems.free (); - lChangedItems.free(); - lRemovedItems.free(); + framework::free(lAddedItems); + framework::free(lChangedItems); + framework::free(lRemovedItems); } // Append changed, added or removed items to special lists diff --git a/framework/inc/jobs/jobdata.hxx b/framework/inc/jobs/jobdata.hxx index 18d01e880891..d60256fe6ae4 100644 --- a/framework/inc/jobs/jobdata.hxx +++ b/framework/inc/jobs/jobdata.hxx @@ -209,7 +209,7 @@ class JobData static void appendEnabledJobsForEvent( const css::uno::Reference< css::uno::XComponentContext >& rxContext, const OUString& sEvent , - ::comphelper::SequenceAsVector< JobData::TJob2DocEventBinding >& lJobs ); + ::std::vector< JobData::TJob2DocEventBinding >& lJobs ); // private helper diff --git a/framework/inc/stdtypes.h b/framework/inc/stdtypes.h index 8e9dfaf868f8..faf2c730d11e 100644 --- a/framework/inc/stdtypes.h +++ b/framework/inc/stdtypes.h @@ -20,6 +20,7 @@ #ifndef INCLUDED_FRAMEWORK_INC_STDTYPES_H #define INCLUDED_FRAMEWORK_INC_STDTYPES_H +#include <algorithm> #include <queue> #include <unordered_map> #include <vector> @@ -28,7 +29,6 @@ #include <com/sun/star/awt/KeyEvent.hpp> -#include <comphelper/sequenceasvector.hxx> #include <cppuhelper/interfacecontainer.hxx> #include <rtl/ustring.hxx> @@ -79,38 +79,26 @@ struct KeyEventEqualsFunc } }; -/** - Basic string list based on a std::vector() - It implements some additional funtionality which can be useful but - is missing at the normal vector implementation. -*/ -class OUStringList : public ::comphelper::SequenceAsVector< OUString > -{ - public: +typedef ::std::vector< OUString > OUStringList; - // insert given element as the first one into the vector - void push_front( const OUString& sElement ) - { - insert( begin(), sElement ); - } - - // search for given element - iterator find( const OUString& sElement ) - { - return ::std::find(begin(), end(), sElement); - } +// search for given element +template <class T> +typename std::vector<T>::iterator find( std::vector<T>& vec, const T& sElement ) +{ + return ::std::find(vec.begin(), vec.end(), sElement); +} - const_iterator findConst( const OUString& sElement ) const - { - return ::std::find(begin(), end(), sElement); - } +template <class T> +typename std::vector<T>::const_iterator find( const std::vector<T>& vec, const T& sElement ) +{ + return ::std::find(vec.begin(), vec.end(), sElement); +} - // the only way to free used memory really! - void free() - { - OUStringList().swap( *this );// get rid of reserved capacity - } -}; +template <class T> +void free(std::vector<T>& vec) +{ + OUStringList().swap(vec); +} /** Basic string queue based on a std::queue() diff --git a/framework/source/accelerators/storageholder.cxx b/framework/source/accelerators/storageholder.cxx index 7f05035313fd..2dc27318d222 100644 --- a/framework/source/accelerators/storageholder.cxx +++ b/framework/source/accelerators/storageholder.cxx @@ -37,6 +37,8 @@ #include <com/sun/star/io/XSeekable.hpp> +#include <algorithm> + #define PATH_SEPARATOR_ASCII "/" #define PATH_SEPARATOR_UNICODE ((sal_Unicode)'/') #define PATH_SEPARATOR OUString(PATH_SEPARATOR_ASCII) diff --git a/framework/source/jobs/jobdata.cxx b/framework/source/jobs/jobdata.cxx index 91f96caa6837..814da4ae5d41 100644 --- a/framework/source/jobs/jobdata.cxx +++ b/framework/source/jobs/jobdata.cxx @@ -469,7 +469,7 @@ bool isEnabled( const OUString& sAdminTime , */ void JobData::appendEnabledJobsForEvent( const css::uno::Reference< css::uno::XComponentContext >& rxContext, const OUString& sEvent , - ::comphelper::SequenceAsVector< JobData::TJob2DocEventBinding >& lJobs ) + ::std::vector< JobData::TJob2DocEventBinding >& lJobs ) { css::uno::Sequence< OUString > lAdditionalJobs = JobData::getEnabledJobsForEvent(rxContext, sEvent); sal_Int32 c = lAdditionalJobs.getLength(); diff --git a/framework/source/jobs/jobexecutor.cxx b/framework/source/jobs/jobexecutor.cxx index 601309076c33..1a19b98d131b 100644 --- a/framework/source/jobs/jobexecutor.cxx +++ b/framework/source/jobs/jobexecutor.cxx @@ -210,7 +210,7 @@ void SAL_CALL JobExecutor::trigger( const OUString& sEvent ) throw(css::uno::Run // Optimization! // Check if the given event name exist inside configuration and reject wrong requests. // This optimization suppress using of the cfg api for getting event and job descriptions ... - if (m_lEvents.find(sEvent) == m_lEvents.end()) + if (framework::find(m_lEvents, sEvent) == m_lEvents.end()) return; // get list of all enabled jobs @@ -255,7 +255,7 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent OUString EVENT_ON_DOCUMENT_ADDED("onDocumentAdded"); // Job API event : OnCreate or OnLoadFinished OUString aModuleIdentifier; - ::comphelper::SequenceAsVector< JobData::TJob2DocEventBinding > lJobs; + ::std::vector< JobData::TJob2DocEventBinding > lJobs; /* SAFE */ { osl::MutexGuard g(rBHelper.rMutex); @@ -279,7 +279,7 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent (aEvent.EventName == EVENT_ON_LOAD) ) { - if (m_lEvents.find(EVENT_ON_DOCUMENT_OPENED) != m_lEvents.end()) + if (find(m_lEvents, EVENT_ON_DOCUMENT_OPENED) != m_lEvents.end()) JobData::appendEnabledJobsForEvent(m_xContext, EVENT_ON_DOCUMENT_OPENED, lJobs); } @@ -289,17 +289,17 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent (aEvent.EventName == EVENT_ON_LOAD_FINISHED) ) { - if (m_lEvents.find(EVENT_ON_DOCUMENT_ADDED) != m_lEvents.end()) + if (find(m_lEvents, EVENT_ON_DOCUMENT_ADDED) != m_lEvents.end()) JobData::appendEnabledJobsForEvent(m_xContext, EVENT_ON_DOCUMENT_ADDED, lJobs); } // Add all jobs for "real" notified event too .-) - if (m_lEvents.find(aEvent.EventName) != m_lEvents.end()) + if (find(m_lEvents, aEvent.EventName) != m_lEvents.end()) JobData::appendEnabledJobsForEvent(m_xContext, aEvent.EventName, lJobs); } /* SAFE */ // step over all enabled jobs and execute it - ::comphelper::SequenceAsVector< JobData::TJob2DocEventBinding >::const_iterator pIt; + ::std::vector< JobData::TJob2DocEventBinding >::const_iterator pIt; for ( pIt = lJobs.begin(); pIt != lJobs.end(); ++pIt ) @@ -340,7 +340,7 @@ void SAL_CALL JobExecutor::elementInserted( const css::container::ContainerEvent OUString sEvent = ::utl::extractFirstFromConfigurationPath(sValue); if (!sEvent.isEmpty()) { - OUStringList::iterator pEvent = m_lEvents.find(sEvent); + OUStringList::iterator pEvent = find(m_lEvents, sEvent); if (pEvent == m_lEvents.end()) m_lEvents.push_back(sEvent); } @@ -355,7 +355,7 @@ void SAL_CALL JobExecutor::elementRemoved ( const css::container::ContainerEvent OUString sEvent = ::utl::extractFirstFromConfigurationPath(sValue); if (!sEvent.isEmpty()) { - OUStringList::iterator pEvent = m_lEvents.find(sEvent); + OUStringList::iterator pEvent = find(m_lEvents, sEvent); if (pEvent != m_lEvents.end()) m_lEvents.erase(pEvent); } diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index 6b53a47c6765..3dbaaf0c334c 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -600,7 +600,7 @@ OUStringList PathSettings::impl_readOldFormat(const OUString& sPath) } else if (aVal >>= lStringListVal) { - aPathVal << lStringListVal; + aPathVal = comphelper::sequenceToContainer<OUStringList>(lStringListVal); } } @@ -624,17 +624,19 @@ PathSettings::PathInfo PathSettings::impl_readNewFormat(const OUString& sPath) // read internal path list css::uno::Reference< css::container::XNameAccess > xIPath; xPath->getByName(CFGPROP_INTERNALPATHS) >>= xIPath; - aPathVal.lInternalPaths << xIPath->getElementNames(); + aPathVal.lInternalPaths = comphelper::sequenceToContainer<OUStringList>(xIPath->getElementNames()); // read user defined path list - aPathVal.lUserPaths << xPath->getByName(CFGPROP_USERPATHS); + css::uno::Sequence<OUString> vTmpUserPathsSeq; + xPath->getByName(CFGPROP_USERPATHS) >>= vTmpUserPathsSeq; + aPathVal.lUserPaths = comphelper::sequenceToContainer<OUStringList>(vTmpUserPathsSeq); // read the writeable path xPath->getByName(CFGPROP_WRITEPATH) >>= aPathVal.sWritePath; // avoid duplicates, by removing the writeable path from // the user defined path list if it happens to be there too - OUStringList::iterator aI = aPathVal.lUserPaths.find(aPathVal.sWritePath); + OUStringList::iterator aI = find(aPathVal.lUserPaths, aPathVal.sWritePath); if (aI != aPathVal.lUserPaths.end()) aPathVal.lUserPaths.erase(aI); @@ -677,7 +679,7 @@ void PathSettings::impl_storePath(const PathSettings::PathInfo& aPath) ::comphelper::ConfigurationHelper::writeRelativeKey(xCfgNew, aResubstPath.sPathName, CFGPROP_USERPATHS, - css::uno::makeAny(aResubstPath.lUserPaths.getAsConstList())); + css::uno::makeAny(comphelper::containerToSequence(aResubstPath.lUserPaths))); } ::comphelper::ConfigurationHelper::writeRelativeKey(xCfgNew, @@ -722,8 +724,8 @@ void PathSettings::impl_mergeOldUserPaths( PathSettings::PathInfo& rPath, else { if ( - ( rPath.lInternalPaths.findConst(sOld) == rPath.lInternalPaths.end()) && - ( rPath.lUserPaths.findConst(sOld) == rPath.lUserPaths.end() ) && + ( find(rPath.lInternalPaths, sOld) == rPath.lInternalPaths.end()) && + ( find(rPath.lUserPaths, sOld) == rPath.lUserPaths.end() ) && (! rPath.sWritePath.equals(sOld) ) ) rPath.lUserPaths.push_back(sOld); @@ -924,18 +926,18 @@ void PathSettings::impl_notifyPropListener( PathSettings::EChangeOp /*eOp*/ case IDGROUP_INTERNAL_PATHS : { if (pPathOld) - lOldVals[0] <<= pPathOld->lInternalPaths.getAsConstList(); + lOldVals[0] <<= comphelper::containerToSequence(pPathOld->lInternalPaths); if (pPathNew) - lNewVals[0] <<= pPathNew->lInternalPaths.getAsConstList(); + lNewVals[0] <<= comphelper::containerToSequence(pPathNew->lInternalPaths); } break; case IDGROUP_USER_PATHS : { if (pPathOld) - lOldVals[0] <<= pPathOld->lUserPaths.getAsConstList(); + lOldVals[0] <<= comphelper::containerToSequence(pPathOld->lUserPaths); if (pPathNew) - lNewVals[0] <<= pPathNew->lUserPaths.getAsConstList(); + lNewVals[0] <<= comphelper::containerToSequence(pPathNew->lUserPaths); } break; @@ -1054,10 +1056,10 @@ void PathSettings::impl_purgeKnownPaths(PathSettings::PathInfo& rPath, ++pIt ) { const OUString& rItem = *pIt; - OUStringList::iterator pItem = lList.find(rItem); + OUStringList::iterator pItem = find(lList, rItem); if (pItem != lList.end()) lList.erase(pItem); - pItem = rPath.lUserPaths.find(rItem); + pItem = find(rPath.lUserPaths, rItem); if (pItem != rPath.lUserPaths.end()) rPath.lUserPaths.erase(pItem); } @@ -1067,7 +1069,7 @@ void PathSettings::impl_purgeKnownPaths(PathSettings::PathInfo& rPath, while ( pIt != rPath.lUserPaths.end() ) { const OUString& rItem = *pIt; - OUStringList::iterator pItem = lList.find(rItem); + OUStringList::iterator pItem = find(lList, rItem); if ( pItem == lList.end() ) { rPath.lUserPaths.erase(pIt); @@ -1085,13 +1087,13 @@ void PathSettings::impl_purgeKnownPaths(PathSettings::PathInfo& rPath, ++pIt ) { const OUString& rItem = *pIt; - OUStringList::iterator pItem = lList.find(rItem); + OUStringList::iterator pItem = find(lList, rItem); if (pItem != lList.end()) lList.erase(pItem); } // Erase the write path from lList - OUStringList::iterator pItem = lList.find(rPath.sWritePath); + OUStringList::iterator pItem = find(lList, rPath.sWritePath); if (pItem != lList.end()) lList.erase(pItem); } @@ -1173,13 +1175,13 @@ css::uno::Any PathSettings::impl_getPathValue(sal_Int32 nID) const case IDGROUP_INTERNAL_PATHS : { - aVal <<= pPath->lInternalPaths.getAsConstList(); + aVal <<= comphelper::containerToSequence(pPath->lInternalPaths); } break; case IDGROUP_USER_PATHS : { - aVal <<= pPath->lUserPaths.getAsConstList(); + aVal <<= comphelper::containerToSequence(pPath->lUserPaths); } break; @@ -1249,8 +1251,9 @@ void PathSettings::impl_setPathValue( sal_Int32 nID , static_cast< ::cppu::OWeakObject* >(this)); } - OUStringList lList; - lList << aVal; + css::uno::Sequence<OUString> lTmpList; + aVal >>= lTmpList; + OUStringList lList = comphelper::sequenceToContainer<OUStringList>(lTmpList); if (! impl_isValidPath(lList)) throw css::lang::IllegalArgumentException(); aChangePath.lInternalPaths = lList; @@ -1269,8 +1272,9 @@ void PathSettings::impl_setPathValue( sal_Int32 nID , static_cast< ::cppu::OWeakObject* >(this)); } - OUStringList lList; - lList << aVal; + css::uno::Sequence<OUString> lTmpList; + aVal >>= lTmpList; + OUStringList lList = comphelper::sequenceToContainer<OUStringList>(lTmpList); if (! impl_isValidPath(lList)) throw css::lang::IllegalArgumentException(); aChangePath.lUserPaths = lList; |