INodeTab.h

Go to the documentation of this file.
00001 
00002 #pragma once
00003 
00004 #include "inode.h"
00005 
00007 class INodeTab : public Tab<INode*> 
00008 {
00009 public:     
00011 
00013     void DisposeTemporary() {
00014         for (int i=0; i<Count(); i++) {
00015             if ((*this)[i] != NULL) {
00016                 (*this)[i]->DisposeTemporary();
00017             }
00018         }
00019     }
00020 
00022 
00025     int IndexOf(INode* node)
00026     {
00027         for (int i=0; i<Count(); i++) {
00028             if ((*this)[i] == node) {
00029                 return i;
00030             }
00031         }
00032         return -1;
00033     }
00035 
00038     bool Contains(INode *node)
00039     {
00040         return (IndexOf(node) >= 0);
00041     }
00042 
00044 
00052     int AppendNode(INode* node, bool allowDups = false, int allocExtra = 0) {
00053         if (!allowDups && Contains(node)) {
00054             return Count();
00055         }
00056         return Append(1, &node, allocExtra); 
00057     }
00058 
00060 
00069     int InsertNode(INode* node, int at, bool allowDups = false) {
00070         if (at < 0) {
00071             AppendNode(node, allowDups);
00072             return Count();
00073         }
00074         else if (allowDups || !Contains(node)) {
00075             return Insert(at, 1, &node);
00076         }
00077         return -1;
00078     } 
00079 };