Source: ksortablevaluelist.h
|
|
|
|
/* This file is part of the KDE libraries
Copyright (C) 2001 Carsten Pfeiffer
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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef KSORTABLEVALUELIST_H
#define KSORTABLEVALUELIST_H
#include
#include
template class KSortableItem : public QPair
{
public:
KSortableItem( Key i, const T& t ) : QPair( i, t ) {}
KSortableItem( const KSortableItem &rhs )
: QPair( rhs.first, rhs.second ) {}
KSortableItem() {}
KSortableItem &operator=( const KSortableItem& i ) {
first = i.first;
second = i.second;
return *this;
}
// operators for sorting
bool operator> ( const KSortableItem& i2 ) const {
return (i2.first < first);
}
bool operator< ( const KSortableItem& i2 ) const {
return (first < i2.first);
}
bool operator>= ( const KSortableItem& i2 ) const {
return (first >= i2.first);
}
bool operator<= ( const KSortableItem& i2 ) const {
return !(i2.first < first);
}
bool operator== ( const KSortableItem& i2 ) const {
return (first == i2.first);
}
bool operator!= ( const KSortableItem& i2 ) const {
return (first != i2.first);
}
T& value() {
return second;
}
const T& value() const {
return second;
}
Key index() const {
return first;
}
};
// convenience
template
class KSortableValueList : public QValueList >
{
public:
void insert( Key i, const T& t ) {
QValueList >::append( KSortableItem( i, t ) );
}
// add more as you please...
T& operator[]( Key i ) {
return QValueList >::operator[]( i ).value();
}
const T& operator[]( Key i ) const {
return QValueList >::operator[]( i ).value();
}
void sort() {
qHeapSort( *this );
}
};
// template class KSortableValueListIterator : public QValueListIterator >
// {
// };
#endif // KSORTABLEVALUELIST_H
Generated by: dfaure on faure on Tue Apr 16 08:49:00 2002, using kdoc 2.0a53. |