VR-Forces 4.0.4 Class Documentation
include/ngutil/dtqlist.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: dtqlist.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef DTQLIST_H_
00013 #define DTQLIST_H_
00014 
00015 #include <QtCore/QList>
00016 
00019 
00020 template <typename T>
00021 class DtPtrQList : public QList<T>
00022 {  
00023 
00024 public:
00025 
00026    DtPtrQList<T>() : QList<T>(), myAutoDelete(false) {};
00027 
00028    DtPtrQList<T>(const DtPtrQList<T>& orig) : QList<T>(orig), 
00029       myAutoDelete(orig.myAutoDelete) {};
00030 
00031    virtual ~DtPtrQList<T>() { clear(); };
00032 
00033    void clear() 
00034    { 
00035       if (myAutoDelete) 
00036       { 
00037          typename DtPtrQList<T>::iterator it = this->begin(); 
00038          while (it != this->end()) 
00039          { 
00040             delete *it; 
00041             ++it; 
00042          } 
00043       } 
00044       QList<T>::clear(); 
00045    };
00046 
00047    void setAutoDelete(bool b) 
00048    { 
00049       myAutoDelete = b; 
00050    };
00051 
00052    bool autoDelete() const 
00053    { 
00054       return myAutoDelete; 
00055    };
00056 
00057    typename DtPtrQList<T>::iterator erase(typename DtPtrQList<T>::iterator pos) 
00058    { 
00059       T val = *pos; 
00060       typename DtPtrQList<T>::iterator retVal = QList<T>::erase(pos); 
00061       if (myAutoDelete) 
00062       {
00063          delete val;
00064       }   
00065       return retVal; 
00066    };
00067 
00068    typename DtPtrQList<T>::iterator erase(
00069       typename DtPtrQList<T>::iterator first, 
00070       typename DtPtrQList<T>::iterator last) 
00071    { 
00072       while (first != last) 
00073       {
00074          erase(first++); 
00075       }
00076       return last; 
00077    };
00078 
00079    int findRef(T t) const 
00080    { 
00081       return find(t); 
00082    };
00083 
00084    int find(T t) const { return indexOf(t); };
00085 
00086    void removeRef(T t) { remove(t); };
00087 
00088    void remove(T t) 
00089    { 
00090       typename DtPtrQList<T>::iterator it = this->begin();  
00091       while (it != this->end()) 
00092       { 
00093          if (*it == t) 
00094          { 
00095             erase(it); 
00096             break; 
00097          } 
00098          ++it; 
00099       }
00100    };
00101 
00102    void removeAt(int i) 
00103    { 
00104       T val = this->at(i); 
00105       QList<T>::removeAt(i); 
00106       if (myAutoDelete) 
00107       {
00108          delete val; 
00109       }
00110    };
00111 
00112 protected:
00113    bool  myAutoDelete;
00114 };
00115 
00116 #endif //DTQLIST_H_

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)