annotate d2/qt/core/QMetaObject.d @ 369:6e1857c521af

removed unnecessary std.stdio
author Max Samukha <maxter@maxter.com>
date Mon, 28 Jun 2010 22:02:08 +0300
parents 185df9220ea7
children a032df77b6ab
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 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
8 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
9 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
10 qtd.MOC,
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 365
diff changeset
11 qtd.String,
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
12 std.typetuple,
367
f69341b40588 Removed dependencies on qtd.Traits
Max Samukha <maxter@spambox.com>
parents: 366
diff changeset
13 std.traits,
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
14 std.c.stdlib;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
15
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 365
diff changeset
16 import std.string : indexOf;
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
17 import std.algorithm : filter;
366
da4235301224 Fixed VoidFunc. Updated to dmd.2.047.
Max Samukha <maxter@spambox.com>
parents: 365
diff changeset
18
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
19 class QMetaArgument : MetaBase
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
20 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
21 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
22
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
23 class QMetaMethod : MetaBase
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
24 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
25 alias typeof(this) This;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
26
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
27 // QMetaArgument[] arguments;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
28 string signature;
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
29 int index;
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
30
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
31 this(string signature, int index)
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
32 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
33 this.signature = signature;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
34 this.index = index;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
35
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
36 int openBracket = indexOf(signature, '(');
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
37 name = signature[0..openBracket];
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
38 }
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
39
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
40 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
41 {
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
42 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
43 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
44 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
45 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
46 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
47 }
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
48
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
49 static M create(alias method, M : This)(uint index)
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
50 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
51 alias ParameterTypeTuple!method Args;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
52 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
53 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
54 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
55
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
56 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
57 */
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
58 class QMetaSignal : QMetaMethod
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
59 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
60 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
61
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
62 this(string signature, int indexOfMethod)
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
63 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
64 super(signature, indexOfMethod);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
65 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
66
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
67 static This create(alias method)(uint index)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
68 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
69 return typeof(super).create!(method, This)(index);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
70 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
71 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
72
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
73 class QMetaSlot : QMetaMethod
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
74 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
75 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
76
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
77 this(string signature, int indexOfMethod)
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
78 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
79 super(signature, indexOfMethod);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
80 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
81
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
82 static This create(alias method)(uint index)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
83 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
84 return typeof(super).create!(method, This)(index);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
85 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
86 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
87
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
88 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
89 Base class for QtD meta-classes.
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
90 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
91 abstract class QtdMetaClass : MetaClass
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
92 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
93 private:
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
94 void* nativeId_;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
95
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
96 public:
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
97
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
98 this() {}
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
99
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
100 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
101 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
102 @property
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
103 void* nativeId()
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
104 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
105 return nativeId_;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
106 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
107
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
108 void construct(T)()
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
109 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
110 super.construct!T();
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
111 nativeId_ = T.qtd_nativeStaticMetaObject();
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
112 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
113 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
114
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
115 struct QMetaObjectNative
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
116 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
117 QMetaObjectNative *superdata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
118 immutable(char) *stringdata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
119 const(uint) *data;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
120 void *extradata;
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
121 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
122
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
123
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
124 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
125 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
126 final class QMetaObject : QtdMetaClass
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
127 {
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
128 alias typeof(this) This;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
129
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
130 private QObject function(void* nativeId) _createWrapper;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
131
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
132 this() {}
365
958e8b9a89bd Changeset a084e2df3776 is broken. Backing out.
Max Samukha <maxter@spambox.com>
parents: 364
diff changeset
133
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
134 enum Call
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
135 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
136 InvokeMetaMethod,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
137 ReadProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
138 WriteProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
139 ResetProperty,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
140 QueryPropertyDesignable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
141 QueryPropertyScriptable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
142 QueryPropertyStored,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
143 QueryPropertyEditable,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
144 QueryPropertyUser,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
145 CreateInstance
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
146 }
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
147
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
148 alias createImpl!This create;
365
958e8b9a89bd Changeset a084e2df3776 is broken. Backing out.
Max Samukha <maxter@spambox.com>
parents: 364
diff changeset
149
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
150 void construct(T : QObject)()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
151 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
152 super.construct!T();
350
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 (isQtType!T)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
155 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
156 static if (is(T.ConcreteType))
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
157 alias T.ConcreteType Concrete;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
158 else
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
159 alias T Concrete;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
160
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
161 _createWrapper = function QObject(void* nativeId) {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
162 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
163 T.__createEntity(nativeId, cast(void*)obj);
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
164 return obj;
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
165 };
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
166
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
167 T._populateMetaInfo(this);
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
168 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
169 // 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
170 else static if (is(typeof(T.methods)))
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
171 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
172 alias BaseClassesTuple!(T)[0] Base;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
173 int index = meta!(Base).methodCount;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
174
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
175 static if (T.signals.length)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
176 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
177 foreach (signal; T.signals)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
178 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
179 addMethod(QMetaSignal.create!signal(index));
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
180 index++;
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
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
184 static if (T.slots.length)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
185 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
186 foreach (slot; T.slots)
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
187 {
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
188 addMethod(QMetaSlot.create!slot(index));
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
189 index++;
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 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
192 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
193 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
194
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
195 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
196 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
197 @property
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
198 override This next()
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
199 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
200 return static_cast!This(super.next);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
201 }
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
202
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
203 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
204 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
205 @property
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
206 override This firstDerived()
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
207 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
208 return static_cast!This(super.firstDerived);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
209 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
210
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
211 void addMethod(QMetaMethod method)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
212 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
213 members_ ~= method;
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
214 }
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
215
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
216 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
217 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
218 @property
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
219 override This base()
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
220 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
221 return super.base;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
222 }
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
223
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
224 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
225 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
226 @property
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
227 QMetaObjectNative* nativeId()
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
228 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
229 return cast(QMetaObjectNative*)super.nativeId;
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
230 }
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
231
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
232 M lookUpMethod(M : QMetaMethod = QMetaMethod)(string signature)
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
233 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
234 foreach (method; allMembers)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
235 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
236 if (auto m = cast(M)method)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
237 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
238 if (m.signature == signature)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
239 return m;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
240 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
241 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
242 return null;
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 }
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
244
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
245 // TODO: probably make this return a filtering range.
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
246 auto lookUpMethodOverloads(M : QMetaMethod = QMetaMethod)(string name)
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 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
248 M[] methods;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
249 foreach (m; allMembers)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
250 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
251 if (auto method = cast(M)m)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
252 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
253 if (method.name == name)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
254 methods ~= method;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
255 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
256 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
257 return methods;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
258 }
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
259
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
260 private QMetaObject lookUpDerived(void*[] moIds)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
261 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
262 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
263
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
264 for (auto mo = firstDerived; mo !is null; mo = mo.next)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
265 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
266 if (mo.nativeId == moIds[0])
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
267 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
268 if (moIds.length == 1) // exact match found
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
269 return mo;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
270 else // look deeper
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
271 return mo.lookUpDerived(moIds[1..$]);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
272 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
273 }
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
274
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
275 // no initialized wrapper that matches the native object.
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
276 // use the base class wrapper
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
277 return this;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
278 }
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
279
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
280 QObject getObject(void* nativeObjId)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
281 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
282 QObject result;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
283
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
284 if (nativeObjId)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
285 {
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 result = cast(QObject)qtd_get_d_qobject(nativeObjId);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
287 if (!result)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
288 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
289 auto moId = qtd_QObject_metaObject(nativeObjId);
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
290 auto nId = nativeId;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
291 if (nId == moId)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
292 result = _createWrapper(nativeObjId);
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
293 else
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
294 {
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
295 // get native metaobjects for the entire derivation lattice
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
296 // up to, but not including, the current metaobject.
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
297 size_t moCount = 1;
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
298
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
299 for (void* tmp = moId;;)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
300 {
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
301 tmp = qtd_QMetaObject_superClass(tmp);
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
302 assert(tmp);
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
303 if (tmp == nId)
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
304 break;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
305 moCount++;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
306 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
307
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
308 void*[] moIds = (cast(void**)alloca(moCount * (void*).sizeof))[0..moCount];
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
309
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
310 moIds[--moCount] = moId;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
311 while (moCount > 0)
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
312 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
313
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
314 result = lookUpDerived(moIds)._createWrapper(nativeObjId);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
315 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
316 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
317 }
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
318
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
319 return result;
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
320 }
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
321
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
322 static void activate(QObject sender, QMetaObject m, int local_signal_index, void **argv)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
323 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
324 qtd_QMetaObject_activate_3(sender.__nativeId, m.nativeId, local_signal_index, argv);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
325 }
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
326
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
327 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
328 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
329 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
330 }
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
331
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
332 static bool connect(const QObject sender, int signal_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
333 const QObject receiver, int method_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
334 int type = 0, int *types = null)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
335 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
336 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
337 }
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
338
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
339 int indexOfMethod_Cpp(string method)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
340 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
341 return qtd_QMetaObject_indexOfMethod(nativeId, toStringz(method));
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
342 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
343
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
344 int methodCount()
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
345 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
346 return qtd_QMetaObject_methodCount(nativeId);
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
347 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
348
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
349 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
350 {
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
351 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
352 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
353 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
354 QMetaMethod method;
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
355
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
356 if(indexOf(signalString, '(') > 0)
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
357 signal = sender.metaObject.lookUpMethod!QMetaSignal(signalString);
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
358 else
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
359 signals = sender.metaObject.lookUpMethodOverloads!QMetaSignal(signalString); // parameters not specified. Looking for a match
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
360
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
361 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
362 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
363 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
364 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
365
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
366 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
367 {
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
368 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
369 foreach(sig; signals)
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
370 {
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
371 foreach(meth; methods)
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
372 {
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 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
374 {
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 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
376 method = meth;
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
377 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
378 }
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
379 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
380 }
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
381 }
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 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
383 {
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
384 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
385 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
386 {
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 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
388 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
389 }
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 }
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
391 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
392 {
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(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
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 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
397 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
398 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
399 }
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
400
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
401 bool success = false;
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
402
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
403 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
404 {
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
405 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
406 }
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
407 else
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
408 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
409 int signalIndex = signal.index;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
410 int methodIndex = method.index;
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
411
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
412 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
413 }
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
414
323
7a3c43424dca make all examples compile with new signals/slots
eldar_ins@eldar-laptop
parents: 322
diff changeset
415 if(!success)
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
416 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
417 throw new MetaException("QMetaObject: Failed to connect signal "
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
418 ~ sender.classinfo.name ~ "." ~ signalString ~ " to slot "
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
419 ~ receiver.classinfo.name ~ "." ~ methodString ~ ". Make sure the signal and slot exist and match.");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
420 }
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
421 }
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
422 }
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
423
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
424 /**
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
425 */
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
426 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
427 {
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
428 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
429 }
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
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
431 /**
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
432 */
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
433 mixin template Q_PROPERTY(T, string params)
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
434 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
435 static assert(false, "not implemented");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
436 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
437
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
438 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
439 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
440 // COMPILER BUG: cannot put this inside the unittest block as static class.
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
441 class QMetaObject_A : QObject
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
442 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
443 mixin Q_CLASSINFO!("author", "Sabrina Schweinsteiger");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
444 mixin Q_CLASSINFO!("url", "http://doc.moosesoft.co.uk/1.0/");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
445
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
446 static int slot1Called;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
447
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
448 final
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
449 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
450 void signal_signal1();
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
451 void signal_signal2(int);
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
452 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
453
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
454
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
455 void slot_slot1()
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
456 {
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
457 slot1Called++;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
458 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
459
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
460 mixin Q_OBJECT;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
461 }
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
462
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
463 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
464 {
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
465 scope a = new QMetaObject_A;
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
466 QObject.connect(a, "signal1", a, "slot1");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
467 a.signal1();
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
468 assert(QMetaObject_A.slot1Called == 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
469
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
470 QObject.connect(a, "signal2", a, "slot1");
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
471 a.signal2(42);
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
472 assert(QMetaObject_A.slot1Called == 2);
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
473 }
368
185df9220ea7 Fixed startsWith. Implemented meta-object members as ranges. Freed QMetaObject from stuff that belongs to MetaClass
Max Samukha <maxter@maxter.com>
parents: 367
diff changeset
474 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents:
diff changeset
475
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
476 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
477 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
478 extern(C) bool qtd_QMetaObject_connect(const void* sender, int signal_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
479 const void* receiver, int method_index,
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
480 int type, int *types);
350
31520b2c0b3c Removed dependency on parent trait and stringof
Max Samukha <maxter@spambox.com>
parents: 344
diff changeset
481
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
482 extern(C) int qtd_QMetaObject_indexOfMethod(void *nativeId, const(char) *method);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
483 extern(C) int qtd_QMetaObject_methodCount(void *nativeId);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
484
337
5896535a03cd moved enums back to classes
maxter <spambox@d-coding.com>
parents: 336
diff changeset
485 extern(C) void* qtd_QMetaObject_superClass(void* nativeId);