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