1 /****************************************************************************
2 ** $Id: qt/qcleanuphandler.h 3.3.3 edited May 27 2003 $
6 ** Copyright (C) 2001-2002 Trolltech AS. All rights reserved.
8 ** This file is part of the tools module of the Qt GUI Toolkit.
10 ** This file may be distributed under the terms of the Q Public License
11 ** as defined by Trolltech AS of Norway and appearing in the file
12 ** LICENSE.QPL included in the packaging of this file.
14 ** This file may be distributed and/or modified under the terms of the
15 ** GNU General Public License version 2 as published by the Free Software
16 ** Foundation and appearing in the file LICENSE.GPL included in the
17 ** packaging of this file.
19 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
20 ** licenses may use this file in accordance with the Qt Commercial License
21 ** Agreement provided with the Software.
23 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
24 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
26 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
27 ** information about Qt Commercial License Agreements.
28 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
29 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
31 ** Contact info@trolltech.com if any conditions of this licensing are
34 **********************************************************************/
36 #ifndef QCLEANUPHANDLER_H
37 #define QCLEANUPHANDLER_H
47 QCleanupHandler() : cleanupObjects( 0 ) {}
48 ~QCleanupHandler() { clear(); }
50 Type* add( Type **object ) {
51 if ( !cleanupObjects )
52 cleanupObjects = new QPtrList<Type*>;
53 cleanupObjects->insert( 0, object );
57 void remove( Type **object ) {
58 if ( !cleanupObjects )
60 if ( cleanupObjects->findRef( object ) >= 0 )
61 (void) cleanupObjects->take();
64 bool isEmpty() const {
65 return cleanupObjects ? cleanupObjects->isEmpty() : TRUE;
69 if ( !cleanupObjects )
71 QPtrListIterator<Type*> it( *cleanupObjects );
73 while ( ( object = it.current() ) ) {
76 cleanupObjects->remove( object );
78 delete cleanupObjects;
83 QPtrList<Type*> *cleanupObjects;
87 class QSingleCleanupHandler
90 QSingleCleanupHandler() : object( 0 ) {}
91 ~QSingleCleanupHandler() {
97 Type* set( Type **o ) {
101 void reset() { object = 0; }
107 class QSharedCleanupHandler
110 QSharedCleanupHandler() : object( 0 ) {}
111 ~QSharedCleanupHandler() {
113 if ( (*object)->deref() )
118 Type* set( Type **o ) {
122 void reset() { object = 0; }
127 #endif //QCLEANUPHANDLER_H