Mercurial > projects > qtd
comparison 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 |
comparison
equal
deleted
inserted
replaced
247:27497bbe62a1 | 248:7664de4a55e5 |
---|---|
19 #else | 19 #else |
20 #define DLL_PUBLIC | 20 #define DLL_PUBLIC |
21 #endif | 21 #endif |
22 | 22 |
23 #ifdef CPP_SHARED | 23 #ifdef CPP_SHARED |
24 #define QTD_EXPORT(TYPE, NAME, ARGS) \ | 24 #define QTD_EXPORT(TYPE, NAME, ARGS) \ |
25 extern "C" typedef TYPE (*pf_##NAME)ARGS; \ | 25 extern "C" typedef TYPE (*pf_##NAME)ARGS; \ |
26 extern "C" pf_##NAME qtd_get_##NAME(); | 26 extern "C" pf_##NAME qtd_get_##NAME(); |
27 #define QTD_EXPORT_VAR(NAME) \ | 27 #define QTD_EXPORT_VAR(NAME) \ |
28 pf_##NAME m_##NAME; \ | 28 pf_##NAME m_##NAME; \ |
29 extern "C" DLL_PUBLIC pf_##NAME qtd_get_##NAME() { return m_##NAME; } | 29 extern "C" DLL_PUBLIC pf_##NAME qtd_get_##NAME() { return m_##NAME; } |
30 #define QTD_EXPORT_VAR_SET(NAME, VALUE) \ | 30 #define QTD_EXPORT_VAR_SET(NAME, VALUE) \ |
31 m_##NAME = (pf_##NAME) VALUE | 31 m_##NAME = (pf_##NAME) VALUE |
32 #else | 32 #else |
33 #define QTD_EXPORT(TYPE, NAME, ARGS) \ | 33 #define QTD_EXPORT(TYPE, NAME, ARGS) \ |
34 extern "C" TYPE NAME ARGS; | 34 extern "C" TYPE NAME ARGS; |
35 #endif | 35 #endif |
36 | 36 |
37 struct QModelIndexAccessor { | 37 struct QModelIndexAccessor { |
38 int row; | 38 int row; |
44 struct DArray { | 44 struct DArray { |
45 size_t length; | 45 size_t length; |
46 void* ptr; | 46 void* ptr; |
47 }; | 47 }; |
48 | 48 |
49 const uint USER_DATA_ID = 0; | 49 enum QtdObjectFlags |
50 { | |
51 qNone, | |
52 qNativeOwnership = 0x01, | |
53 qDOwnership = 0x02 | |
54 //gcManaged = 0x04 | |
55 }; | |
56 | |
57 class QtD_Entity | |
58 { | |
59 public: | |
60 void* dId; | |
61 | |
62 QtD_Entity(void* id) : dId(id) | |
63 { | |
64 } | |
65 }; | |
50 | 66 |
51 #define Array DArray | 67 #define Array DArray |
52 | 68 |
53 #ifdef CPP_SHARED | 69 #ifdef CPP_SHARED |
54 typedef void (*pfunc_abstr)(); | 70 typedef void (*pfunc_abstr)(); |
55 #endif | 71 #endif |
56 | 72 |
57 QTD_EXPORT(void, _d_toUtf8, (const unsigned short* arr, uint size, void* str)) | 73 QTD_EXPORT(void, qtd_toUtf8, (const unsigned short* arr, uint size, void* str)) |
58 QTD_EXPORT(void, __qtd_dummy, ()) | 74 QTD_EXPORT(void, qtd_dummy, ()) |
59 | 75 |
60 #ifdef CPP_SHARED | 76 #ifdef CPP_SHARED |
61 #define _d_toUtf8 qtd_get__d_toUtf8() | 77 #define qtd_toUtf8 qtd_get_qtd_toUtf8() |
62 #define __qtd_dummy qtd_get___qtd_dummy() | 78 #define qtd_dummy qtd_get_qtd_dummy() |
63 #endif | 79 #endif |
64 | 80 |
65 extern "C" QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia); | 81 extern "C" QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia); |
66 extern "C" QModelIndexAccessor qtd_from_QModelIndex(const QModelIndex &index); | 82 extern "C" QModelIndexAccessor qtd_from_QModelIndex(const QModelIndex &index); |
67 | 83 |
84 | |
85 | |
68 #endif // QTD_CORE_H | 86 #endif // QTD_CORE_H |