summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/inc/macroass.hxx2
-rw-r--r--cui/source/tabpages/macroass.cxx7
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx4
-rw-r--r--sfx2/source/bastyp/sfxhtml.cxx9
-rw-r--r--svl/inc/svl/macitem.hxx44
-rw-r--r--svl/source/items/macitem.cxx126
-rw-r--r--svtools/inc/svtools/imapobj.hxx4
-rw-r--r--svtools/source/svhtml/htmlout.cxx2
-rw-r--r--svtools/source/uno/unoevent.cxx5
-rw-r--r--svx/source/items/hlnkitem.cxx63
-rw-r--r--sw/source/core/txtnode/fmtatr2.cxx29
-rw-r--r--sw/source/filter/html/htmlatr.cxx2
-rw-r--r--sw/source/filter/html/htmlbas.cxx7
-rw-r--r--sw/source/filter/html/htmlfly.cxx6
-rw-r--r--sw/source/filter/html/htmlform.cxx24
-rw-r--r--sw/source/filter/html/htmlgrin.cxx7
-rw-r--r--sw/source/ui/chrdlg/chardlg.cxx2
-rw-r--r--sw/source/ui/dochdl/gloshdl.cxx4
-rw-r--r--sw/source/ui/shells/textfld.cxx2
-rw-r--r--sw/source/ui/uno/unoatxt.cxx3
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 ko”nnen ...
+ // loslassen ko”nnen ...
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 );
}
}