mirror of
https://github.com/taglib/taglib.git
synced 2025-07-18 13:04:18 -04:00
Add List::swap() and Map::swap().
This commit is contained in:
@ -229,6 +229,11 @@ namespace TagLib {
|
||||
*/
|
||||
List<T> &operator=(const List<T> &l);
|
||||
|
||||
/*!
|
||||
* Exchanges the content of this list by the content of \a l.
|
||||
*/
|
||||
void swap(List<T> &l);
|
||||
|
||||
/*!
|
||||
* Compares this list with \a l and returns true if all of the elements are
|
||||
* the same.
|
||||
|
@ -89,9 +89,9 @@ public:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <class T>
|
||||
List<T>::List()
|
||||
List<T>::List() :
|
||||
d(new ListPrivate<T>())
|
||||
{
|
||||
d = new ListPrivate<T>;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
@ -283,16 +283,18 @@ const T &List<T>::operator[](unsigned int i) const
|
||||
template <class T>
|
||||
List<T> &List<T>::operator=(const List<T> &l)
|
||||
{
|
||||
if(&l == this)
|
||||
return *this;
|
||||
|
||||
if(d->deref())
|
||||
delete d;
|
||||
d = l.d;
|
||||
d->ref();
|
||||
List<T>(l).swap(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void List<T>::swap(List<T> &l)
|
||||
{
|
||||
using std::swap;
|
||||
|
||||
swap(d, l.d);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool List<T>::operator==(const List<T> &l) const
|
||||
{
|
||||
|
@ -174,6 +174,11 @@ namespace TagLib {
|
||||
*/
|
||||
Map<Key, T> &operator=(const Map<Key, T> &m);
|
||||
|
||||
/*!
|
||||
* Exchanges the content of this map by the content of \a m.
|
||||
*/
|
||||
void swap(Map<Key, T> &m);
|
||||
|
||||
protected:
|
||||
/*
|
||||
* If this List is being shared via implicit sharing, do a deep copy of the
|
||||
|
@ -48,9 +48,9 @@ public:
|
||||
};
|
||||
|
||||
template <class Key, class T>
|
||||
Map<Key, T>::Map()
|
||||
Map<Key, T>::Map() :
|
||||
d(new MapPrivate<Key, T>())
|
||||
{
|
||||
d = new MapPrivate<Key, T>;
|
||||
}
|
||||
|
||||
template <class Key, class T>
|
||||
@ -171,16 +171,18 @@ T &Map<Key, T>::operator[](const Key &key)
|
||||
template <class Key, class T>
|
||||
Map<Key, T> &Map<Key, T>::operator=(const Map<Key, T> &m)
|
||||
{
|
||||
if(&m == this)
|
||||
return *this;
|
||||
|
||||
if(d->deref())
|
||||
delete(d);
|
||||
d = m.d;
|
||||
d->ref();
|
||||
Map<Key, T>(m).swap(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <class Key, class T>
|
||||
void Map<Key, T>::swap(Map<Key, T> &m)
|
||||
{
|
||||
using std::swap;
|
||||
|
||||
swap(d, m.d);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// protected members
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
Reference in New Issue
Block a user