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 };