diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-18 23:36:16 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-22 01:18:05 +0100 |
commit | bd19970eb858a7c7466ce0a80377a4b44c385a97 (patch) | |
tree | 6d7bfceb8b8ac37f70e38f2e02d38758ea0073cf | |
parent | e5a24b3c79ace767d8a424b2ea01056288d03d1a (diff) | |
download | sciteco-bd19970eb858a7c7466ce0a80377a4b44c385a97.tar.gz |
removed unused Red-Black tree abstractions
they didn't work and weren't really necessary either
-rw-r--r-- | src/rbtree.h | 180 |
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 |