Kaydet (Commit) 0313e253 authored tarafından August Sodora's avatar August Sodora

SvStringsDtor->boost::ptr_vector

üst 74461dae
...@@ -30,15 +30,15 @@ ...@@ -30,15 +30,15 @@
#include <svx/clipfmtitem.hxx> #include <svx/clipfmtitem.hxx>
#include <com/sun/star/frame/status/ClipboardFormats.hpp> #include <com/sun/star/frame/status/ClipboardFormats.hpp>
#include <vector> #include <boost/ptr_container/ptr_vector.hpp>
struct SvxClipboardFmtItem_Impl struct SvxClipboardFmtItem_Impl
{ {
SvStringsDtor aFmtNms; boost::ptr_vector<boost::nullable<String>> aFmtNms;
std::vector<sal_uIntPtr> aFmtIds; std::vector<sal_uIntPtr> aFmtIds;
static String sEmptyStr; static String sEmptyStr;
SvxClipboardFmtItem_Impl() : aFmtNms( 8, 8 ) {} SvxClipboardFmtItem_Impl() {}
SvxClipboardFmtItem_Impl( const SvxClipboardFmtItem_Impl& ); SvxClipboardFmtItem_Impl( const SvxClipboardFmtItem_Impl& );
}; };
...@@ -48,15 +48,9 @@ TYPEINIT1_FACTORY( SvxClipboardFmtItem, SfxPoolItem , new SvxClipboardFmtItem(0 ...@@ -48,15 +48,9 @@ TYPEINIT1_FACTORY( SvxClipboardFmtItem, SfxPoolItem , new SvxClipboardFmtItem(0
SvxClipboardFmtItem_Impl::SvxClipboardFmtItem_Impl( SvxClipboardFmtItem_Impl::SvxClipboardFmtItem_Impl(
const SvxClipboardFmtItem_Impl& rCpy ) const SvxClipboardFmtItem_Impl& rCpy )
: aFmtIds(rCpy.aFmtIds) : aFmtNms(rCpy.aFmtNms)
, aFmtIds(rCpy.aFmtIds)
{ {
for( sal_uInt16 n = 0, nEnd = rCpy.aFmtNms.Count(); n < nEnd; ++n )
{
String* pStr = rCpy.aFmtNms[ n ];
if( pStr )
pStr = new String( *pStr );
aFmtNms.Insert( pStr, n );
}
} }
SvxClipboardFmtItem::SvxClipboardFmtItem( sal_uInt16 nId ) SvxClipboardFmtItem::SvxClipboardFmtItem( sal_uInt16 nId )
...@@ -101,7 +95,7 @@ bool SvxClipboardFmtItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_ ...@@ -101,7 +95,7 @@ bool SvxClipboardFmtItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_
sal_uInt16 nCount = sal_uInt16( aClipFormats.Identifiers.getLength() ); sal_uInt16 nCount = sal_uInt16( aClipFormats.Identifiers.getLength() );
pImpl->aFmtIds.clear(); pImpl->aFmtIds.clear();
pImpl->aFmtNms.Remove( 0, pImpl->aFmtNms.Count() ); pImpl->aFmtNms.clear();
for ( sal_uInt16 n=0; n < nCount; n++ ) for ( sal_uInt16 n=0; n < nCount; n++ )
AddClipbrdFormat( sal_uIntPtr( aClipFormats.Identifiers[n] ), aClipFormats.Names[n], n ); AddClipbrdFormat( sal_uIntPtr( aClipFormats.Identifiers[n] ), aClipFormats.Names[n], n );
...@@ -113,24 +107,24 @@ bool SvxClipboardFmtItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_ ...@@ -113,24 +107,24 @@ bool SvxClipboardFmtItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_
int SvxClipboardFmtItem::operator==( const SfxPoolItem& rComp ) const int SvxClipboardFmtItem::operator==( const SfxPoolItem& rComp ) const
{ {
int nRet = 0;
const SvxClipboardFmtItem& rCmp = (SvxClipboardFmtItem&)rComp; const SvxClipboardFmtItem& rCmp = (SvxClipboardFmtItem&)rComp;
if( rCmp.pImpl->aFmtNms.Count() == pImpl->aFmtNms.Count() ) if(rCmp.pImpl->aFmtNms.size() != pImpl->aFmtNms.size())
return 0;
int nRet = 1;
const String* pStr1, *pStr2;
for( sal_uInt16 n = 0, nEnd = rCmp.pImpl->aFmtNms.size(); n < nEnd; ++n )
{ {
nRet = 1; if( pImpl->aFmtIds[ n ] != rCmp.pImpl->aFmtIds[ n ] ||
const String* pStr1, *pStr2; ( (0 == ( pStr1 = &(pImpl->aFmtNms[n]) )) ^
for( sal_uInt16 n = 0, nEnd = rCmp.pImpl->aFmtNms.Count(); n < nEnd; ++n ) (0 == ( pStr2 = &(rCmp.pImpl->aFmtNms[n]) ) )) ||
( pStr1 && *pStr1 != *pStr2 ))
{ {
if( pImpl->aFmtIds[ n ] != rCmp.pImpl->aFmtIds[ n ] || nRet = 0;
( (0 == ( pStr1 = pImpl->aFmtNms[ n ] )) ^ break;
(0 == ( pStr2 = rCmp.pImpl->aFmtNms[ n ] ) )) ||
( pStr1 && *pStr1 != *pStr2 ))
{
nRet = 0;
break;
}
} }
} }
return nRet; return nRet;
} }
...@@ -141,20 +135,20 @@ SfxPoolItem* SvxClipboardFmtItem::Clone( SfxItemPool * /*pPool*/ ) const ...@@ -141,20 +135,20 @@ SfxPoolItem* SvxClipboardFmtItem::Clone( SfxItemPool * /*pPool*/ ) const
void SvxClipboardFmtItem::AddClipbrdFormat( sal_uIntPtr nId, sal_uInt16 nPos ) void SvxClipboardFmtItem::AddClipbrdFormat( sal_uIntPtr nId, sal_uInt16 nPos )
{ {
if( nPos > pImpl->aFmtNms.Count() ) if( nPos > pImpl->aFmtNms.size() )
nPos = pImpl->aFmtNms.Count(); nPos = pImpl->aFmtNms.size();
String* pStr = 0;
pImpl->aFmtNms.Insert( pStr, nPos ); pImpl->aFmtNms.insert(pImpl->aFmtNms.begin() + nPos, NULL);
pImpl->aFmtIds.insert( pImpl->aFmtIds.begin()+nPos, nId ); pImpl->aFmtIds.insert( pImpl->aFmtIds.begin()+nPos, nId );
} }
void SvxClipboardFmtItem::AddClipbrdFormat( sal_uIntPtr nId, const String& rName, void SvxClipboardFmtItem::AddClipbrdFormat( sal_uIntPtr nId, const String& rName,
sal_uInt16 nPos ) sal_uInt16 nPos )
{ {
if( nPos > pImpl->aFmtNms.Count() ) if( nPos > pImpl->aFmtNms.size() )
nPos = pImpl->aFmtNms.Count(); nPos = pImpl->aFmtNms.size();
String* pStr = new String( rName );
pImpl->aFmtNms.Insert( pStr, nPos ); pImpl->aFmtNms.insert(pImpl->aFmtNms.begin() + nPos, new String(rName));
pImpl->aFmtIds.insert( pImpl->aFmtIds.begin()+nPos, nId ); pImpl->aFmtIds.insert( pImpl->aFmtIds.begin()+nPos, nId );
} }
...@@ -170,7 +164,7 @@ sal_uIntPtr SvxClipboardFmtItem::GetClipbrdFormatId( sal_uInt16 nPos ) const ...@@ -170,7 +164,7 @@ sal_uIntPtr SvxClipboardFmtItem::GetClipbrdFormatId( sal_uInt16 nPos ) const
const String& SvxClipboardFmtItem::GetClipbrdFormatName( sal_uInt16 nPos ) const const String& SvxClipboardFmtItem::GetClipbrdFormatName( sal_uInt16 nPos ) const
{ {
const String* pS = pImpl->aFmtNms[ nPos ]; const String* pS = &(pImpl->aFmtNms[nPos]);
return pS ? *pS : SvxClipboardFmtItem_Impl::sEmptyStr; return pS ? *pS : SvxClipboardFmtItem_Impl::sEmptyStr;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment