aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-18 23:36:16 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-22 01:18:05 +0100
commitbd19970eb858a7c7466ce0a80377a4b44c385a97 (patch)
tree6d7bfceb8b8ac37f70e38f2e02d38758ea0073cf
parente5a24b3c79ace767d8a424b2ea01056288d03d1a (diff)
downloadsciteco-bd19970eb858a7c7466ce0a80377a4b44c385a97.tar.gz
removed unused Red-Black tree abstractions
they didn't work and weren't really necessary either
-rw-r--r--src/rbtree.h180
1 files changed, 0 insertions, 180 deletions
diff --git a/src/rbtree.h b/src/rbtree.h
index e82654f..5942667 100644
--- a/src/rbtree.h
+++ b/src/rbtree.h
@@ -116,184 +116,4 @@ public:
}
};
-template <typename KeyType, typename ValueType>
-class Table : public RBTree {
- class TableEntry : public RBEntry {
- public:
- KeyType key;
- ValueType value;
-
- TableEntry(KeyType &_key, ValueType &_value)
- : key(_key), value(_value) {}
-
- int
- operator <(RBEntry &entry)
- {
- return key < ((TableEntry &)entry).key;
- }
- };
-
-public:
- ValueType nil;
-
- Table(ValueType &_nil) : RBTree(), nil(_nil) {}
-
- inline bool
- hasEntry(KeyType &key)
- {
- return find(&TableEntry(key, nil)) != NULL;
- }
-
- ValueType &
- operator [](KeyType &key)
- {
- TableEntry *entry = new TableEntry(key, nil);
- TableEntry *existing = (TableEntry *)find(entry);
-
- if (existing)
- delete entry;
- else
- existing = (TableEntry *)insert(entry);
-
- return existing->value;
- }
-
- inline void
- remove(KeyType &key)
- {
- TableEntry entry(key, nil);
- TableEntry *existing = (TableEntry *)find(&entry);
-
- if (existing)
- RBTree::remove(existing);
- }
-
-#if 0
- void
- dump(void)
- {
- RBEntry *cur;
-
- RB_FOREACH(cur, Tree, &head)
- g_printf("tree[\"%s\"] = %d\n", cur->name, cur->pc);
- g_printf("---END---\n");
- }
-#endif
-
- void
- clear(void)
- {
- RBEntry *cur;
-
- while ((cur = min())) {
- RBTree::remove(cur);
- delete cur;
- }
- }
-};
-
-class CString {
-public:
- gchar *str;
-
- CString(const gchar *_str) : str(g_strdup(_str)) {}
- ~CString()
- {
- g_free(str);
- }
-
- inline int
- operator <(CString &obj)
- {
- return (int)g_strcmp0(str, obj.str);
- }
-};
-
-template <typename ValueType>
-class StringTable : public Table<CString, ValueType> {
-public:
- StringTable(ValueType &nil) : Table<CString, ValueType>(nil) {}
-
- inline bool
- hasEntry(const gchar *key)
- {
- CString str(key);
- return Table<CString, ValueType>::hasEntry(str);
- }
-
- inline ValueType &
- operator [](const gchar *key)
- {
- CString str(key);
- return (Table<CString, ValueType>::operator [])(str);
- }
-
- inline void
- remove(const gchar *key)
- {
- CString str(key);
- Table<CString, ValueType>::remove(str);
- }
-};
-
-template <typename ValueType>
-class StringTableUndo : public StringTable<ValueType> {
- class UndoTokenSet : public UndoToken {
- StringTableUndo *table;
-
- CString name;
- ValueType value;
-
- public:
- UndoTokenSet(StringTableUndo *_table, CString &_name, ValueType &_value)
- : table(_table), name(_name), value(_value) {}
-
- void
- run(void)
- {
- table->Table<CString, ValueType>::operator [](name) = value;
- name.str = NULL;
-#if 0
- table->dump();
-#endif
- }
- };
-
- class UndoTokenRemove : public UndoToken {
- StringTableUndo *table;
-
- CString name;
-
- public:
- UndoTokenRemove(StringTableUndo *_table, CString &_name)
- : table(_table), name(_name) {}
-
- void
- run(void)
- {
- table->Table<CString, ValueType>::remove(name);
-#if 0
- table->dump();
-#endif
- }
- };
-
-public:
- StringTableUndo(ValueType &nil) : StringTable<ValueType>(nil) {}
-
- void
- set(const gchar *key, ValueType &value)
- {
- ValueType &old = (StringTable<ValueType>::operator [])(key);
- CString str(key);
-
- if (old == StringTable<ValueType>::nil)
- undo.push(new UndoTokenRemove(this, str));
- else
- undo.push(new UndoTokenSet(this, str, old));
-
- old = value;
- }
-};
-
#endif