ksortablevaluelist.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KSORTABLEVALUELIST_H
00021 #define KSORTABLEVALUELIST_H
00022
00023 #include <qpair.h>
00024 #include <qvaluelist.h>
00025
00031 template<class T, class Key = int> class KSortableItem : public QPair<Key,T>
00032 {
00033 public:
00039 KSortableItem( Key i, const T& t ) : QPair<Key, T>( i, t ) {}
00044 KSortableItem( const KSortableItem<T, Key> &rhs )
00045 : QPair<Key,T>( rhs.first, rhs.second ) {}
00046
00050 KSortableItem() {}
00051
00055 KSortableItem<T, Key> &operator=( const KSortableItem<T, Key>& i ) {
00056 first = i.first;
00057 second = i.second;
00058 return *this;
00059 }
00060
00061
00066 bool operator> ( const KSortableItem<T, Key>& i2 ) const {
00067 return (i2.first < first);
00068 }
00073 bool operator< ( const KSortableItem<T, Key>& i2 ) const {
00074 return (first < i2.first);
00075 }
00080 bool operator>= ( const KSortableItem<T, Key>& i2 ) const {
00081 return (first >= i2.first);
00082 }
00087 bool operator<= ( const KSortableItem<T, Key>& i2 ) const {
00088 return !(i2.first < first);
00089 }
00094 bool operator== ( const KSortableItem<T, Key>& i2 ) const {
00095 return (first == i2.first);
00096 }
00101 bool operator!= ( const KSortableItem<T, Key>& i2 ) const {
00102 return (first != i2.first);
00103 }
00104
00109 T& value() {
00110 return second;
00111 }
00112
00116 const T& value() const {
00117 return second;
00118 }
00119
00124 Key index() const {
00125 return first;
00126 }
00127 };
00128
00129
00136 template <class T, class Key = int>
00137 class KSortableValueList : public QValueList<KSortableItem<T, Key> >
00138 {
00139 public:
00145 void insert( Key i, const T& t ) {
00146 QValueList<KSortableItem<T, Key> >::append( KSortableItem<T, Key>( i, t ) );
00147 }
00148
00149
00154 T& operator[]( Key i ) {
00155 return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
00156 }
00157
00162 const T& operator[]( Key i ) const {
00163 return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
00164 }
00165
00169 void sort() {
00170 qHeapSort( *this );
00171 }
00172 };
00173
00174
00175
00176
00177
00178 #endif // KSORTABLEVALUELIST_H
This file is part of the documentation for kdelibs Version 3.1.0.