From e16866e072f94410321d70daedbcb855ea878cac Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 6 Nov 2011 15:56:40 -0600 Subject: Actually move the kde files that were renamed in the last commit --- tdecore/ksortablevaluelist.h | 171 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 tdecore/ksortablevaluelist.h (limited to 'tdecore/ksortablevaluelist.h') diff --git a/tdecore/ksortablevaluelist.h b/tdecore/ksortablevaluelist.h new file mode 100644 index 000000000..3f7885ca4 --- /dev/null +++ b/tdecore/ksortablevaluelist.h @@ -0,0 +1,171 @@ +/* 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KSORTABLEVALUELIST_H +#define KSORTABLEVALUELIST_H + +#include +#include +#include "kdelibs_export.h" + +/** + * KSortableItem is a TQPair that provides several operators + * for sorting. + * @see KSortableValueList + */ +template class KSortableItem : public TQPair +{ +public: + /** + * Creates a new KSortableItem with the given values. + * @param i the first value + * @param t the second value + */ + KSortableItem( Key i, const T& t ) : TQPair( i, t ) {} + /** + * Creates a new KSortableItem that copies another one. + * @param rhs the other item to copy + */ + KSortableItem( const KSortableItem &rhs ) + : TQPair( rhs.first, rhs.second ) {} + + /** + * Creates a new KSortableItem with uninitialized values. + */ + KSortableItem() {} + + /** + * Assignment operator, just copies the item. + */ + KSortableItem &operator=( const KSortableItem& i ) { + this->first = i.first; + this->second = i.second; + return *this; + } + + // operators for sorting + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator> ( const KSortableItem& i2 ) const { + return (i2.first < this->first); + } + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator< ( const KSortableItem& i2 ) const { + return (this->first < i2.first); + } + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator>= ( const KSortableItem& i2 ) const { + return (this->first >= i2.first); + } + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator<= ( const KSortableItem& i2 ) const { + return !(i2.first < this->first); + } + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator== ( const KSortableItem& i2 ) const { + return (this->first == i2.first); + } + /** + * Compares the two items. This implementation only compares + * the first value. + */ + bool operator!= ( const KSortableItem& i2 ) const { + return (this->first != i2.first); + } + + /** + * @return the second value + */ + T& value() { return this->second; } + + /** + * Returns the second value. + */ + const T& value() const { return this->second; } + + /** + * @return the first value. + */ + Key index() const { return this->first; } +}; + + +/** + * KSortableValueList is a special TQValueList for + * KSortableItem. It includes convenience operators + * to get the first value of the KSortableItem and a method + * to sort all items. + */ +template +class KSortableValueList : public TQValueList > +{ +public: + /** + * Insert a KSortableItem with the given values. + * @param i the first value + * @param t the second value + */ + void insert( Key i, const T& t ) { + TQValueList >::append( KSortableItem( i, t ) ); + } + // add more as you please... + + /** + * Returns the first value of the KSortableItem at the given position. + * @return the first value of the KSortableItem + */ + T& operator[]( Key i ) { + return TQValueList >::operator[]( i ).value(); + } + + /** + * Returns the first value of the KSortableItem at the given position. + * @return the first value of the KSortableItem + */ + const T& operator[]( Key i ) const { + return TQValueList >::operator[]( i ).value(); + } + + /** + * Sorts the KSortableItems. + */ + void sort() { + qHeapSort( *this ); + } +}; + +// template class KSortableValueListIterator : public TQValueListIterator > +// { +// }; + +#endif // KSORTABLEVALUELIST_H -- cgit v1.2.3