annotate d2/qt/core/QMetaObject.d @ 364:a084e2df3776

Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
author Max Samukha <maxter@maxter.com>
date Fri, 11 Jun 2010 12:16:09 +0300
parents 9784459f0750
children 958e8b9a89bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
1 module qt.core.QMetaObject;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
2
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
3 import
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
4 qt.QGlobal,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
5 qt.core.QObject,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
6 qtd.QtdObject,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
7 std.algorithm,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
8 qtd.meta.Runtime,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
9 qtd.meta.Compiletime,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
10 qtd.Marshal,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
11 qtd.MOC,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
12 std.string,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
13 std.typetuple,
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
14 std.c.stdlib;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
15
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
16 class QMetaArgument : MetaBase
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
17 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
18 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
19
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
20 class QMetaMethod : MetaBase
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
21 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
22 alias typeof(this) This;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
23
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
24 // QMetaArgument[] arguments;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
25 string signature;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
26 int indexOfMethod;
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
27
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
28 this(string signature_, int indexOfMethod_)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
29 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
30 signature = signature_;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
31 indexOfMethod = indexOfMethod_;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
32 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
33
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
34 string args() const
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
35 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
36 int openBracket = indexOf(signature, '(');
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
37 if(signature.length - openBracket - 2 > 0)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
38 return signature[openBracket + 1 .. $-1];
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
39 else
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
40 return "";
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
41 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
42
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
43 string name() const
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
44 {
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
45 int openBracket = indexOf(signature, '(');
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
46 return signature[0..openBracket];
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
47 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
48
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
49 // mixin(Derived) or typeof(Derived) would help a lot here
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
50 static create(alias method, M : This)(uint index)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
51 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
52 alias ParameterTypeTuple!method Args;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
53 return new M(.signature!(Args)(methodName!(method)), index);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
54 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
55 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
56
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
57 class QMetaSignal : QMetaMethod
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
58 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
59 alias typeof(this) This;
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
60
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
61 this(string signature_, int indexOfMethod_)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
62 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
63 super(signature_, indexOfMethod_);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
64 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
65
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
66 static This create(alias method)(uint index)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
67 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
68 return typeof(super).create!(method, This)(index);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
69 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
70 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
71
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
72 class QMetaSlot : QMetaMethod
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
73 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
74 alias typeof(this) This;
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
75
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
76 this(string signature_, int indexOfMethod_)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
77 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
78 super(signature_, indexOfMethod_);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
79 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
80
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
81 static This create(alias method)(uint index)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
82 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
83 return typeof(super).create!(method, This)(index);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
84 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
85 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
86
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
87 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
88 Base class for QtD meta-classes.
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
89 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
90 abstract class QtdMetaClass : MetaClass
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
91 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
92 private:
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
93 void* nativeId_;
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
94
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
95 this() {}
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
96
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
97 public:
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
98
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
99 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
100 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
101 @property
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
102 void* nativeId()
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
103 {
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
104 return nativeId_;
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
105 }
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
106
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
107 /* internal */ void construct(T)()
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
108 {
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
109 super.construct!T();
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
110 nativeId_ = T.qtd_nativeMetaObject;
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
111 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
112 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
113
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
114 struct QMetaObjectNative
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
115 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
116 QMetaObjectNative *superdata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
117 immutable(char) *stringdata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
118 const(uint) *data;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
119 void *extradata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
120 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
121
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
122 class QMetaException : Exception { this(string msg) { super(msg); } }
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
123
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
124 final class QMetaObject : QtdMetaClass
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
125 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
126 alias typeof(this) This;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
127
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
128 enum Call
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
129 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
130 InvokeMetaMethod,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
131 ReadProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
132 WriteProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
133 ResetProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
134 QueryPropertyDesignable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
135 QueryPropertyScriptable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
136 QueryPropertyStored,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
137 QueryPropertyEditable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
138 QueryPropertyUser,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
139 CreateInstance
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
140 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
141
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
142 private
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
143 {
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
144 QMetaMethod[] _methods;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
145 QObject function(void* nativeId) _createWrapper;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
146 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
147
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
148 void construct(T : QObject)()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
149 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
150 super.construct!T();
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
151
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
152 static if (isQtType!T)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
153 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
154 static if (is(T.ConcreteType))
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
155 alias T.ConcreteType Concrete;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
156 else
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
157 alias T Concrete;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
158
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
159 _createWrapper = function QObject(void* nativeId) {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
160 auto obj = new Concrete(nativeId, cast(QtdObjectFlags)(QtdObjectFlags.nativeOwnership | QtdObjectFlags.dynamicEntity));
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
161 T.__createEntity(nativeId, cast(void*)obj);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
162 return obj;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
163 };
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
164
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
165 T._populateMetaInfo;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
166 }
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
167
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
168 // create run time meta-objects for user-defined signals and slots
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
169 else static if (is(typeof(T.methods)))
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
170 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
171 alias BaseClassesTuple!(T)[0] Base;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
172 int index = Base.staticMetaObject().methodCount();
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
173
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
174 static if (T.signals.length)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
175 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
176 foreach (signal; T.signals)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
177 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
178 addMethod(QMetaSignal.create!signal(index));
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
179 index++;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
180 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
181 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
182
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
183 static if (T.slots.length)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
184 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
185 foreach (slot; T.slots)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
186 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
187 addMethod(QMetaSlot.create!slot(index));
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
188 index++;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
189 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
190 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
191 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
192 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
193
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
194 /* internal */ alias createImpl!This create;
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
195
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
196 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
197 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
198 @property
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
199 override This base()
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
200 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
201 return super.base;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
202 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
203
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
204 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
205 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
206 @property
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
207 override This firstDerived()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
208 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
209 return super.firstDerived;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
210 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
211
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
212 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
213 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
214 @property
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
215 override This next()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
216 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
217 return super.next;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
218 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
219
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
220 /**
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
221 */
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
222 @property
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
223 override QMetaObjectNative* nativeId()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
224 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
225 return cast(QMetaObjectNative*)super.nativeId;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
226 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
227
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
228 @property
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
229 const (QMetaMethod[]) methods()
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
230 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
231 return _methods;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
232 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
233
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
234 void addMethod(QMetaMethod method_)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
235 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
236 _methods ~= method_;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
237 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
238
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
239 QMetaMethod lookUpMethod(string slot)
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
240 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
241 foreach (method; _methods)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
242 if (method.signature == slot)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
243 return method;
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
244 if (base)
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
245 return base.lookUpMethod(slot);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
246 else
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
247 return null;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
248 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
249
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
250 QMetaSignal lookUpSignal(string signal)
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
251 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
252 foreach (method; _methods)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
253 if (method.signature == signal && cast(QMetaSignal)method)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
254 return cast(QMetaSignal)method;
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
255 if (base)
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
256 return base.lookUpSignal(signal);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
257 else
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
258 return null;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
259 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
260
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
261 QMetaMethod[] lookUpMethodOverloads(string methodName)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
262 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
263 typeof(return) result;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
264 foreach (method; _methods)
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
265 if (method.name == methodName)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
266 result ~= method;
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
267 if (base)
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
268 result ~= base.lookUpMethodOverloads(methodName);
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
269 return result;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
270 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
271
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
272 QMetaSignal[] lookUpSignalOverloads(string signalName)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
273 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
274 typeof(return) result;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
275 foreach (method; _methods)
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
276 if (method.name == signalName && cast(QMetaSignal)method)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
277 result ~= cast(QMetaSignal)method;
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
278 if (base)
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
279 result ~= base.lookUpSignalOverloads(signalName);
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
280 return result;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
281 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
282
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
283 private QMetaObject lookupDerived(void*[] moIds)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
284 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
285 assert (moIds.length >= 1);
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
286
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
287 for (auto mo = firstDerived; mo !is null; mo = mo.next)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
288 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
289 if (mo.nativeId == moIds[0])
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
290 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
291 if (moIds.length == 1) // exact match found
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
292 return mo;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
293 else // look deeper
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
294 return mo.lookupDerived(moIds[1..$]);
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
295 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
296 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
297
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
298 // no initialized wrapper that matches the native object.
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
299 // use the base class wrapper
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
300 return this;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
301 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
302
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
303 QObject getObject(void* nativeObjId)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
304 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
305 QObject result;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
306
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
307 if (nativeObjId)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
308 {
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
309 result = cast(QObject)qtd_get_d_qobject(nativeObjId);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
310 if (!result)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
311 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
312 auto nId = nativeId;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
313 auto moId = qtd_QObject_metaObject(nativeObjId);
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
314 if (nId == moId)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
315 result = _createWrapper(nativeObjId);
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
316 else
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
317 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
318 // get native metaobjects for the entire derivation lattice
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
319 // up to, but not including, the current metaobject.
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
320 size_t moCount = 1;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
321
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
322 for (void* tmp = moId;;)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
323 {
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
324 tmp = qtd_QMetaObject_superClass(tmp);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
325 assert(tmp);
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
326 if (tmp == nId)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
327 break;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
328 moCount++;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
329 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
330
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
331 void*[] moIds = (cast(void**)alloca(moCount * (void*).sizeof))[0..moCount];
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
332
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
333 moIds[--moCount] = moId;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
334 while (moCount > 0)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
335 moIds[--moCount] = moId = qtd_QMetaObject_superClass(moId);
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
336
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
337 result = lookupDerived(moIds)._createWrapper(nativeObjId);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
338 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
339 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
340 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
341
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
342 return result;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
343 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
344
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
345 static void activate(QObject sender, QMetaObject m, int local_signal_index, void **argv)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
346 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
347 qtd_QMetaObject_activate_3(sender.__nativeId, m.nativeId, local_signal_index, argv);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
348 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
349
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
350 static void activate(QObject sender, QMetaObject m, int from_local_signal_index, int to_local_signal_index, void **argv)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
351 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
352 qtd_QMetaObject_activate_4(sender.__nativeId, m.nativeId, from_local_signal_index, to_local_signal_index, argv);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
353 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
354
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
355 static bool connect(const QObject sender, int signal_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
356 const QObject receiver, int method_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
357 int type = 0, int *types = null)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
358 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
359 return qtd_QMetaObject_connect(sender.__nativeId, signal_index, receiver.__nativeId, method_index, type, types);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
360 }
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
361
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
362 int indexOfMethod_Cpp(string method)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
363 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
364 return qtd_QMetaObject_indexOfMethod(nativeId, toStringz(method));
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
365 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
366
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
367 int methodCount()
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
368 {
364
a084e2df3776 Preparing for non-QObject meta-objects. Now meta-objects for static types can be uniformly accessed using meta!T
Max Samukha <maxter@maxter.com>
parents: 357
diff changeset
369 return qtd_QMetaObject_methodCount(nativeId);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
370 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
371
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
372 static void connectImpl(QObject sender, string signalString, QObject receiver, string methodString, int type)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
373 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
374 QMetaSignal[] signals;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
375 QMetaMethod[] methods;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
376 QMetaSignal signal;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
377 QMetaMethod method;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
378
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
379 if(indexOf(signalString, '(') > 0)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
380 signal = sender.metaObject.lookUpSignal(signalString);
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
381 else
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
382 signals = sender.metaObject.lookUpSignalOverloads(signalString); // parameters not specified. Looking for a match
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
383
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
384 if(indexOf(methodString, '(') > 0)
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
385 method = receiver.metaObject.lookUpMethod(methodString);
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
386 else
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
387 methods = receiver.metaObject.lookUpMethodOverloads(methodString); // parameters not specified. Looking for a match
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
388
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
389 if(!signal && !method)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
390 {
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
391 Top:
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
392 foreach(sig; signals)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
393 foreach(meth; methods)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
394 if(startsWith(sig.args, meth.args))
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
395 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
396 signal = sig;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
397 method = meth;
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
398 break Top;
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
399 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
400 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
401 else if (!signal)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
402 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
403 foreach(sig; signals)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
404 if(startsWith(sig.args, method.args))
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
405 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
406 signal = sig;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
407 break;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
408 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
409 }
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
410 else if (!method)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
411 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
412 foreach(meth; methods)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
413 if(startsWith(signal.args, meth.args))
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
414 {
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
415 method = meth;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
416 break;
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
417 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
418 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
419
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
420 bool success = false;
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
421
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
422 if(!signal && !method)
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
423 {
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
424 success = false;
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
425 }
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
426 else
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
427 {
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
428 int signalIndex = signal.indexOfMethod;
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
429 int methodIndex = method.indexOfMethod;
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
430
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
431 success = QMetaObject.connect(sender, signalIndex, receiver, methodIndex, type);
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
432 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
433
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
434 if(!success)
357
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
435 throw new QMetaException("QMetaObject: Signal " ~ signalString ~ " cannot be connected to slot " ~ methodString);
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
436 }
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
437 }
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
438
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
439 /**
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
440 */
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
441 mixin template Q_CLASSINFO(string name, string value)
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
442 {
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
443 mixin InnerAttribute!("Q_CLASSINFO", AttributeOptions.allowMultiple, name, value);
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
444 }
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
445
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
446 version (QtdUnittest)
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
447 {
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
448 unittest
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
449 {
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
450 static class Test : QObject
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
451 {
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
452 mixin Q_CLASSINFO!("author", "Sabrina Schweinsteiger");
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
453 mixin Q_CLASSINFO!("url", "http://doc.moosesoft.co.uk/1.0/");
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
454
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
455 mixin Q_OBJECT;
9784459f0750 An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Max Samukha <maxter@spambox.com>
parents: 350
diff changeset
456 }
322
7c2cf27391c4 A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
eldar_ins@eldar-laptop
parents: 288
diff changeset
457 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
458 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
459
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
460 extern(C) void qtd_QMetaObject_activate_3(void* sender, void* m, int local_signal_index, void **argv);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
461 extern(C) void qtd_QMetaObject_activate_4(void *sender, void* m, int from_local_signal_index, int to_local_signal_index, void **argv);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
462 extern(C) bool qtd_QMetaObject_connect(const void* sender, int signal_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
463 const void* receiver, int method_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
464 int type, int *types);
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
465
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
466 extern(C) int qtd_QMetaObject_indexOfMethod(void *nativeId, const(char) *method);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
467 extern(C) int qtd_QMetaObject_methodCount(void *nativeId);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
468
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
469 extern(C) void* qtd_QMetaObject_superClass(void* nativeId);