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
#include "kdelibs_export.h"
00026
00032 template<
class T,
class Key =
int>
class KSortableItem :
public QPair<Key,T>
00033 {
00034
public:
00040 KSortableItem( Key i,
const T& t ) :
QPair<Key, T>( i, t ) {}
00045 KSortableItem(
const KSortableItem<T, Key> &rhs )
00046 :
QPair<Key,T>( rhs.first, rhs.second ) {}
00047
00051 KSortableItem() {}
00052
00056 KSortableItem<T, Key> &
operator=(
const KSortableItem<T, Key>& i ) {
00057 this->first = i.first;
00058 this->second = i.second;
00059
return *
this;
00060 }
00061
00062
00067 bool operator> (
const KSortableItem<T, Key>& i2 )
const {
00068
return (i2.first < this->first);
00069 }
00074 bool operator< ( const KSortableItem<T, Key>& i2 )
const {
00075
return (this->first < i2.first);
00076 }
00081 bool operator>= (
const KSortableItem<T, Key>& i2 )
const {
00082
return (this->first >= i2.first);
00083 }
00088 bool operator<= ( const KSortableItem<T, Key>& i2 )
const {
00089
return !(i2.first < this->first);
00090 }
00095 bool operator== (
const KSortableItem<T, Key>& i2 )
const {
00096
return (this->first == i2.first);
00097 }
00102 bool operator!= (
const KSortableItem<T, Key>& i2 )
const {
00103
return (this->first != i2.first);
00104 }
00105
00109 T&
value() {
return this->second; }
00110
00114 const T&
value()
const {
return this->second; }
00115
00119 Key
index()
const {
return this->first; }
00120 };
00121
00122
00129
template <
class T,
class Key =
int>
00130 class KSortableValueList :
public QValueList<KSortableItem<T, Key> >
00131 {
00132
public:
00138 void insert( Key i,
const T& t ) {
00139
QValueList<KSortableItem<T, Key> >::append(
KSortableItem<T, Key>( i, t ) );
00140 }
00141
00142
00147 T& operator[]( Key i ) {
00148
return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
00149 }
00150
00155 const T& operator[]( Key i )
const {
00156
return QValueList<KSortableItem<T, Key> >::operator[]( i ).value();
00157 }
00158
00162 void sort() {
00163 qHeapSort( *
this );
00164 }
00165 };
00166
00167
00168
00169
00170
00171
#endif // KSORTABLEVALUELIST_H
This file is part of the documentation for kdecore Library Version 3.4.0.