annotate include/QObjectEntity.h @ 266:5134552d97f6

Bug fix for http://www.dsource.org/forums/viewtopic.php?t=4713
author SokoL_SD
date Fri, 11 Sep 2009 13:50:59 +0000
parents 34a37904ff77
children 18bd68f586c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 #ifndef QQOBJECTENTITY_H
e78566595089 initial import
mandel
parents:
diff changeset
2 #define QQOBJECTENTITY_H
e78566595089 initial import
mandel
parents:
diff changeset
3
254
maxter
parents: 252
diff changeset
4 #include "qtd_core.h"
maxter
parents: 252
diff changeset
5 #include <qobject.h>
maxter
parents: 252
diff changeset
6 #include <iostream>
maxter
parents: 252
diff changeset
7
maxter
parents: 252
diff changeset
8 QTD_EXPORT(void, qtd_delete_d_qobject, (void* dPtr))
1
e78566595089 initial import
mandel
parents:
diff changeset
9
254
maxter
parents: 252
diff changeset
10 #ifdef CPP_SHARED
maxter
parents: 252
diff changeset
11 #define qtd_delete_d_qobject qtd_get_qtd_delete_d_qobject()
maxter
parents: 252
diff changeset
12 #endif
maxter
parents: 252
diff changeset
13
maxter
parents: 252
diff changeset
14 //TODO: user data ID must be registered with QObject::registerUserData;
maxter
parents: 252
diff changeset
15 #define userDataId 0
maxter
parents: 252
diff changeset
16
maxter
parents: 252
diff changeset
17 class QtD_QObjectEntity : public QtD_Entity, public QObjectUserData
1
e78566595089 initial import
mandel
parents:
diff changeset
18 {
e78566595089 initial import
mandel
parents:
diff changeset
19 public:
254
maxter
parents: 252
diff changeset
20
maxter
parents: 252
diff changeset
21 QtD_QObjectEntity(QObject *qObject, void *dId) : QtD_Entity(dId)
maxter
parents: 252
diff changeset
22 {
maxter
parents: 252
diff changeset
23 qObject->setUserData(userDataId, this);
maxter
parents: 252
diff changeset
24 }
1
e78566595089 initial import
mandel
parents:
diff changeset
25
254
maxter
parents: 252
diff changeset
26 virtual ~QtD_QObjectEntity()
maxter
parents: 252
diff changeset
27 {
maxter
parents: 252
diff changeset
28 if (dId)
maxter
parents: 252
diff changeset
29 destroyEntity();
maxter
parents: 252
diff changeset
30 }
maxter
parents: 252
diff changeset
31
maxter
parents: 252
diff changeset
32 inline void destroyEntity(QObject *qObject = NULL)
maxter
parents: 252
diff changeset
33 {
maxter
parents: 252
diff changeset
34 Q_ASSERT(dId);
maxter
parents: 252
diff changeset
35 qtd_delete_d_qobject(dId);
maxter
parents: 252
diff changeset
36 if (qObject)
maxter
parents: 252
diff changeset
37 {
maxter
parents: 252
diff changeset
38 qObject->setUserData(userDataId, NULL);
maxter
parents: 252
diff changeset
39 dId = NULL;
maxter
parents: 252
diff changeset
40 }
maxter
parents: 252
diff changeset
41 }
maxter
parents: 252
diff changeset
42
maxter
parents: 252
diff changeset
43 inline static QtD_QObjectEntity* getQObjectEntity(const QObject *qObject)
maxter
parents: 252
diff changeset
44 {
maxter
parents: 252
diff changeset
45 return static_cast<QtD_QObjectEntity*>(qObject->userData(userDataId));
maxter
parents: 252
diff changeset
46 }
1
e78566595089 initial import
mandel
parents:
diff changeset
47 };
e78566595089 initial import
mandel
parents:
diff changeset
48
e78566595089 initial import
mandel
parents:
diff changeset
49 #endif // QQOBJECTENTITY_H