home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 5257 / source.7z / x_kary.h < prev    next >
Encoding:
C/C++ Source or Header  |  2012-02-28  |  979 b   |  53 lines

  1. #ifndef __XENTAX_KARY_H
  2. #define __XENTAX_KARY_H
  3.  
  4. struct KAryTreeData {
  5.  size_t type;
  6.  KAryTreeData(size_t id = 0) : type(id) {}
  7.  virtual ~KAryTreeData() { std::cout << "Deleting KAryTreeData..." << std::endl; }
  8. };
  9.  
  10. struct KAryTreeNode {
  11.  typedef KAryTreeData* data_t;
  12.  data_t data;
  13.  std::deque<size_t> children;
  14. };
  15.  
  16. class KAryTree {
  17.  private :
  18.   std::deque<KAryTreeNode> list;
  19.  public :
  20.   KAryTree()
  21.   {
  22.   }
  23.  ~KAryTree()
  24.   {
  25.    for(size_t i = 0; i < list.size(); i++) {
  26.        delete list[i].data;
  27.        list[i].data = nullptr;
  28.       }
  29.   }
  30.  public :
  31.   bool insert(KAryTreeData* item, uint32 parent)
  32.   {
  33.    // this is not root
  34.    if(parent != 0xFFFFFFFF) {
  35.      }
  36.    // this is root
  37.    else if(list.size())
  38.       return false;
  39.  
  40.    // insert into list
  41.    KAryTreeNode node;
  42.    node.data = item;
  43.    list.push_back(node);
  44.  
  45.    return true;
  46.   }
  47.  private :
  48.   KAryTree(const KAryTree&);
  49.   void operator =(const KAryTree&);
  50. };
  51.  
  52. #endif
  53.