comparison generator/typesystem_core-java.java @ 372:a032df77b6ab

Simple debug helper. Unittests. Meta-object for polymorphic non-QObjects
author Max Samukha <maxter@spambox.com>
date Thu, 08 Jul 2010 17:19:05 +0300
parents 185df9220ea7
children e67ce7c21758
comparison
equal deleted inserted replaced
370:7fd4b69378bf 372:a032df77b6ab
43 43
44 import qt.*; 44 import qt.*;
45 import qt.core.*; 45 import qt.core.*;
46 46
47 class QObject___ extends QObject { 47 class QObject___ extends QObject {
48 48
49 alias QMetaObject Meta; 49 alias QMetaObject Meta;
50 50
51 /* TODO: test whether the linked list is really a better solution 51 /* TODO: test whether the linked list is really a better solution
52 public bool __stackAllocated = false; 52 public bool __stackAllocated = false;
53 53
54 new(size_t size, void* p = null) 54 new(size_t size, void* p = null)
55 { 55 {
56 if (!p) 56 if (!p)
57 { 57 {
58 p = malloc(size); 58 p = malloc(size);
72 GC.removeRange(p); 72 GC.removeRange(p);
73 } 73 }
74 } 74 }
75 } 75 }
76 */ 76 */
77 77
78 private 78 /*
79 {
80 static QObject __root;
81 QObject __next;
82 QObject __prev;
83 }
84 /*
85 override void onSignalHandlerCreated(ref SignalHandler sh) 79 override void onSignalHandlerCreated(ref SignalHandler sh)
86 { 80 {
87 sh.signalEvent = &onSignalEvent; 81 sh.signalEvent = &onSignalEvent;
88 } 82 }
89 83
90 private void onSignalEvent(int signalId, SignalEventId event) 84 private void onSignalEvent(int signalId, SignalEventId event)
91 { 85 {
92 stringz signature; 86 stringz signature;
93 signalSignature(signalId, signature); 87 signalSignature(signalId, signature);
94 if (signature) 88 if (signature)
95 { 89 {
96 switch (event) 90 switch (event)
97 { 91 {
98 case SignalEventId.firstSlotConnected: 92 case SignalEventId.firstSlotConnected:
105 assert (false); 99 assert (false);
106 } 100 }
107 } 101 }
108 } 102 }
109 */ 103 */
110 ~this() 104
111 {
112 if (__prev)
113 __prev.__next = __next;
114 else
115 __root = __next;
116
117 if (__next)
118 __next.__prev = __prev;
119 }
120
121 /** 105 /**
122 */ 106 */
123 T findChild(T : QObject = QObject)(string name = null) 107 T findChild(T : QObject = QObject)(string name = null)
124 { 108 {
125 foreach (obj; children) 109 foreach (obj; children)
126 { 110 {
127 auto tmp = cast(T)obj; 111 auto tmp = cast(T)obj;
128 if (tmp && (!name.length || tmp.objectName == name)) 112 if (tmp && (!name.length || tmp.objectName == name))
129 return tmp; 113 return tmp;
130 114
131 tmp = obj.findChild!(T)(name); 115 tmp = obj.findChild!(T)(name);
132 if (tmp) 116 if (tmp)
133 return tmp; 117 return tmp;
134 } 118 }
135 119
136 return null; 120 return null;
137 } 121 }
138 122
139 /** 123 /**
140 */ 124 */
141 T[] findChildren(T : QObject = QObject)(string name = null) 125 T[] findChildren(T : QObject = QObject)(string name = null)
142 { 126 {
143 T[] result; 127 T[] result;
144 128
145 void find(QObject[] objects) 129 void find(QObject[] objects)
146 { 130 {
147 foreach (obj; objects) 131 foreach (obj; objects)
148 { 132 {
149 auto tmp = cast(T)obj; 133 auto tmp = cast(T)obj;
150 if (tmp && (!name.length || tmp.objectName == name)) 134 if (tmp && (!name.length || tmp.objectName == name))
151 result ~= tmp; 135 result ~= tmp;
152 find(obj.children); 136 find(obj.children);
153 } 137 }
154 } 138 }
155 139
156 find(children); 140 find(children);
157 return result; 141 return result;
158 } 142 }
159 143
160 static void connect(QObject sender, string signal, QObject receiver, string method, int type = 0) 144 static void connect(QObject sender, string signal, QObject receiver, string method, int type = 0)
161 { 145 {
162 QMetaObject.connectImpl(sender, signal, receiver, method, type); 146 QMetaObject.connectImpl(sender, signal, receiver, method, type);
163 } 147 }
164 }// class 148 }// class