summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pottage <matthewpottage@invincitech.com>2014-12-22 17:35:47 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-01-07 15:47:42 +0000
commit2c71f383019e0ac13b83aabd3011d7f7b55a62b3 (patch)
treedb0718193405e93cd916a423e7176b10f9948b2a
parent651441ef39446f0d073ec3644ca7fe479f069d57 (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.hxx22
-rw-r--r--framework/inc/jobs/jobdata.hxx2
-rw-r--r--framework/inc/stdtypes.h48
-rw-r--r--framework/source/accelerators/storageholder.cxx2
-rw-r--r--framework/source/jobs/jobdata.cxx2
-rw-r--r--framework/source/jobs/jobexecutor.cxx16
-rw-r--r--framework/source/services/pathsettings.cxx48
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;