diff options
-rw-r--r-- | cui/source/inc/macroass.hxx | 2 | ||||
-rw-r--r-- | cui/source/tabpages/macroass.cxx | 7 | ||||
-rw-r--r-- | sc/source/ui/drawfunc/drawsh.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/bastyp/sfxhtml.cxx | 9 | ||||
-rw-r--r-- | svl/inc/svl/macitem.hxx | 44 | ||||
-rw-r--r-- | svl/source/items/macitem.cxx | 126 | ||||
-rw-r--r-- | svtools/inc/svtools/imapobj.hxx | 4 | ||||
-rw-r--r-- | svtools/source/svhtml/htmlout.cxx | 2 | ||||
-rw-r--r-- | svtools/source/uno/unoevent.cxx | 5 | ||||
-rw-r--r-- | svx/source/items/hlnkitem.cxx | 63 | ||||
-rw-r--r-- | sw/source/core/txtnode/fmtatr2.cxx | 29 | ||||
-rw-r--r-- | sw/source/filter/html/htmlatr.cxx | 2 | ||||
-rw-r--r-- | sw/source/filter/html/htmlbas.cxx | 7 | ||||
-rw-r--r-- | sw/source/filter/html/htmlfly.cxx | 6 | ||||
-rw-r--r-- | sw/source/filter/html/htmlform.cxx | 24 | ||||
-rw-r--r-- | sw/source/filter/html/htmlgrin.cxx | 7 | ||||
-rw-r--r-- | sw/source/ui/chrdlg/chardlg.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/dochdl/gloshdl.cxx | 4 | ||||
-rw-r--r-- | sw/source/ui/shells/textfld.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/uno/unoatxt.cxx | 3 |
20 files changed, 166 insertions, 186 deletions
diff --git a/cui/source/inc/macroass.hxx b/cui/source/inc/macroass.hxx index 849ac45285ce..bca7bf490cd0 100644 --- a/cui/source/inc/macroass.hxx +++ b/cui/source/inc/macroass.hxx @@ -100,7 +100,7 @@ inline void _SfxMacroTabPage::SetMacroTbl( const SvxMacroTableDtor& rTbl ) inline void _SfxMacroTabPage::ClearMacroTbl() { - aTbl.DelDtor(); + aTbl.clear(); } class SfxMacroTabPage : public _SfxMacroTabPage diff --git a/cui/source/tabpages/macroass.cxx b/cui/source/tabpages/macroass.cxx index 3128df1ec49c..62f38c2eafab 100644 --- a/cui/source/tabpages/macroass.cxx +++ b/cui/source/tabpages/macroass.cxx @@ -329,8 +329,7 @@ IMPL_STATIC_LINK( _SfxMacroTabPage, AssignDeleteHdl_Impl, PushButton*, pBtn ) // aus der Tabelle entfernen sal_uInt16 nEvent = (sal_uInt16)(sal_uLong)pE->GetUserData(); - SvxMacro *pRemoveMacro = pThis->aTbl.Remove( nEvent ); - delete pRemoveMacro; + pThis->aTbl.Erase( nEvent ); String sScriptURI; if( bAssEnabled ) @@ -339,13 +338,13 @@ IMPL_STATIC_LINK( _SfxMacroTabPage, AssignDeleteHdl_Impl, PushButton*, pBtn ) if( sScriptURI.CompareToAscii( "vnd.sun.star.script:", 20 ) == COMPARE_EQUAL ) { pThis->aTbl.Insert( - nEvent, new SvxMacro( sScriptURI, String::CreateFromAscii( SVX_MACRO_LANGUAGE_SF ) ) ); + nEvent, SvxMacro( sScriptURI, String::CreateFromAscii( SVX_MACRO_LANGUAGE_SF ) ) ); } else { OSL_ENSURE( false, "_SfxMacroTabPage::AssignDeleteHdl_Impl: this branch is *not* dead? (out of interest: tell fs, please!)" ); pThis->aTbl.Insert( - nEvent, new SvxMacro( sScriptURI, String::CreateFromAscii( SVX_MACRO_LANGUAGE_STARBASIC ) ) ); + nEvent, SvxMacro( sScriptURI, String::CreateFromAscii( SVX_MACRO_LANGUAGE_STARBASIC ) ) ); } } diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index 61d20f140967..1ab7def96766 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -309,7 +309,7 @@ void ScDrawShell::ExecuteMacroAssign( SdrObject* pObj, Window* pWin ) { SvxMacroTableDtor aTab; rtl::OUString sMacro = pInfo->GetMacro(); - aTab.Insert(SFX_EVENT_MOUSECLICK_OBJECT, new SvxMacro(sMacro, rtl::OUString())); + aTab.Insert(SFX_EVENT_MOUSECLICK_OBJECT, SvxMacro(sMacro, rtl::OUString())); aItem.SetMacroTable( aTab ); } @@ -334,7 +334,7 @@ void ScDrawShell::ExecuteMacroAssign( SdrObject* pObj, Window* pWin ) if( SFX_ITEM_SET == pOutSet->GetItemState( SID_ATTR_MACROITEM, false, &pItem )) { rtl::OUString sMacro; - SvxMacro* pMacro = ((SvxMacroItem*)pItem)->GetMacroTable().Get( SFX_EVENT_MOUSECLICK_OBJECT ); + const SvxMacro* pMacro = ((SvxMacroItem*)pItem)->GetMacroTable().Get( SFX_EVENT_MOUSECLICK_OBJECT ); if ( pMacro ) sMacro = pMacro->GetMacName(); diff --git a/sfx2/source/bastyp/sfxhtml.cxx b/sfx2/source/bastyp/sfxhtml.cxx index 2f3a7ad6089e..6a3fee662876 100644 --- a/sfx2/source/bastyp/sfxhtml.cxx +++ b/sfx2/source/bastyp/sfxhtml.cxx @@ -177,8 +177,7 @@ IMAPOBJ_SETEVENT: if( sTmp.Len() ) { sTmp = convertLineEnd(sTmp, GetSystemLineEnd()); - aMacroTbl.Insert( nEvent, - new SvxMacro( sTmp, sEmpty, eScrpType )); + aMacroTbl.Insert( nEvent, SvxMacro( sTmp, sEmpty, eScrpType )); } } break; @@ -198,7 +197,7 @@ IMAPOBJ_SETEVENT: aCoords[2], aCoords[3] ); IMapRectangleObject aMapRObj( aRec, aHRef, aAlt, String(), aTarget, aName, !bNoHRef ); - if( aMacroTbl.Count() ) + if( !aMacroTbl.empty() ) aMapRObj.SetMacroTable( aMacroTbl ); pImageMap->InsertIMapObject( aMapRObj ); } @@ -209,7 +208,7 @@ IMAPOBJ_SETEVENT: Point aPoint( aCoords[0], aCoords[1] ); IMapCircleObject aMapCObj( aPoint, aCoords[2],aHRef, aAlt, String(), aTarget, aName, !bNoHRef ); - if( aMacroTbl.Count() ) + if( !aMacroTbl.empty() ) aMapCObj.SetMacroTable( aMacroTbl ); pImageMap->InsertIMapObject( aMapCObj ); } @@ -223,7 +222,7 @@ IMAPOBJ_SETEVENT: aPoly[i] = Point( aCoords[2*i], aCoords[2*i+1] ); IMapPolygonObject aMapPObj( aPoly, aHRef, aAlt, String(), aTarget, aName, !bNoHRef ); - if( aMacroTbl.Count() ) + if( !aMacroTbl.empty() ) aMapPObj.SetMacroTable( aMacroTbl ); pImageMap->InsertIMapObject( aMapPObj ); } diff --git a/svl/inc/svl/macitem.hxx b/svl/inc/svl/macitem.hxx index 7261316ee7dc..95bd7458c4f3 100644 --- a/svl/inc/svl/macitem.hxx +++ b/svl/inc/svl/macitem.hxx @@ -35,8 +35,7 @@ #include <tools/rtti.hxx> #include <tools/debug.hxx> #include <tools/string.hxx> - -#include <tools/table.hxx> +#include <map> class SvStream; @@ -114,34 +113,51 @@ inline SvxMacro::SvxMacro( SjJSbxObjectBase* _pFunctionObject, const ::rtl::OUSt //Macro Table, zerstoert die Pointer im DTor! -DECLARE_TABLE( _SvxMacroTableDtor, SvxMacro* ) +typedef std::map<sal_uInt16, SvxMacro> SvxMacroTable; #define SVX_MACROTBL_VERSION31 0 #define SVX_MACROTBL_VERSION40 1 #define SVX_MACROTBL_AKTVERSION SVX_MACROTBL_VERSION40 -class SVL_DLLPUBLIC SvxMacroTableDtor : public _SvxMacroTableDtor +class SVL_DLLPUBLIC SvxMacroTableDtor { +private: + SvxMacroTable aSvxMacroTable; public: - inline SvxMacroTableDtor( const sal_uInt16 nInitSz = 0, const sal_uInt16 nReSz = 1 ); - inline SvxMacroTableDtor( const SvxMacroTableDtor &rCpy ) : _SvxMacroTableDtor() { *this = rCpy; } - inline ~SvxMacroTableDtor() { DelDtor(); } + inline SvxMacroTableDtor() {} + inline SvxMacroTableDtor( const SvxMacroTableDtor &rCpy ) : aSvxMacroTable(rCpy.aSvxMacroTable) { } + SvxMacroTableDtor& operator=( const SvxMacroTableDtor &rCpy ); + int operator==( const SvxMacroTableDtor& rOther ) const; // loescht alle Eintraege - void DelDtor(); + void clear() { aSvxMacroTable.clear(); } SvStream& Read( SvStream &, sal_uInt16 nVersion = SVX_MACROTBL_AKTVERSION ); SvStream& Write( SvStream & ) const; sal_uInt16 GetVersion() const { return SVX_MACROTBL_AKTVERSION; } + + SvxMacroTable::iterator begin() { return aSvxMacroTable.begin(); } + SvxMacroTable::const_iterator begin() const { return aSvxMacroTable.begin(); } + SvxMacroTable::iterator end() { return aSvxMacroTable.end(); } + SvxMacroTable::const_iterator end () const { return aSvxMacroTable.end(); } + SvxMacroTable::size_type size() const { return aSvxMacroTable.size(); } + bool empty() const { return aSvxMacroTable.empty(); } + + // returns NULL if no entry exists, or a pointer to the internal value + const SvxMacro* Get(sal_uInt16 nEvent) const; + // returns NULL if no entry exists, or a pointer to the internal value + SvxMacro* Get(sal_uInt16 nEvent); + // return true if the key exists + bool IsKeyValid(sal_uInt16 nEvent) const; + // This stores a copy of the rMacro parameter + SvxMacro& Insert(sal_uInt16 nEvent, const SvxMacro& rMacro); + // If the entry exists, remove it from the map and release it's storage + sal_Bool Erase(sal_uInt16 nEvent); }; -inline SvxMacroTableDtor::SvxMacroTableDtor( const sal_uInt16 nInitSz, - const sal_uInt16 nReSz) - : _SvxMacroTableDtor( nInitSz, nReSz ) -{} /* [Beschreibung] @@ -200,9 +216,7 @@ inline const SvxMacro& SvxMacroItem::GetMacro( sal_uInt16 nEvent ) const } inline sal_Bool SvxMacroItem::DelMacro( sal_uInt16 nEvent ) { - SvxMacro *pMacro = aMacroTable.Remove( nEvent ); - delete pMacro; - return ( pMacro != 0 ); + return aMacroTable.Erase(nEvent); } #endif diff --git a/svl/source/items/macitem.cxx b/svl/source/items/macitem.cxx index 44abf8589217..c2c41016a381 100644 --- a/svl/source/items/macitem.cxx +++ b/svl/source/items/macitem.cxx @@ -99,20 +99,36 @@ SvxMacro& SvxMacro::operator=( const SvxMacro& rBase ) return *this; } +// ----------------------------------------------------------------------- SvxMacroTableDtor& SvxMacroTableDtor::operator=( const SvxMacroTableDtor& rTbl ) { - DelDtor(); - SvxMacro* pTmp = ((SvxMacroTableDtor&)rTbl).First(); - while( pTmp ) - { - SvxMacro *pNew = new SvxMacro( *pTmp ); - Insert( rTbl.GetCurKey(), pNew ); - pTmp = ((SvxMacroTableDtor&)rTbl).Next(); - } + aSvxMacroTable.clear(); + aSvxMacroTable.insert(rTbl.aSvxMacroTable.begin(), rTbl.aSvxMacroTable.end()); return *this; } +int SvxMacroTableDtor::operator==( const SvxMacroTableDtor& rOther ) const +{ + // Anzahl unterschiedlich => auf jeden Fall ungleich + if ( aSvxMacroTable.size() != rOther.aSvxMacroTable.size() ) + return sal_False; + + // einzeln verleichen; wegen Performance ist die Reihenfolge wichtig + SvxMacroTable::const_iterator it1 = aSvxMacroTable.begin(); + SvxMacroTable::const_iterator it2 = rOther.aSvxMacroTable.begin(); + for ( ; it1 != aSvxMacroTable.end(); ++it1, ++it2 ) + { + const SvxMacro& rOwnMac = it1->second; + const SvxMacro& rOtherMac = it2->second; + if ( it1->first != it2->first || + rOwnMac.GetLibName() != rOtherMac.GetLibName() || + rOwnMac.GetMacName() != rOtherMac.GetMacName() ) + return sal_False; + } + + return sal_True; +} SvStream& SvxMacroTableDtor::Read( SvStream& rStrm, sal_uInt16 nVersion ) { @@ -132,16 +148,7 @@ SvStream& SvxMacroTableDtor::Read( SvStream& rStrm, sal_uInt16 nVersion ) if( SVX_MACROTBL_VERSION40 <= nVersion ) rStrm >> eType; - SvxMacro* pNew = new SvxMacro( aMacName, aLibName, (ScriptType)eType ); - - SvxMacro *pOld = Get( nCurKey ); - if( pOld ) - { - delete pOld; - Replace( nCurKey, pNew ); - } - else - Insert( nCurKey, pNew ); + aSvxMacroTable.insert( SvxMacroTable::value_type(nCurKey, SvxMacro( aMacName, aLibName, (ScriptType)eType ) )); } return rStrm; } @@ -156,33 +163,60 @@ SvStream& SvxMacroTableDtor::Write( SvStream& rStream ) const if( SVX_MACROTBL_VERSION40 <= nVersion ) rStream << nVersion; - rStream << (sal_uInt16)Count(); + rStream << (sal_uInt16)aSvxMacroTable.size(); - SvxMacro* pMac = ((SvxMacroTableDtor*)this)->First(); - while( pMac && rStream.GetError() == SVSTREAM_OK ) + SvxMacroTable::const_iterator it = aSvxMacroTable.begin(); + while( it != aSvxMacroTable.end() && rStream.GetError() == SVSTREAM_OK ) { - rStream << (short)GetCurKey(); - SfxPoolItem::writeByteString(rStream, pMac->GetLibName()); - SfxPoolItem::writeByteString(rStream, pMac->GetMacName()); + const SvxMacro& rMac = it->second; + rStream << it->first; + SfxPoolItem::writeByteString(rStream, rMac.GetLibName()); + SfxPoolItem::writeByteString(rStream, rMac.GetMacName()); if( SVX_MACROTBL_VERSION40 <= nVersion ) - rStream << (sal_uInt16)pMac->GetScriptType(); - pMac = ((SvxMacroTableDtor*)this)->Next(); + rStream << (sal_uInt16)rMac.GetScriptType(); + ++it; } return rStream; } -// ----------------------------------------------------------------------- +// returns NULL if no entry exists, or a pointer to the internal value +const SvxMacro* SvxMacroTableDtor::Get(sal_uInt16 nEvent) const +{ + SvxMacroTable::const_iterator it = aSvxMacroTable.find(nEvent); + return it == aSvxMacroTable.end() ? NULL : &(it->second); +} + +// returns NULL if no entry exists, or a pointer to the internal value +SvxMacro* SvxMacroTableDtor::Get(sal_uInt16 nEvent) +{ + SvxMacroTable::iterator it = aSvxMacroTable.find(nEvent); + return it == aSvxMacroTable.end() ? NULL : &(it->second); +} + +// return true if the key exists +bool SvxMacroTableDtor::IsKeyValid(sal_uInt16 nEvent) const +{ + SvxMacroTable::const_iterator it = aSvxMacroTable.find(nEvent); + return it != aSvxMacroTable.end(); +} -void SvxMacroTableDtor::DelDtor() +// This stores a copy of the rMacro parameter +SvxMacro& SvxMacroTableDtor::Insert(sal_uInt16 nEvent, const SvxMacro& rMacro) { - SvxMacro* pTmp = First(); - while( pTmp ) + return aSvxMacroTable.insert( SvxMacroTable::value_type( nEvent, rMacro ) ).first->second; +} + +// If the entry exists, remove it from the map and release it's storage +sal_Bool SvxMacroTableDtor::Erase(sal_uInt16 nEvent) +{ + SvxMacroTable::iterator it = aSvxMacroTable.find(nEvent); + if ( it != aSvxMacroTable.end()) { - delete pTmp; - pTmp = Next(); + aSvxMacroTable.erase(it); + return sal_True; } - Clear(); + return sal_False; } // ----------------------------------------------------------------------- @@ -194,22 +228,7 @@ int SvxMacroItem::operator==( const SfxPoolItem& rAttr ) const const SvxMacroTableDtor& rOwn = aMacroTable; const SvxMacroTableDtor& rOther = ( (SvxMacroItem&) rAttr ).aMacroTable; - // Anzahl unterschiedlich => auf jeden Fall ungleich - if ( rOwn.Count() != rOther.Count() ) - return sal_False; - - // einzeln verleichen; wegen Performance ist die Reihenfolge wichtig - for ( sal_uInt16 nNo = 0; nNo < rOwn.Count(); ++nNo ) - { - const SvxMacro *pOwnMac = rOwn.GetObject(nNo); - const SvxMacro *pOtherMac = rOther.GetObject(nNo); - if ( rOwn.GetKey(pOwnMac) != rOther.GetKey(pOtherMac) || - pOwnMac->GetLibName() != pOtherMac->GetLibName() || - pOwnMac->GetMacName() != pOtherMac->GetMacName() ) - return sal_False; - } - - return sal_True; + return rOwn == rOther; } // ----------------------------------------------------------------------- @@ -268,14 +287,7 @@ SfxPoolItem* SvxMacroItem::Create( SvStream& rStrm, sal_uInt16 nVersion ) const void SvxMacroItem::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro ) { - SvxMacro *pMacro; - if ( 0 != (pMacro=aMacroTable.Get(nEvent)) ) - { - delete pMacro; - aMacroTable.Replace(nEvent, new SvxMacro( rMacro ) ); - } - else - aMacroTable.Insert(nEvent, new SvxMacro( rMacro ) ); + aMacroTable.Insert( nEvent, rMacro); } // ----------------------------------------------------------------------- diff --git a/svtools/inc/svtools/imapobj.hxx b/svtools/inc/svtools/imapobj.hxx index f97850c061de..ee523c596390 100644 --- a/svtools/inc/svtools/imapobj.hxx +++ b/svtools/inc/svtools/imapobj.hxx @@ -152,9 +152,7 @@ inline const SvxMacro& IMapObject::GetEvent( sal_uInt16 nEvent ) const } inline sal_Bool IMapObject::DelEvent( sal_uInt16 nEvent ) { - SvxMacro *pMacro = aEventList.Remove( nEvent ); - delete pMacro; - return ( pMacro != 0 ); + return aEventList.Erase( nEvent ); } #endif diff --git a/svtools/source/svhtml/htmlout.cxx b/svtools/source/svhtml/htmlout.cxx index 3544a0dd5c5a..d35d4af48b11 100644 --- a/svtools/source/svhtml/htmlout.cxx +++ b/svtools/source/svhtml/htmlout.cxx @@ -770,7 +770,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream, } const SvxMacroTableDtor& rMacroTab = pObj->GetMacroTable(); - if( pEventTable && rMacroTab.Count() ) + if( pEventTable && !rMacroTab.empty() ) Out_Events( rStream, rMacroTab, pEventTable, bOutStarBasic, eDestEnc, pNonConvertableChars ); diff --git a/svtools/source/uno/unoevent.cxx b/svtools/source/uno/unoevent.cxx index 1a8f9ff9d803..f8894d4a73ab 100644 --- a/svtools/source/uno/unoevent.cxx +++ b/svtools/source/uno/unoevent.cxx @@ -579,9 +579,8 @@ void SvMacroTableEventDescriptor::copyMacrosIntoTable( const sal_uInt16 nEvent = mpSupportedMacroItems[i].mnEvent; if (hasByName(nEvent)) { - SvxMacro* pMacro = new SvxMacro(sEmpty, sEmpty); - getByName(*pMacro, nEvent); - rMacroTable.Insert(nEvent, pMacro); + SvxMacro& rMacro = rMacroTable.Insert(nEvent, SvxMacro(sEmpty, sEmpty)); + getByName(rMacro, nEvent); } } } diff --git a/svx/source/items/hlnkitem.cxx b/svx/source/items/hlnkitem.cxx index bc663b26a6aa..bb1abb2b0c38 100644 --- a/svx/source/items/hlnkitem.cxx +++ b/svx/source/items/hlnkitem.cxx @@ -70,12 +70,13 @@ SvStream& SvxHyperlinkItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ rStrm << nMacroEvents; // store macros - sal_uInt16 nCnt = pMacroTable ? (sal_uInt16)pMacroTable->Count() : 0; + sal_uInt16 nCnt = pMacroTable ? (sal_uInt16)pMacroTable->size() : 0; sal_uInt16 nMax = nCnt; if( nCnt ) { - for( SvxMacro* pMac = pMacroTable->First(); pMac; pMac = pMacroTable->Next() ) - if( STARBASIC != pMac->GetScriptType() ) + for ( SvxMacroTable::const_iterator it = pMacroTable->begin(); + it != pMacroTable->end(); ++it) + if( STARBASIC != it->second.GetScriptType() ) --nCnt; } @@ -84,17 +85,19 @@ SvStream& SvxHyperlinkItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ if( nCnt ) { // 1. StarBasic-Macros - for( SvxMacro* pMac = pMacroTable->First(); pMac; pMac = pMacroTable->Next() ) + for ( SvxMacroTable::const_iterator it = pMacroTable->begin(); + it != pMacroTable->end(); ++it) { - if( STARBASIC == pMac->GetScriptType() ) + const SvxMacro& rMac = it->second; + if( STARBASIC == rMac.GetScriptType() ) { - rStrm << (sal_uInt16)pMacroTable->GetCurKey(); + rStrm << (sal_uInt16)it->first; // UNICODE: rStrm << pMac->GetLibName(); - rStrm.WriteUniOrByteString(pMac->GetLibName(), rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(rMac.GetLibName(), rStrm.GetStreamCharSet()); // UNICODE: rStrm << pMac->GetMacName(); - rStrm.WriteUniOrByteString(pMac->GetMacName(), rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(rMac.GetMacName(), rStrm.GetStreamCharSet()); } } } @@ -104,19 +107,21 @@ SvStream& SvxHyperlinkItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ if( nCnt ) { // 2. ::com::sun::star::script::JavaScript-Macros - for( SvxMacro* pMac = pMacroTable->First(); pMac; pMac = pMacroTable->Next() ) + for ( SvxMacroTable::const_iterator it = pMacroTable->begin(); + it != pMacroTable->end(); ++it) { - if( STARBASIC != pMac->GetScriptType() ) + const SvxMacro& rMac = it->second; + if( STARBASIC != rMac.GetScriptType() ) { - rStrm << (sal_uInt16)pMacroTable->GetCurKey(); + rStrm << (sal_uInt16)it->first; // UNICODE: rStrm << pMac->GetLibName(); - rStrm.WriteUniOrByteString(pMac->GetLibName(), rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(rMac.GetLibName(), rStrm.GetStreamCharSet()); // UNICODE: rStrm << pMac->GetMacName(); - rStrm.WriteUniOrByteString(pMac->GetMacName(), rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(rMac.GetMacName(), rStrm.GetStreamCharSet()); - rStrm << (sal_uInt16)pMac->GetScriptType(); + rStrm << (sal_uInt16)rMac.GetScriptType(); } } } @@ -254,29 +259,14 @@ int SvxHyperlinkItem::operator==( const SfxPoolItem& rAttr ) const const SvxMacroTableDtor* pOther = ((SvxHyperlinkItem&)rAttr).pMacroTable; if( !pMacroTable ) - return ( !pOther || !pOther->Count() ); + return ( !pOther || pOther->empty() ); if( !pOther ) - return 0 == pMacroTable->Count(); + return pMacroTable->empty(); const SvxMacroTableDtor& rOwn = *pMacroTable; const SvxMacroTableDtor& rOther = *pOther; - // Anzahl unterschiedlich => auf jeden Fall ungleich - if( rOwn.Count() != rOther.Count() ) - return sal_False; - - // einzeln vergleichen; wegen Performance ist die Reihenfolge wichtig - for( sal_uInt16 nNo = 0; nNo < rOwn.Count(); ++nNo ) - { - const SvxMacro *pOwnMac = rOwn.GetObject(nNo); - const SvxMacro *pOtherMac = rOther.GetObject(nNo); - if ( rOwn.GetKey(pOwnMac) != rOther.GetKey(pOtherMac) || - pOwnMac->GetLibName() != pOtherMac->GetLibName() || - pOwnMac->GetMacName() != pOtherMac->GetMacName() ) - return sal_False; - } - - return sal_True; + return rOwn == rOther; } void SvxHyperlinkItem::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro ) @@ -300,14 +290,7 @@ void SvxHyperlinkItem::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro ) if( !pMacroTable ) pMacroTable = new SvxMacroTableDtor; - SvxMacro *pOldMacro; - if( 0 != ( pOldMacro = pMacroTable->Get( nEvent )) ) - { - delete pOldMacro; - pMacroTable->Replace( nEvent, new SvxMacro( rMacro ) ); - } - else - pMacroTable->Insert( nEvent, new SvxMacro( rMacro ) ); + pMacroTable->Insert( nEvent, rMacro); } void SvxHyperlinkItem::SetMacroTable( const SvxMacroTableDtor& rTbl ) diff --git a/sw/source/core/txtnode/fmtatr2.cxx b/sw/source/core/txtnode/fmtatr2.cxx index f4167abb1146..eb70464d5502 100644 --- a/sw/source/core/txtnode/fmtatr2.cxx +++ b/sw/source/core/txtnode/fmtatr2.cxx @@ -246,28 +246,14 @@ int SwFmtINetFmt::operator==( const SfxPoolItem& rAttr ) const const SvxMacroTableDtor* pOther = ((SwFmtINetFmt&)rAttr).pMacroTbl; if( !pMacroTbl ) - return ( !pOther || !pOther->Count() ); + return ( !pOther || pOther->empty() ); if( !pOther ) - return 0 == pMacroTbl->Count(); + return pMacroTbl->empty(); const SvxMacroTableDtor& rOwn = *pMacroTbl; const SvxMacroTableDtor& rOther = *pOther; - // Anzahl unterschiedlich => auf jeden Fall ungleich - if( rOwn.Count() != rOther.Count() ) - return sal_False; - - // einzeln vergleichen; wegen Performance ist die Reihenfolge wichtig - for( sal_uInt16 nNo = 0; nNo < rOwn.Count(); ++nNo ) - { - const SvxMacro *pOwnMac = rOwn.GetObject(nNo); - const SvxMacro *pOtherMac = rOther.GetObject(nNo); - if ( rOwn.GetKey(pOwnMac) != rOther.GetKey(pOtherMac) || - pOwnMac->GetLibName() != pOtherMac->GetLibName() || - pOwnMac->GetMacName() != pOtherMac->GetMacName() ) - return sal_False; - } - return sal_True; + return rOwn == rOther; } @@ -299,14 +285,7 @@ void SwFmtINetFmt::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro ) if( !pMacroTbl ) pMacroTbl = new SvxMacroTableDtor; - SvxMacro *pOldMacro; - if( 0 != ( pOldMacro = pMacroTbl->Get( nEvent )) ) - { - delete pOldMacro; - pMacroTbl->Replace( nEvent, new SvxMacro( rMacro ) ); - } - else - pMacroTbl->Insert( nEvent, new SvxMacro( rMacro ) ); + pMacroTbl->Insert( nEvent, rMacro ); } diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx index 25b3b1132ff1..9d153124bcaf 100644 --- a/sw/source/filter/html/htmlatr.cxx +++ b/sw/source/filter/html/htmlatr.cxx @@ -3036,7 +3036,7 @@ Writer& OutHTML_INetFmt( Writer& rWrt, const SwFmtINetFmt& rINetFmt, sal_Bool bO String aURL( rINetFmt.GetValue() ); const SvxMacroTableDtor *pMacTable = rINetFmt.GetMacroTbl(); - sal_Bool bEvents = pMacTable != 0 && pMacTable->Count() > 0; + sal_Bool bEvents = pMacTable != 0 && !pMacTable->empty(); // Gibt es ueberhaupt etwas auszugeben? if( !aURL.Len() && !bEvents && !rINetFmt.GetName().Len() ) diff --git a/sw/source/filter/html/htmlbas.cxx b/sw/source/filter/html/htmlbas.cxx index 5fbd867d6d76..182d9a25aca2 100644 --- a/sw/source/filter/html/htmlbas.cxx +++ b/sw/source/filter/html/htmlbas.cxx @@ -342,10 +342,13 @@ void SwHTMLWriter::OutBasicBodyEvents() { SvxMacro* pMacro = SfxEventConfiguration::ConvertToMacro( xEvents->getByName( ::rtl::OUString::createFromAscii(aEventNames[i]) ), pDocSh, sal_True ); if ( pMacro ) - pDocTable->Insert( aBodyEventTable[i].nEvent, pMacro ); + { + pDocTable->Insert( aBodyEventTable[i].nEvent, *pMacro ); + delete pMacro; + } } - if( pDocTable && pDocTable->Count() ) + if( pDocTable && !pDocTable->empty() ) HTMLOutFuncs::Out_Events( Strm(), *pDocTable, aBodyEventTable, bCfgStarBasic, eDestEnc, &aNonConvertableCharacters ); } diff --git a/sw/source/filter/html/htmlfly.cxx b/sw/source/filter/html/htmlfly.cxx index e03b1d4d3f1d..419699295237 100644 --- a/sw/source/filter/html/htmlfly.cxx +++ b/sw/source/filter/html/htmlfly.cxx @@ -1017,7 +1017,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt, aName = pURLItem->GetName(); aTarget = pURLItem->GetTargetFrameName(); } - sal_Bool bEvents = pMacItem && pMacItem->GetMacroTable().Count(); + sal_Bool bEvents = pMacItem && !pMacItem->GetMacroTable().empty(); if( aMapURL.Len() || aName.Len() || aTarget.Len() || bEvents ) { @@ -1059,7 +1059,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt, if( pMacItem ) { const SvxMacroTableDtor& rMacTable = pMacItem->GetMacroTable(); - if( rMacTable.Count() ) + if( !rMacTable.empty() ) HTMLOutFuncs::Out_Events( rWrt.Strm(), rMacTable, aAnchorEventTable, rHTMLWrt.bCfgStarBasic, @@ -1161,7 +1161,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt, { const SvxMacroTableDtor& rMacTable = ((const SvxMacroItem *)pItem)->GetMacroTable(); - if( rMacTable.Count() ) + if( !rMacTable.empty() ) HTMLOutFuncs::Out_Events( rWrt.Strm(), rMacTable, aImageEventTable, rHTMLWrt.bCfgStarBasic, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ); diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx index d0afc811e096..8cdb4bf44819 100644 --- a/sw/source/filter/html/htmlform.cxx +++ b/sw/source/filter/html/htmlform.cxx @@ -437,7 +437,7 @@ SwHTMLImageWatcher::SwHTMLImageWatcher( OSL_ENSURE( xSrc.is(), "Kein XImageProducerSupplier" ); // Als Event-Listener am Shape anmelden, damit wir es beim dispose - // loslassen konnen ... + // loslassen konnen ... uno::Reference< XEventListener > xEvtLstnr = (XEventListener *)this; uno::Reference< XComponent > xComp( xShape, UNO_QUERY ); xComp->addEventListener( xEvtLstnr ); @@ -1293,7 +1293,7 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( // auch schon Fokus-Events verschickt. Damit die nicht evtl. schon // vorhendene JavaSCript-Eents rufen, werden die Events nachtraeglich // gesetzt. - if( rMacroTbl.Count() || !rUnoMacroTbl.empty() ) + if( !rMacroTbl.empty() || !rUnoMacroTbl.empty() ) { lcl_html_setEvents( pFormImpl->GetControlEventManager(), rFormComps->getCount() - 1, @@ -1393,8 +1393,7 @@ void SwHTMLParser::NewForm( sal_Bool bAppend ) String aScriptType2; if( EXTENDED_STYPE==eScriptType2 ) aScriptType2 = rDfltScriptType; - aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType2, - eScriptType2 ) ); + aMacroTbl.Insert( nEvent, SvxMacro( sEvent, aScriptType2, eScriptType2 ) ); } } } @@ -1456,7 +1455,7 @@ void SwHTMLParser::NewForm( sal_Bool bAppend ) pFormImpl->GetForms(); Any aAny( &xForm, ::getCppuType((uno::Reference< XForm>*)0) ); rForms->insertByIndex( rForms->getCount(), aAny ); - if( aMacroTbl.Count() ) + if( !aMacroTbl.empty() ) lcl_html_setEvents( pFormImpl->GetFormEventManager(), rForms->getCount() - 1, aMacroTbl, aUnoMacroTbl, aUnoMacroParamTbl, @@ -1625,8 +1624,7 @@ void SwHTMLParser::InsertInput() String aScriptType2; if( EXTENDED_STYPE==eScriptType2 ) aScriptType2 = rDfltScriptType; - aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType2, - eScriptType2 ) ); + aMacroTbl.Insert( nEvent, SvxMacro( sEvent, aScriptType2, eScriptType2 ) ); } } } @@ -1764,11 +1762,11 @@ void SwHTMLParser::InsertInput() OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultState")), aTmp ); } - SvxMacro *pMacro = aMacroTbl.Get( HTML_ET_ONCLICK ); + const SvxMacro* pMacro = aMacroTbl.Get( HTML_ET_ONCLICK ); if( pMacro ) { - aMacroTbl.Remove( HTML_ET_ONCLICK ); - aMacroTbl.Insert( HTML_ET_ONCLICK_ITEM, pMacro ); + aMacroTbl.Insert( HTML_ET_ONCLICK_ITEM, *pMacro ); + aMacroTbl.Erase( HTML_ET_ONCLICK ); } // SIZE auszuwerten duerfte hier keinen Sinn machen??? bMinWidth = bMinHeight = sal_True; @@ -2091,8 +2089,7 @@ void SwHTMLParser::NewTextArea() sEvent = convertLineEnd(sEvent, GetSystemLineEnd()); if( EXTENDED_STYPE==eScriptType2 ) aScriptType = rDfltScriptType; - aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType, - eScriptType2 ) ); + aMacroTbl.Insert( nEvent, SvxMacro( sEvent, aScriptType, eScriptType2 ) ); } } } @@ -2371,8 +2368,7 @@ void SwHTMLParser::NewSelect() sEvent = convertLineEnd(sEvent, GetSystemLineEnd()); if( EXTENDED_STYPE==eScriptType2 ) aScriptType = rDfltScriptType; - aMacroTbl.Insert( nEvent, new SvxMacro( sEvent, aScriptType, - eScriptType2 ) ); + aMacroTbl.Insert( nEvent, SvxMacro( sEvent, aScriptType, eScriptType2 ) ); } } } diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx index 88fc7058ea03..1607d6807ace 100644 --- a/sw/source/filter/html/htmlgrin.cxx +++ b/sw/source/filter/html/htmlgrin.cxx @@ -781,7 +781,7 @@ IMAGE_SETEVENT: } - if( aMacroItem.GetMacroTable().Count() ) + if( !aMacroItem.GetMacroTable().empty() ) pFlyFmt->SetFmtAttr( aMacroItem ); // Wenn die Grafik gleich angeforder wird, muss dies geschehen, @@ -1114,8 +1114,7 @@ ANCHOR_SETEVENT: String sScriptType; if( EXTENDED_STYPE == eScriptType2 ) sScriptType = sDfltScriptType; - aMacroTbl.Insert( nEvent, - new SvxMacro( sTmp, sScriptType, eScriptType2 )); + aMacroTbl.Insert( nEvent, SvxMacro( sTmp, sScriptType, eScriptType2 )); } } break; @@ -1207,7 +1206,7 @@ ANCHOR_SETEVENT: SwFmtINetFmt aINetFmt( sHRef, sTarget ); aINetFmt.SetName( aName ); - if( aMacroTbl.Count() ) + if( !aMacroTbl.empty() ) aINetFmt.SetMacroTbl( &aMacroTbl ); // das Default-Attribut setzen diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx index c57df00efd65..54c7c9bdd4b2 100644 --- a/sw/source/ui/chrdlg/chardlg.cxx +++ b/sw/source/ui/chrdlg/chardlg.cxx @@ -298,7 +298,7 @@ sal_Bool SwCharURLPage::FillItemSet(SfxItemSet& rSet) aINetFmt.SetINetFmtId( nId ); aINetFmt.SetINetFmt(nId == RES_POOLCHR_INET_NORMAL ? aEmptyStr : sEntry); - if( pINetItem && pINetItem->GetMacroTable().Count() ) + if( pINetItem && !pINetItem->GetMacroTable().empty() ) aINetFmt.SetMacroTbl( &pINetItem->GetMacroTable() ); if(aVisitedLB.GetSavedValue() != aVisitedLB.GetSelectEntryPos()) diff --git a/sw/source/ui/dochdl/gloshdl.cxx b/sw/source/ui/dochdl/gloshdl.cxx index 13d2d2ea2964..6e87f25d12e2 100644 --- a/sw/source/ui/dochdl/gloshdl.cxx +++ b/sw/source/ui/dochdl/gloshdl.cxx @@ -628,9 +628,9 @@ void SwGlossaryHdl::SetMacros(const String& rShortName, : rStatGlossaries.GetGroupDoc( aCurGrp ); SvxMacroTableDtor aMacroTbl; if( pStart ) - aMacroTbl.Insert( SW_EVENT_START_INS_GLOSSARY, new SvxMacro(*pStart)); + aMacroTbl.Insert( SW_EVENT_START_INS_GLOSSARY, *pStart); if( pEnd ) - aMacroTbl.Insert( SW_EVENT_END_INS_GLOSSARY, new SvxMacro(*pEnd)); + aMacroTbl.Insert( SW_EVENT_END_INS_GLOSSARY, *pEnd); sal_uInt16 nIdx = pGlos->GetIndex( rShortName ); if( !pGlos->SetMacroTable( nIdx, aMacroTbl ) && pGlos->GetError() ) ErrorHandler::HandleError( pGlos->GetError() ); diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx index b6d674d2e98c..21b81490774d 100644 --- a/sw/source/ui/shells/textfld.cxx +++ b/sw/source/ui/shells/textfld.cxx @@ -740,7 +740,7 @@ void SwTextShell::InsertHyperlink(const SvxHyperlinkItem& rHlnkItem) aINetFmt.SetName(rHlnkItem.GetIntName()); if(pMacroTbl) { - SvxMacro *pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOVER_OBJECT ); + const SvxMacro *pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOVER_OBJECT ); if( pMacro ) aINetFmt.SetMacro(SFX_EVENT_MOUSEOVER_OBJECT, *pMacro); pMacro = pMacroTbl->Get( SFX_EVENT_MOUSECLICK_OBJECT ); diff --git a/sw/source/ui/uno/unoatxt.cxx b/sw/source/ui/uno/unoatxt.cxx index 0b5844ca68a5..e22d01d64c44 100644 --- a/sw/source/ui/uno/unoatxt.cxx +++ b/sw/source/ui/uno/unoatxt.cxx @@ -1087,8 +1087,7 @@ void SwAutoTextEventDescriptor::replaceByName( SvxMacroTableDtor aMacroTable; if( pBlocks->GetMacroTable( nIndex, aMacroTable ) ) { - SvxMacro* pNewMacro = new SvxMacro(rMacro); - aMacroTable.Replace( nEvent, pNewMacro ); + aMacroTable.Insert( nEvent, rMacro ); pBlocks->SetMacroTable( nIndex, aMacroTable ); } } |