Mercurial > projects > qtd
comparison include/QObjectEntity.h @ 254:34a37904ff77
(none)
author | maxter |
---|---|
date | Sun, 30 Aug 2009 10:59:56 +0000 |
parents | 37eed70de029 |
children | 18bd68f586c6 |
comparison
equal
deleted
inserted
replaced
253:073b9153ed8a | 254:34a37904ff77 |
---|---|
1 #ifndef QQOBJECTENTITY_H | 1 #ifndef QQOBJECTENTITY_H |
2 #define QQOBJECTENTITY_H | 2 #define QQOBJECTENTITY_H |
3 | 3 |
4 #include <cstdlib> | 4 #include "qtd_core.h" |
5 #include <qobject.h> | |
6 #include <iostream> | |
5 | 7 |
6 class Qtd_QObjectEntity | 8 QTD_EXPORT(void, qtd_delete_d_qobject, (void* dPtr)) |
9 | |
10 #ifdef CPP_SHARED | |
11 #define qtd_delete_d_qobject qtd_get_qtd_delete_d_qobject() | |
12 #endif | |
13 | |
14 //TODO: user data ID must be registered with QObject::registerUserData; | |
15 #define userDataId 0 | |
16 | |
17 class QtD_QObjectEntity : public QtD_Entity, public QObjectUserData | |
7 { | 18 { |
8 public: | 19 public: |
9 Qtd_QObjectEntity(void *d_ptr) { _d_ptr = d_ptr; } | |
10 void *d_entity() const { return _d_ptr; } | |
11 | 20 |
12 private: | 21 QtD_QObjectEntity(QObject *qObject, void *dId) : QtD_Entity(dId) |
13 void *_d_ptr; | 22 { |
23 qObject->setUserData(userDataId, this); | |
24 } | |
25 | |
26 virtual ~QtD_QObjectEntity() | |
27 { | |
28 if (dId) | |
29 destroyEntity(); | |
30 } | |
31 | |
32 inline void destroyEntity(QObject *qObject = NULL) | |
33 { | |
34 Q_ASSERT(dId); | |
35 qtd_delete_d_qobject(dId); | |
36 if (qObject) | |
37 { | |
38 qObject->setUserData(userDataId, NULL); | |
39 dId = NULL; | |
40 } | |
41 } | |
42 | |
43 inline static QtD_QObjectEntity* getQObjectEntity(const QObject *qObject) | |
44 { | |
45 return static_cast<QtD_QObjectEntity*>(qObject->userData(userDataId)); | |
46 } | |
14 }; | 47 }; |
15 | 48 |
16 #endif // QQOBJECTENTITY_H | 49 #endif // QQOBJECTENTITY_H |