KCal Library
listbase.h
Go to the documentation of this file.
00001 /* 00002 This file is part of the kcal library. 00003 00004 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 00020 */ 00029 #ifndef KCAL_LISTBASE_H 00030 #define KCAL_LISTBASE_H 00031 00032 #include "kcal_export.h" 00033 #include <QtCore/QList> 00034 00035 namespace KCal { 00036 00043 template<class T> 00044 class ListBase : public QList<T *> 00045 { 00046 public: 00050 ListBase() 00051 : QList<T *>(), mAutoDelete( false ) 00052 { 00053 } 00054 00059 ListBase( const ListBase &other ) 00060 : QList<T *>( other ), mAutoDelete( false ) 00061 { 00062 } 00063 00067 ~ListBase() 00068 { 00069 if ( mAutoDelete ) { 00070 qDeleteAll( *this ); 00071 } 00072 } 00073 00078 ListBase &operator=( const ListBase &l ) 00079 { 00080 if ( this == &l ) { 00081 return *this; 00082 } 00083 QList<T *>::operator=( l ); 00084 return *this; 00085 } 00086 00093 void setAutoDelete( bool autoDelete ) 00094 { 00095 mAutoDelete = autoDelete; 00096 } 00097 00102 void clearAll() 00103 { 00104 if ( mAutoDelete ) { 00105 qDeleteAll( *this ); 00106 } 00107 QList<T*>::clear(); 00108 } 00109 00116 bool removeRef( T *t ) 00117 { 00118 if ( !this->contains( t ) ) { 00119 return false; 00120 } else { 00121 if ( mAutoDelete ) { 00122 delete t; 00123 } 00124 this->removeAll( t ); 00125 return true; 00126 } 00127 } 00128 00134 void removeRef( typename QList<T*>::iterator it ) 00135 { 00136 if ( mAutoDelete ) { 00137 delete *it; 00138 } 00139 QList<T*>::erase( it ); 00140 } 00141 00142 bool operator==( const ListBase &l2 ) 00143 { 00144 int sz = QList<T*>::size(); 00145 00146 if ( sz != l2.size() ) { 00147 return false; 00148 } else { 00149 for ( int i=0; i<sz; ++i ) { 00150 if ( !( *QList<T*>::value( i ) == *l2.value( i ) ) ) { 00151 return false; 00152 } 00153 } 00154 } 00155 return true; 00156 } 00157 00158 private: 00159 //@cond PRIVATE 00160 bool mAutoDelete; 00161 //@endcond 00162 }; 00163 00164 } 00165 00166 #endif
This file is part of the KDE documentation.
Documentation copyright © 1996-2012 The KDE developers.
Generated on Thu Aug 2 2012 15:25:53 by doxygen 1.7.5 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2012 The KDE developers.
Generated on Thu Aug 2 2012 15:25:53 by doxygen 1.7.5 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.