summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--unoxml/source/events/eventdispatcher.cxx34
-rw-r--r--unoxml/source/events/eventdispatcher.hxx2
2 files changed, 15 insertions, 21 deletions
diff --git a/unoxml/source/events/eventdispatcher.cxx b/unoxml/source/events/eventdispatcher.cxx
index 7fd7a48685c9..0dab5b9d0624 100644
--- a/unoxml/source/events/eventdispatcher.cxx
+++ b/unoxml/source/events/eventdispatcher.cxx
@@ -41,16 +41,16 @@ namespace DOM { namespace events {
// get the multimap for the specified type
ListenerMap *pMap = nullptr;
- TypeListenerMap::const_iterator tIter = pTMap->find(aType);
+ auto tIter = pTMap->find(aType);
if (tIter == pTMap->end()) {
// the map has to be created
- pMap = new ListenerMap();
- pTMap->insert(TypeListenerMap::value_type(aType, pMap));
+ auto const pair = pTMap->insert(TypeListenerMap::value_type(aType, ListenerMap()));
+ pMap = & pair.first->second;
} else {
- pMap = tIter->second;
+ pMap = & tIter->second;
}
- if (pMap !=nullptr)
- pMap->insert(ListenerMap::value_type(pNode, aListener));
+ assert(pMap != nullptr);
+ pMap->insert(ListenerMap::value_type(pNode, aListener));
}
void CEventDispatcher::removeListener(xmlNodePtr pNode, const OUString& aType, const Reference<XEventListener>& aListener, bool bCapture)
@@ -59,19 +59,19 @@ namespace DOM { namespace events {
? (& m_CaptureListeners) : (& m_TargetListeners);
// get the multimap for the specified type
- TypeListenerMap::const_iterator tIter = pTMap->find(aType);
+ auto tIter = pTMap->find(aType);
if (tIter != pTMap->end()) {
- ListenerMap *pMap = tIter->second;
+ ListenerMap & rMap = tIter->second;
// find listeners of specified type for specified node
- ListenerMap::iterator iter = pMap->find(pNode);
- while (iter != pMap->end() && iter->first == pNode)
+ ListenerMap::iterator iter = rMap.find(pNode);
+ while (iter != rMap.end() && iter->first == pNode)
{
// erase all references to specified listener
if ((iter->second).is() && iter->second == aListener)
{
ListenerMap::iterator tmp_iter = iter;
++iter;
- pMap->erase(tmp_iter);
+ rMap.erase(tmp_iter);
}
else
++iter;
@@ -81,12 +81,6 @@ namespace DOM { namespace events {
CEventDispatcher::~CEventDispatcher()
{
- // delete the multimaps for the various types
- for (TypeListenerMap::iterator aI = m_CaptureListeners.begin(); aI != m_CaptureListeners.end(); ++aI)
- delete aI->second;
-
- for (TypeListenerMap::iterator aI = m_TargetListeners.begin(); aI != m_TargetListeners.end(); ++aI)
- delete aI->second;
}
void CEventDispatcher::callListeners(
@@ -97,9 +91,9 @@ namespace DOM { namespace events {
// get the multimap for the specified type
TypeListenerMap::const_iterator tIter = rTMap.find(aType);
if (tIter != rTMap.end()) {
- ListenerMap *pMap = tIter->second;
- ListenerMap::const_iterator iter = pMap->lower_bound(pNode);
- ListenerMap::const_iterator ibound = pMap->upper_bound(pNode);
+ ListenerMap const& rMap = tIter->second;
+ auto iter = rMap.lower_bound(pNode);
+ auto const ibound = rMap.upper_bound(pNode);
for( ; iter != ibound; ++iter )
{
if((iter->second).is())
diff --git a/unoxml/source/events/eventdispatcher.hxx b/unoxml/source/events/eventdispatcher.hxx
index d8703ac1bba6..d992ff30d8d3 100644
--- a/unoxml/source/events/eventdispatcher.hxx
+++ b/unoxml/source/events/eventdispatcher.hxx
@@ -42,7 +42,7 @@ class CDocument;
namespace events {
typedef std::multimap< xmlNodePtr, css::uno::Reference< css::xml::dom::events::XEventListener> > ListenerMap;
-typedef std::map< OUString, ListenerMap*> TypeListenerMap;
+typedef std::map<OUString, ListenerMap> TypeListenerMap;
class CEventDispatcher
{