Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit be2d6495 authored by Michael Pyne's avatar Michael Pyne

Remove dead code (SortedStringList).

parent 019acb41
......@@ -121,7 +121,6 @@ set(juk_SRCS ${tunepimp_SRCS}
searchplaylist.cpp
searchwidget.cpp
slideraction.cpp
sortedstringlist.cpp
statuslabel.cpp
stringshare.cpp
systemtray.cpp
......
/**
* Copyright (C) 2003-2004 Scott Wheeler <wheeler@kde.org>
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "sortedstringlist.h"
#include "juk_debug.h"
class SortedStringList::Node
{
public:
Node(const QString &value) : key(value), parent(0), left(0), right(0) {}
~Node() {}
QString key;
Node *parent;
Node *left;
Node *right;
};
SortedStringList::SortedStringList() : m_root(0)
{
}
SortedStringList::~SortedStringList()
{
}
bool SortedStringList::insert(const QString &value)
{
return BSTInsert(value);
}
bool SortedStringList::contains(const QString &value) const
{
return find(value);
}
SortedStringList::Node *SortedStringList::treeMinimum(Node *n) const
{
while(n->left)
n = n->left;
return n;
}
SortedStringList::Node *SortedStringList::treeSuccessor(Node *n) const
{
if(n->right)
return treeMinimum(n->right);
Node *p = n->parent;
while(p && n == p->right) {
n = p;
p = p->parent;
}
return p;
}
bool SortedStringList::remove(const QString &value)
{
Node *n = find(value);
if(!n)
return false;
Node *y;
Node *x;
if(!n->left || !n->right)
y = n;
else
y = treeSuccessor(n);
if(y->left)
x = y->left;
else
x = y->right;
if(x)
x->parent = y->parent;
if(!y->parent)
m_root = x;
else {
if(y == y->parent->left)
y->parent->left = x;
else
y->parent->right = x;
}
if(y != x)
n->key = y->key;
delete y;
return true;
}
QStringList SortedStringList::values() const
{
QStringList l;
traverse(m_root, l);
return l;
}
////////////////////////////////////////////////////////////////////////////////
// private methods
////////////////////////////////////////////////////////////////////////////////
SortedStringList::Node *SortedStringList::find(const QString &value) const
{
Node *n = m_root;
while(n && value != n->key) {
if(value < n->key)
n = n->left;
else
n = n->right;
}
return n;
}
bool SortedStringList::BSTInsert(const QString &value)
{
Node *previousNode = 0;
Node *node = m_root;
while(node) {
previousNode = node;
if(value == node->key)
return true;
else if(value < node->key)
node = node->left;
else
node = node->right;
}
Node *n = new Node(value);
n->parent = previousNode;
if(!m_root)
m_root = n;
else {
if(value < previousNode->key)
previousNode->left = n;
else
previousNode->right = n;
}
return false;
}
void SortedStringList::traverse(const Node *n, QStringList &list) const
{
if(!n)
return;
traverse(n->left, list);
list.append(n->key);
traverse(n->right, list);
}
// vim: set et sw=4 tw=0 sta:
/**
* Copyright (C) 2003-2004 Scott Wheeler <wheeler@kde.org>
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SORTEDSTRINGLIST_H
#define SORTEDSTRINGLIST_H
#include <qstringlist.h>
class SortedStringList
{
public:
SortedStringList();
~SortedStringList();
/**
* Insert the value. Returns true if the item was already in the list
* or false otherwise.
*/
bool insert(const QString &value);
bool contains(const QString &value) const;
bool remove(const QString &value);
/**
* Returns a sorted list of the values.
* Warning, this method is expensive and shouldn't be used except when
* necessary.
*/
QStringList values() const;
private:
class Node;
Node *find(const QString &value) const;
/**
* The insertion implementation. Returns true if the item was already
* present in the list.
*/
bool BSTInsert(const QString &value);
void traverse(const Node *n, QStringList &list) const;
Node *treeMinimum(Node *n) const;
Node *treeSuccessor(Node *n) const;
Node *m_root;
};
#endif
// vim: set et sw=4 tw=0 sta:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment