Kaydet (Commit) acc6d29b authored tarafından Michael Stahl's avatar Michael Stahl

svl: remove mostly superfluous abstraction of vector

If only we could call the member vector's reserve method then copying
would be faster, oh actually we could also use std::copy to get rid of
the loop, ... why not just call the copy constructor?

Change-Id: I59bb331e6157d692cb62f44f1fd4e8318bf92902
üst 872f4493
...@@ -26,40 +26,13 @@ ...@@ -26,40 +26,13 @@
TYPEINIT1_AUTOFACTORY(SfxAllEnumItem, SfxEnumItem) TYPEINIT1_AUTOFACTORY(SfxAllEnumItem, SfxEnumItem)
struct SfxAllEnumValue_Impl struct SfxAllEnumValue_Impl
{ {
sal_uInt16 nValue; sal_uInt16 nValue;
OUString aText; OUString aText;
}; };
class SfxAllEnumValueArr : boost::noncopyable class SfxAllEnumValueArr : public std::vector<SfxAllEnumValue_Impl> {};
{
public:
const SfxAllEnumValue_Impl &operator[](size_t i) const {
return m_Values[i];
}
bool empty() const {
return m_Values.empty();
}
void Insert(sal_uInt16 n, SfxAllEnumValue_Impl const& value) {
m_Values.insert(m_Values.begin() + n, value);
}
void Erase(sal_uInt16 n) {
m_Values.erase(m_Values.begin() + n);
}
size_t size() const {
return m_Values.size();
}
private:
std::vector<SfxAllEnumValue_Impl> m_Values;
};
SfxAllEnumItem::SfxAllEnumItem() : SfxAllEnumItem::SfxAllEnumItem() :
...@@ -69,8 +42,6 @@ SfxAllEnumItem::SfxAllEnumItem() : ...@@ -69,8 +42,6 @@ SfxAllEnumItem::SfxAllEnumItem() :
{ {
} }
SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which, sal_uInt16 nVal): SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which, sal_uInt16 nVal):
SfxEnumItem(which, nVal), SfxEnumItem(which, nVal),
pValues( 0 ), pValues( 0 ),
...@@ -79,8 +50,6 @@ SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which, sal_uInt16 nVal): ...@@ -79,8 +50,6 @@ SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which, sal_uInt16 nVal):
InsertValue( nVal ); InsertValue( nVal );
} }
SfxAllEnumItem::SfxAllEnumItem( sal_uInt16 which, SvStream &rStream ): SfxAllEnumItem::SfxAllEnumItem( sal_uInt16 which, SvStream &rStream ):
SfxEnumItem(which, rStream), SfxEnumItem(which, rStream),
pValues( 0 ), pValues( 0 ),
...@@ -89,9 +58,6 @@ SfxAllEnumItem::SfxAllEnumItem( sal_uInt16 which, SvStream &rStream ): ...@@ -89,9 +58,6 @@ SfxAllEnumItem::SfxAllEnumItem( sal_uInt16 which, SvStream &rStream ):
InsertValue( GetValue() ); InsertValue( GetValue() );
} }
SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which): SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which):
SfxEnumItem(which, 0), SfxEnumItem(which, 0),
pValues( 0 ), pValues( 0 ),
...@@ -99,9 +65,6 @@ SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which): ...@@ -99,9 +65,6 @@ SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which):
{ {
} }
SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy): SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy):
SfxEnumItem(rCopy), SfxEnumItem(rCopy),
pValues(0), pValues(0),
...@@ -110,15 +73,7 @@ SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy): ...@@ -110,15 +73,7 @@ SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy):
if ( !rCopy.pValues ) if ( !rCopy.pValues )
return; return;
pValues = new SfxAllEnumValueArr; pValues = new SfxAllEnumValueArr(*rCopy.pValues);
for ( size_t nPos = 0; nPos < rCopy.pValues->size(); ++nPos )
{
SfxAllEnumValue_Impl aVal;
aVal.nValue = (*rCopy.pValues)[nPos].nValue;
aVal.aText = (*rCopy.pValues)[nPos].aText;
pValues->Insert( nPos, aVal );
}
if( rCopy.pDisabledValues ) if( rCopy.pDisabledValues )
{ {
...@@ -126,53 +81,39 @@ SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy): ...@@ -126,53 +81,39 @@ SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy):
} }
} }
SfxAllEnumItem::~SfxAllEnumItem() SfxAllEnumItem::~SfxAllEnumItem()
{ {
delete pValues; delete pValues;
delete pDisabledValues; delete pDisabledValues;
} }
sal_uInt16 SfxAllEnumItem::GetValueCount() const sal_uInt16 SfxAllEnumItem::GetValueCount() const
{ {
return pValues ? pValues->size() : 0; return pValues ? pValues->size() : 0;
} }
OUString SfxAllEnumItem::GetValueTextByPos( sal_uInt16 nPos ) const OUString SfxAllEnumItem::GetValueTextByPos( sal_uInt16 nPos ) const
{ {
DBG_ASSERT( pValues && nPos < pValues->size(), "enum overflow" ); DBG_ASSERT( pValues && nPos < pValues->size(), "enum overflow" );
return (*pValues)[nPos].aText; return (*pValues)[nPos].aText;
} }
sal_uInt16 SfxAllEnumItem::GetValueByPos( sal_uInt16 nPos ) const sal_uInt16 SfxAllEnumItem::GetValueByPos( sal_uInt16 nPos ) const
{ {
DBG_ASSERT( pValues && nPos < pValues->size(), "enum overflow" ); DBG_ASSERT( pValues && nPos < pValues->size(), "enum overflow" );
return (*pValues)[nPos].nValue; return (*pValues)[nPos].nValue;
} }
SfxPoolItem* SfxAllEnumItem::Clone( SfxItemPool * ) const SfxPoolItem* SfxAllEnumItem::Clone( SfxItemPool * ) const
{ {
return new SfxAllEnumItem(*this); return new SfxAllEnumItem(*this);
} }
SfxPoolItem* SfxAllEnumItem::Create( SvStream & rStream, sal_uInt16 ) const SfxPoolItem* SfxAllEnumItem::Create( SvStream & rStream, sal_uInt16 ) const
{ {
return new SfxAllEnumItem( Which(), rStream ); return new SfxAllEnumItem( Which(), rStream );
} }
/** /**
* In contrast to @see SfxEnumItemInterface::GetPosByValue(sal_uInt16) const * In contrast to @see SfxEnumItemInterface::GetPosByValue(sal_uInt16) const
* this internal method returns the position the value would be for non-present values. * this internal method returns the position the value would be for non-present values.
...@@ -190,13 +131,11 @@ sal_uInt16 SfxAllEnumItem::_GetPosByValue( sal_uInt16 nVal ) const ...@@ -190,13 +131,11 @@ sal_uInt16 SfxAllEnumItem::_GetPosByValue( sal_uInt16 nVal ) const
return nPos; return nPos;
} }
/** /**
* In contrast to @see SfxEnumItemInterface::GetPosByValue(sal_uInt16) const * In contrast to @see SfxEnumItemInterface::GetPosByValue(sal_uInt16) const
* this method always returns nValue, as long as not at least one value has * this method always returns nValue, as long as not at least one value has
* been inserted using the SfxAllEnumItem::InsertValue() methods * been inserted using the SfxAllEnumItem::InsertValue() methods
*/ */
sal_uInt16 SfxAllEnumItem::GetPosByValue( sal_uInt16 nValue ) const sal_uInt16 SfxAllEnumItem::GetPosByValue( sal_uInt16 nValue ) const
{ {
if ( !pValues || pValues->empty() ) if ( !pValues || pValues->empty() )
...@@ -205,8 +144,6 @@ sal_uInt16 SfxAllEnumItem::GetPosByValue( sal_uInt16 nValue ) const ...@@ -205,8 +144,6 @@ sal_uInt16 SfxAllEnumItem::GetPosByValue( sal_uInt16 nValue ) const
return SfxEnumItem::GetPosByValue( nValue ); return SfxEnumItem::GetPosByValue( nValue );
} }
void SfxAllEnumItem::InsertValue( sal_uInt16 nValue, const OUString &rValue ) void SfxAllEnumItem::InsertValue( sal_uInt16 nValue, const OUString &rValue )
{ {
SfxAllEnumValue_Impl aVal; SfxAllEnumValue_Impl aVal;
...@@ -218,11 +155,9 @@ void SfxAllEnumItem::InsertValue( sal_uInt16 nValue, const OUString &rValue ) ...@@ -218,11 +155,9 @@ void SfxAllEnumItem::InsertValue( sal_uInt16 nValue, const OUString &rValue )
// remove when exists // remove when exists
RemoveValue( nValue ); RemoveValue( nValue );
// then insert // then insert
pValues->Insert( _GetPosByValue(nValue), aVal ); // FIXME: Duplicates? pValues->insert(pValues->begin() + _GetPosByValue(nValue), aVal); // FIXME: Duplicates?
} }
void SfxAllEnumItem::InsertValue( sal_uInt16 nValue ) void SfxAllEnumItem::InsertValue( sal_uInt16 nValue )
{ {
SfxAllEnumValue_Impl aVal; SfxAllEnumValue_Impl aVal;
...@@ -231,7 +166,7 @@ void SfxAllEnumItem::InsertValue( sal_uInt16 nValue ) ...@@ -231,7 +166,7 @@ void SfxAllEnumItem::InsertValue( sal_uInt16 nValue )
if ( !pValues ) if ( !pValues )
pValues = new SfxAllEnumValueArr; pValues = new SfxAllEnumValueArr;
pValues->Insert( _GetPosByValue(nValue), aVal ); // FIXME: Duplicates? pValues->insert(pValues->begin() + _GetPosByValue(nValue), aVal); // FIXME: Duplicates?
} }
void SfxAllEnumItem::DisableValue( sal_uInt16 nValue ) void SfxAllEnumItem::DisableValue( sal_uInt16 nValue )
...@@ -260,7 +195,7 @@ void SfxAllEnumItem::RemoveValue( sal_uInt16 nValue ) ...@@ -260,7 +195,7 @@ void SfxAllEnumItem::RemoveValue( sal_uInt16 nValue )
{ {
sal_uInt16 nPos = GetPosByValue(nValue); sal_uInt16 nPos = GetPosByValue(nValue);
DBG_ASSERT( nPos != USHRT_MAX, "removing value not in enum" ); DBG_ASSERT( nPos != USHRT_MAX, "removing value not in enum" );
pValues->Erase( nPos ); pValues->erase( pValues->begin() + nPos );
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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