summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2012-03-08 15:53:57 +0200
committerTor Lillqvist <tlillqvist@suse.com>2012-03-08 16:07:22 +0200
commit4b4fb33c606fd068e024669efcbd7ad2aefdaacd (patch)
tree2cea747768a081773303ba0844c0ea0f558530f9
parent1fad074f43e3301420900918881ad1a8b0bc8687 (diff)
Convert from tools/table.hxx to std::map in SvxMacroTableDtor
In this case, we also convert from storing pointers to storing the items directly because SvxMacroTableDtor completely controls the lifecycle of the SvxMacro objects it contains. Also add an operator== to SvxMacroTableDtor and remove the out-of-line implementations of equals from two other places.
-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 konnen ...
+ // 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 );
}
}