📄 rsmbmusicaplibvector.inl
字号:
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Front()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::reference RSmbMusicAPLibVector<T, DP>::Front()
{
return *Begin();
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Front()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::const_reference RSmbMusicAPLibVector<T, DP>::Front() const
{
return *Begin();
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Back()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::reference RSmbMusicAPLibVector<T, DP>::Back()
{
return *(End() - 1);
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Back()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::const_reference RSmbMusicAPLibVector<T, DP>::Back() const
{
return *(End() - 1);
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Push_backL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Push_backL( const value_type& aVal )
{
InsertL( End(), aVal );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Pop_back()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Pop_back()
{
if (!Empty())
Erase( End() - 1 );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::InsertL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::iterator RSmbMusicAPLibVector<T, DP>::InsertL( iterator aPos, const value_type& aVal )
{
const difference_type i = aPos - Begin();
InsertFillL( aPos, 1, aVal );
return Begin() + i;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::InsertL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::InsertL( iterator aPos, size_type aNum, const value_type& aVal )
{
InsertFillL( aPos, aNum, aVal );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::InsertL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
template<typename InputIterator>
inline void RSmbMusicAPLibVector<T, DP>::InsertL( iterator aPos, InputIterator aFirst, InputIterator aLast )
{
APLIB_FALSE_DEBUG_PANIC_MA( Begin() <= aPos && aPos <= End() );
const size_type n = aLast - aFirst;
iterator i = ExpandL( aPos - Begin(), n );
iterator end = i + n;
for (/*none*/; i != end; ++i)
Construct( &*i, *aFirst++ );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::InsertL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::InsertL( iterator aPos, TInt aNum, TInt aVal )
{
InsertFillL( aPos, static_cast<size_type>(aNum), reinterpret_cast<const value_type&>(aVal) );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Erase()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::iterator RSmbMusicAPLibVector<T, DP>::Erase( iterator aPos )
{
return Erase( aPos, aPos + 1 );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Erase()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::iterator RSmbMusicAPLibVector<T, DP>::Erase( iterator aFirst, iterator aLast )
{
APLIB_FALSE_DEBUG_PANIC_MA( aFirst <= aLast );
APLIB_FALSE_DEBUG_PANIC_MA( Begin() <= aFirst && aFirst <= End() );
APLIB_FALSE_DEBUG_PANIC_MA( Begin() <= aLast && aLast <= End() );
if (iBuffer)
{
Destroy( aFirst, aLast );
Delete( aFirst - Begin(), aLast - aFirst );
}
return aFirst;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Swap()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Swap( RSmbMusicAPLibVector& aRhs )
{
MUSICAPLIB_NAMESPACE::Swap( iBuffer, aRhs.iBuffer );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Clear()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Clear()
{
Erase( Begin(), End() );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::CloneLC()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline RSmbMusicAPLibVector<T, DP>* RSmbMusicAPLibVector<T, DP>::CloneLC() const
{
RSmbMusicAPLibVector* clone = new(ELeave) RSmbMusicAPLibVector( *this );
CleanupDeletePushL( clone );
return clone;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Release()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Release()
{
Clear(); // T::~T() 偵婡夛傪梌偊傞偨傔偵偼昁梫丅
DeleteAndNullify( iBuffer );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator==()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator==( const RSmbMusicAPLibVector& aRhs ) const
{
return Size() == aRhs.Size() && Equal( Begin(), End(), aRhs.Begin() );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator!=()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator!=( const RSmbMusicAPLibVector& aRhs ) const
{
return !(*this == aRhs);
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator<()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator<( const RSmbMusicAPLibVector& aRhs ) const
{
return Lexicographical_compare( Begin(), End(), aRhs.Begin(), aRhs.End() );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator>()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator>( const RSmbMusicAPLibVector& aRhs ) const
{
return aRhs < *this;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator<=()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator<=( const RSmbMusicAPLibVector& aRhs ) const
{
return !(aRhs < *this);
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::operator>=()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline TBool RSmbMusicAPLibVector<T, DP>::operator>=( const RSmbMusicAPLibVector& aRhs ) const
{
return !(*this < aRhs);
}
// ----------------------------------------------------------------------------
// Swap()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void Swap( RSmbMusicAPLibVector<T, DP>& aLhs, const RSmbMusicAPLibVector<T, DP>& aRhs )
{
aLhs.Swap( aRhs );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::InsertFillL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
void RSmbMusicAPLibVector<T, DP>::InsertFillL( iterator aPos, size_type aNum, const value_type& aVal )
{
APLIB_FALSE_DEBUG_PANIC_MA( Begin() <= aPos && aPos <= End() );
iterator i = ExpandL( aPos - Begin(), aNum );
iterator end = i + aNum;
for (/*none*/; i != end; ++i)
Construct( &*i, aVal );
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::ExpandL()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::iterator RSmbMusicAPLibVector<T, DP>::ExpandL( size_type aPos, size_type aNum )
{
if (aNum > 0)
{
ReserveL( Size() + aNum );
iBuffer->ExpandL( aPos * sizeof(value_type), aNum * sizeof(value_type) );
}
return Begin() + aPos;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Delete()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline typename RSmbMusicAPLibVector<T, DP>::iterator RSmbMusicAPLibVector<T, DP>::Delete( size_type aPos, size_type aNum )
{
if (aNum > 0)
iBuffer->Delete( aPos * sizeof(value_type), aNum * sizeof(value_type) );
return Begin() + aPos;
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Construct()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Construct( value_type* aPtr, const value_type& aVal )
{
new (aPtr) value_type( aVal ); // 乽攝抲峔暥new (placement-new)乿偱婛懚儊儌儕忋偵僆僽僕僃僋僩傪嶌惉丅
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Destroy()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Destroy( value_type* aPtr )
{
DP::Destroy( *aPtr ); // DestroyPolicy 偵婡夛傪梌偊傞丅
aPtr->~T(); // 攝抲峔暥new偱嶌惉偟偨僆僽僕僃僋僩偼丄柧帵揑側僨僗僩儔僋僞屇傃弌偟偑昁梫丅
}
// ----------------------------------------------------------------------------
// RSmbMusicAPLibVector::Destroy()
// ----------------------------------------------------------------------------
template<typename T, class DP>
inline void RSmbMusicAPLibVector<T, DP>::Destroy( iterator aFirst, iterator aLast )
{
for (/*none*/; aFirst != aLast; ++aFirst)
Destroy( &*aFirst );
}
MUSICAPLIB_NAMESPACE_END
SEMCJ_NAMESPACE_END
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -