diff options
Diffstat (limited to 'src/datablocks/categorytree.h')
-rw-r--r-- | src/datablocks/categorytree.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/datablocks/categorytree.h b/src/datablocks/categorytree.h new file mode 100644 index 0000000..e5668e4 --- /dev/null +++ b/src/datablocks/categorytree.h @@ -0,0 +1,61 @@ +/*************************************************************************** +* Copyright (C) 2004 by Jason Kivlighn * +* (jkivlighn@gmail.com) * +* * +* 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. * +***************************************************************************/ +#ifndef CATEGORYTREE_H +#define CATEGORYTREE_H + +#include "element.h" + +class CategoryTree +{ +public: + CategoryTree( CategoryTree *parent = 0 ); + + ~CategoryTree(); + + Element category; + + CategoryTree *add + ( const Element &cat ); + void clear(); + + bool contains( int id ) const; + CategoryTree* find( int id ) const; + + CategoryTree *parent() const + { + return m_parent; + } + CategoryTree *firstChild() const + { + return m_child; + } + CategoryTree *nextSibling() const + { + return m_sibling; + } + + void takeItem( CategoryTree * ); + void insertItem( CategoryTree * ); + + int count() const { return m_count; } + +private: + CategoryTree( const CategoryTree & ); + CategoryTree &operator=( const CategoryTree & ); + + CategoryTree *m_parent; + CategoryTree *m_child; + CategoryTree *m_sibling; + CategoryTree *m_last; + + int m_count; +}; + +#endif |