ksortablevaluelist.h
/* This file is part of the KDE libraries
Copyright (C) 2001 Carsten Pfeiffer <pfeiffer@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSORTABLEVALUELIST_H
#define KSORTABLEVALUELIST_H
#include <qpair.h>
#include <qvaluelist.h>
#include "kdelibs_export.h"
template<class T, class Key = int> class KSortableItem : public QPair<Key,T>
{
public:
KSortableItem( Key i, const T& t ) : QPair<Key, T>( i, t ) {}
KSortableItem( const KSortableItem<T, Key> &rhs )
: QPair<Key,T>( rhs.first, rhs.second ) {}
KSortableItem() {}
KSortableItem<T, Key> &operator=( const KSortableItem<T, Key>& i ) {
this->first = i.first;
this->second = i.second;
return *this;
}
// operators for sorting
bool operator> ( const KSortableItem<T, Key>& i2 ) const {
return (i2.first < this->first);
}
bool operator< ( const KSortableItem<T, Key>& i2 ) const {
return (this->first < i2.first);
}
bool operator>= ( const KSortableItem<T, Key>& i2 ) const {
return (this->first >= i2.first);
}
bool operator<= ( const KSortableItem<T, Key>& i2 ) const {
return !(i2.first < this->first);
}
bool operator== ( const KSortableItem<T, Key>& i2 ) const {
return (this->first == i2.first);
}
bool operator!= ( const KSortableItem<T, Key>& i2 ) const {
return (this->first != i2.first);
}
T& value() { return this->second; }
const T& value() const { return this->second; }
Key index() const { return this->first; }
};
template <class T, class Key = int>
class KSortableValueList : public QValueList<KSortableItem<T, Key> >
{
public:
void insert( Key i, const T& t ) {
QValueList<KSortableItem<T, Key> >::append( KSortableItem<T, Key>( i, t ) );
}
// add more as you please...
T& operator[]( Key i ) {
return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
}
const T& operator[]( Key i ) const {
return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
}
void sort() {
qHeapSort( *this );
}
};
// template <class T> class KSortableValueListIterator : public QValueListIterator<KSortableItem<T> >
// {
// };
#endif // KSORTABLEVALUELIST_H
KSortableValueList::operator[]
const T & operator[](Key i) const
Returns the first value of the KSortableItem at the given position.
Definition: ksortablevaluelist.h:155
KSortableItem::operator>
bool operator>(const KSortableItem< T, Key > &i2) const
Compares the two items.
Definition: ksortablevaluelist.h:67
KSortableItem
KSortableItem is a QPair that provides several operators for sorting.
Definition: ksortablevaluelist.h:32
KSortableValueList::insert
void insert(Key i, const T &t)
Insert a KSortableItem with the given values.
Definition: ksortablevaluelist.h:138
KSortableValueList
KSortableValueList is a special QValueList for KSortableItem.
Definition: ksortablevaluelist.h:130
KSortableItem::operator=
KSortableItem< T, Key > & operator=(const KSortableItem< T, Key > &i)
Assignment operator, just copies the item.
Definition: ksortablevaluelist.h:56
KSortableItem::KSortableItem
KSortableItem(Key i, const T &t)
Creates a new KSortableItem with the given values.
Definition: ksortablevaluelist.h:40
KSortableItem::operator!=
bool operator!=(const KSortableItem< T, Key > &i2) const
Compares the two items.
Definition: ksortablevaluelist.h:102
KSortableValueList::sort
void sort()
Sorts the KSortableItems.
Definition: ksortablevaluelist.h:162
KSortableItem::index
Key index() const
Definition: ksortablevaluelist.h:119
KSortableItem::KSortableItem
KSortableItem(const KSortableItem< T, Key > &rhs)
Creates a new KSortableItem that copies another one.
Definition: ksortablevaluelist.h:45
KSortableItem::operator>=
bool operator>=(const KSortableItem< T, Key > &i2) const
Compares the two items.
Definition: ksortablevaluelist.h:81
KSortableValueList::operator[]
T & operator[](Key i)
Returns the first value of the KSortableItem at the given position.
Definition: ksortablevaluelist.h:147
KSortableItem::operator==
bool operator==(const KSortableItem< T, Key > &i2) const
Compares the two items.
Definition: ksortablevaluelist.h:95
KSortableItem::value
const T & value() const
Returns the second value.
Definition: ksortablevaluelist.h:114
KSortableItem::KSortableItem
KSortableItem()
Creates a new KSortableItem with uninitialized values.
Definition: ksortablevaluelist.h:51
KSortableItem::value
T & value()
Definition: ksortablevaluelist.h:109

KDE Home | KDE Accessibility Home | Description of Access Keys