annotate include/QObjectEntity.h @ 248:7664de4a55e5

Fixed #23. QtD_QObjectEntity is not created dynamically for shell classes any more. Class initialization is now performed by static constructors. When wrapping QObjects returned from functions, their run-time types are now taken into account. QObjects are allocated on GC heap, a doubly-linked list is used to prevent them from been collected (arguably a better solution than allocating on C heap and adding GC ranges) Minor changes (including unnecessary).
author maxter
date Thu, 20 Aug 2009 14:47:17 +0000
parents e78566595089
children 37eed70de029
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
248
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
4 #include "qtd_core.h"
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
5 #include <qobject.h>
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
6 #include <iostream>
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
7
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
8 QTD_EXPORT(void, qtd_delete_d_qobject, (void* dPtr))
1
e78566595089 initial import
mandel
parents:
diff changeset
9
248
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
10 #ifdef CPP_SHARED
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
11 #define qtd_delete_d_qobject qtd_get_qtd_delete_d_qobject()
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
12 #endif
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
13
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
14 //TODO: user data ID must be registered with QObject::registerUserData;
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
15 #define userDataId 0
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
16
7664de4a55e5 Fixed #23.
maxter
parents: 1
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:
248
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
20
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
21 QtD_QObjectEntity(QObject *qObject, void *dId) : QtD_Entity(dId)
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
22 {
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
23 qObject->setUserData(userDataId, this);
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
24 }
1
e78566595089 initial import
mandel
parents:
diff changeset
25
248
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
26 virtual ~QtD_QObjectEntity()
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
27 {
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
28 qtd_delete_d_qobject(dId);
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
29 }
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
30
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
31 inline static QtD_QObjectEntity* getQObjectEntity(const QObject *qObject)
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
32 {
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
33 return static_cast<QtD_QObjectEntity*>(qObject->userData(userDataId));
7664de4a55e5 Fixed #23.
maxter
parents: 1
diff changeset
34 }
1
e78566595089 initial import
mandel
parents:
diff changeset
35 };
e78566595089 initial import
mandel
parents:
diff changeset
36
e78566595089 initial import
mandel
parents:
diff changeset
37 #endif // QQOBJECTENTITY_H