diff options
author | Joseph Powers <jpowers27@cox.net> | 2011-03-02 20:45:36 -0800 |
---|---|---|
committer | Joseph Powers <jpowers27@cox.net> | 2011-03-02 20:45:36 -0800 |
commit | 81d758830bc7a63b4b5ae66bc7a4a599449a48dd (patch) | |
tree | 9482e6a0429dcafbe4add6976436cc873a175868 /svl/source/svdde | |
parent | d56d490a1becdf1e793d9268cfdc44eae4be3fce (diff) |
Remove DECLARE_LIST( ConvList, Conversation* )
Diffstat (limited to 'svl/source/svdde')
-rw-r--r-- | svl/source/svdde/ddeimp.hxx | 3 | ||||
-rw-r--r-- | svl/source/svdde/ddesvr.cxx | 29 |
2 files changed, 22 insertions, 10 deletions
diff --git a/svl/source/svdde/ddeimp.hxx b/svl/source/svdde/ddeimp.hxx index 695d87e2aa49..39ca8c5b6892 100644 --- a/svl/source/svdde/ddeimp.hxx +++ b/svl/source/svdde/ddeimp.hxx @@ -52,6 +52,7 @@ #include <tools/string.hxx> #include <tools/list.hxx> #include <tools/shl.hxx> +#include <vector> class DdeService; class DdeTopic; @@ -69,7 +70,7 @@ struct Conversation DdeTopic* pTopic; }; -DECLARE_LIST( ConvList, Conversation* ); +typedef ::std::vector< Conversation* > ConvList; // --------------- // - DdeInternal - diff --git a/svl/source/svdde/ddesvr.cxx b/svl/source/svdde/ddesvr.cxx index 4c1020cd2ad9..ea630a082100 100644 --- a/svl/source/svdde/ddesvr.cxx +++ b/svl/source/svdde/ddesvr.cxx @@ -209,7 +209,7 @@ HDDEDATA CALLBACK _export DdeInternal::SvrCallback( pC = new Conversation; pC->hConv = hConv; pC->pTopic = pTopic; - pService->pConv->Insert( pC ); + pService->pConv->push_back( pC ); } } return (HDDEDATA)NULL; @@ -217,9 +217,9 @@ HDDEDATA CALLBACK _export DdeInternal::SvrCallback( for ( pService = rAll.First(); pService; pService = rAll.Next() ) { - for( pC = pService->pConv->First(); pC; - pC = pService->pConv->Next() ) + for ( size_t i = 0, n = pService->pConv->size(); i < n; ++i ) { + pc = (*pService->pConv)[ i ]; if ( pC->hConv == hConv ) goto found; } @@ -231,8 +231,17 @@ found: if ( nCode == XTYP_DISCONNECT) { pC->pTopic->_Disconnect( (long) hConv ); - pService->pConv->Remove( pC ); - delete pC; + for ( ConvList::iterator it = pService->pConv->begin(); + it < pService->pConv->end(); + ++it + ) { + if ( *it == pC ) + { + delete *it; + pService->pConv->erase( it ); + break; + } + } return (HDDEDATA)NULL; } @@ -565,13 +574,15 @@ void DdeService::RemoveTopic( const DdeTopic& rTopic ) aTopics.Remove( t ); // JP 27.07.95: und alle Conversions loeschen !!! // (sonst wird auf geloeschten Topics gearbeitet!!) - for( ULONG n = pConv->Count(); n; ) + for( size_t n = pConv->size(); n; ) { - Conversation* pC = pConv->GetObject( --n ); + Conversation* pC = (*pConv)[ --n ]; if( pC->pTopic == &rTopic ) { - pConv->Remove( pC ); - delete pC; + ConvList::iterator it = pConv->begin(); + ::std::advance( it, n ); + delete *it; + pConv->erase( it ); } } break; |