annotate include/qtd_core.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 3aa118a9ae71
children 37eed70de029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /**
e78566595089 initial import
mandel
parents:
diff changeset
2 *
e78566595089 initial import
mandel
parents:
diff changeset
3 * Copyright: Copyright QtD Team, 2008-2009
e78566595089 initial import
mandel
parents:
diff changeset
4 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
e78566595089 initial import
mandel
parents:
diff changeset
5 *
e78566595089 initial import
mandel
parents:
diff changeset
6 * Copyright QtD Team, 2008-2009
e78566595089 initial import
mandel
parents:
diff changeset
7 * Distributed under the Boost Software License, Version 1.0.
e78566595089 initial import
mandel
parents:
diff changeset
8 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
e78566595089 initial import
mandel
parents:
diff changeset
9 *
e78566595089 initial import
mandel
parents:
diff changeset
10 */
e78566595089 initial import
mandel
parents:
diff changeset
11
e78566595089 initial import
mandel
parents:
diff changeset
12 #ifndef QTD_CORE_H
e78566595089 initial import
mandel
parents:
diff changeset
13 #define QTD_CORE_H
e78566595089 initial import
mandel
parents:
diff changeset
14
e78566595089 initial import
mandel
parents:
diff changeset
15 #include <QAbstractItemModel>
e78566595089 initial import
mandel
parents:
diff changeset
16
e78566595089 initial import
mandel
parents:
diff changeset
17 #if defined WIN32
e78566595089 initial import
mandel
parents:
diff changeset
18 #define DLL_PUBLIC __declspec(dllexport)
e78566595089 initial import
mandel
parents:
diff changeset
19 #else
e78566595089 initial import
mandel
parents:
diff changeset
20 #define DLL_PUBLIC
e78566595089 initial import
mandel
parents:
diff changeset
21 #endif
e78566595089 initial import
mandel
parents:
diff changeset
22
e78566595089 initial import
mandel
parents:
diff changeset
23 #ifdef CPP_SHARED
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
24 #define QTD_EXPORT(TYPE, NAME, ARGS) \
1
e78566595089 initial import
mandel
parents:
diff changeset
25 extern "C" typedef TYPE (*pf_##NAME)ARGS; \
e78566595089 initial import
mandel
parents:
diff changeset
26 extern "C" pf_##NAME qtd_get_##NAME();
e78566595089 initial import
mandel
parents:
diff changeset
27 #define QTD_EXPORT_VAR(NAME) \
e78566595089 initial import
mandel
parents:
diff changeset
28 pf_##NAME m_##NAME; \
e78566595089 initial import
mandel
parents:
diff changeset
29 extern "C" DLL_PUBLIC pf_##NAME qtd_get_##NAME() { return m_##NAME; }
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
30 #define QTD_EXPORT_VAR_SET(NAME, VALUE) \
1
e78566595089 initial import
mandel
parents:
diff changeset
31 m_##NAME = (pf_##NAME) VALUE
e78566595089 initial import
mandel
parents:
diff changeset
32 #else
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
33 #define QTD_EXPORT(TYPE, NAME, ARGS) \
1
e78566595089 initial import
mandel
parents:
diff changeset
34 extern "C" TYPE NAME ARGS;
e78566595089 initial import
mandel
parents:
diff changeset
35 #endif
e78566595089 initial import
mandel
parents:
diff changeset
36
e78566595089 initial import
mandel
parents:
diff changeset
37 struct QModelIndexAccessor {
e78566595089 initial import
mandel
parents:
diff changeset
38 int row;
e78566595089 initial import
mandel
parents:
diff changeset
39 int col;
e78566595089 initial import
mandel
parents:
diff changeset
40 void *ptr;
e78566595089 initial import
mandel
parents:
diff changeset
41 QAbstractItemModel *model;
e78566595089 initial import
mandel
parents:
diff changeset
42 };
e78566595089 initial import
mandel
parents:
diff changeset
43
e78566595089 initial import
mandel
parents:
diff changeset
44 struct DArray {
e78566595089 initial import
mandel
parents:
diff changeset
45 size_t length;
e78566595089 initial import
mandel
parents:
diff changeset
46 void* ptr;
e78566595089 initial import
mandel
parents:
diff changeset
47 };
e78566595089 initial import
mandel
parents:
diff changeset
48
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
49 enum QtdObjectFlags
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
50 {
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
51 qNone,
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
52 qNativeOwnership = 0x01,
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
53 qDOwnership = 0x02
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
54 //gcManaged = 0x04
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
55 };
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
56
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
57 class QtD_Entity
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
58 {
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
59 public:
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
60 void* dId;
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
61
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
62 QtD_Entity(void* id) : dId(id)
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
63 {
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
64 }
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
65 };
105
3aa118a9ae71 each QObject now has associated child QObject for handling signals. fixes #15
eldar
parents: 35
diff changeset
66
33
cf8a415f3f32 gui package is fully wrapped now. lots of fixes in the generator
eldar
parents: 1
diff changeset
67 #define Array DArray
cf8a415f3f32 gui package is fully wrapped now. lots of fixes in the generator
eldar
parents: 1
diff changeset
68
1
e78566595089 initial import
mandel
parents:
diff changeset
69 #ifdef CPP_SHARED
e78566595089 initial import
mandel
parents:
diff changeset
70 typedef void (*pfunc_abstr)();
e78566595089 initial import
mandel
parents:
diff changeset
71 #endif
e78566595089 initial import
mandel
parents:
diff changeset
72
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
73 QTD_EXPORT(void, qtd_toUtf8, (const unsigned short* arr, uint size, void* str))
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
74 QTD_EXPORT(void, qtd_dummy, ())
1
e78566595089 initial import
mandel
parents:
diff changeset
75
e78566595089 initial import
mandel
parents:
diff changeset
76 #ifdef CPP_SHARED
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
77 #define qtd_toUtf8 qtd_get_qtd_toUtf8()
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
78 #define qtd_dummy qtd_get_qtd_dummy()
1
e78566595089 initial import
mandel
parents:
diff changeset
79 #endif
e78566595089 initial import
mandel
parents:
diff changeset
80
e78566595089 initial import
mandel
parents:
diff changeset
81 extern "C" QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia);
e78566595089 initial import
mandel
parents:
diff changeset
82 extern "C" QModelIndexAccessor qtd_from_QModelIndex(const QModelIndex &index);
e78566595089 initial import
mandel
parents:
diff changeset
83
248
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
84
7664de4a55e5 Fixed #23.
maxter
parents: 105
diff changeset
85
1
e78566595089 initial import
mandel
parents:
diff changeset
86 #endif // QTD_CORE_H