Last change
on this file since 12 was 2, checked in by dmik, 19 years ago |
Imported original Psi 0.10 sources from Affinix
|
File size:
866 bytes
|
Line | |
---|
1 | #ifndef SAFEDELETE_H
|
---|
2 | #define SAFEDELETE_H
|
---|
3 |
|
---|
4 | #include<qobject.h>
|
---|
5 | #include<qobjectlist.h>
|
---|
6 |
|
---|
7 | class SafeDelete;
|
---|
8 | class SafeDeleteLock
|
---|
9 | {
|
---|
10 | public:
|
---|
11 | SafeDeleteLock(SafeDelete *sd);
|
---|
12 | ~SafeDeleteLock();
|
---|
13 |
|
---|
14 | private:
|
---|
15 | SafeDelete *_sd;
|
---|
16 | bool own;
|
---|
17 | friend class SafeDelete;
|
---|
18 | void dying();
|
---|
19 | };
|
---|
20 |
|
---|
21 | class SafeDelete
|
---|
22 | {
|
---|
23 | public:
|
---|
24 | SafeDelete();
|
---|
25 | ~SafeDelete();
|
---|
26 |
|
---|
27 | void deleteLater(QObject *o);
|
---|
28 |
|
---|
29 | // same as QObject::deleteLater()
|
---|
30 | static void deleteSingle(QObject *o);
|
---|
31 |
|
---|
32 | private:
|
---|
33 | QObjectList list;
|
---|
34 | void deleteAll();
|
---|
35 |
|
---|
36 | friend class SafeDeleteLock;
|
---|
37 | SafeDeleteLock *lock;
|
---|
38 | void unlock();
|
---|
39 | };
|
---|
40 |
|
---|
41 | class SafeDeleteLater : public QObject
|
---|
42 | {
|
---|
43 | Q_OBJECT
|
---|
44 | public:
|
---|
45 | static SafeDeleteLater *ensureExists();
|
---|
46 | void deleteItLater(QObject *o);
|
---|
47 |
|
---|
48 | private slots:
|
---|
49 | void explode();
|
---|
50 |
|
---|
51 | private:
|
---|
52 | SafeDeleteLater();
|
---|
53 | ~SafeDeleteLater();
|
---|
54 |
|
---|
55 | QObjectList list;
|
---|
56 | friend class SafeDelete;
|
---|
57 | static SafeDeleteLater *self;
|
---|
58 | };
|
---|
59 |
|
---|
60 | #endif
|
---|
Note:
See
TracBrowser
for help on using the repository browser.