annotate generator/typesystem_core-java.java @ 288:f9559a957be9 signals

new signals and slots implementation
author eldar
date Sun, 08 Nov 2009 19:28:01 +0000
parents 073b9153ed8a
children 7c2cf27391c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /****************************************************************************
e78566595089 initial import
mandel
parents:
diff changeset
2 **
e78566595089 initial import
mandel
parents:
diff changeset
3 ** Copyright (C) 1992-2008 Nokia. All rights reserved.
e78566595089 initial import
mandel
parents:
diff changeset
4 **
e78566595089 initial import
mandel
parents:
diff changeset
5 ** This file is part of Qt Jambi.
e78566595089 initial import
mandel
parents:
diff changeset
6 **
e78566595089 initial import
mandel
parents:
diff changeset
7 ** * Commercial Usage
e78566595089 initial import
mandel
parents:
diff changeset
8 * Licensees holding valid Qt Commercial licenses may use this file in
e78566595089 initial import
mandel
parents:
diff changeset
9 * accordance with the Qt Commercial License Agreement provided with the
e78566595089 initial import
mandel
parents:
diff changeset
10 * Software or, alternatively, in accordance with the terms contained in
e78566595089 initial import
mandel
parents:
diff changeset
11 * a written agreement between you and Nokia.
e78566595089 initial import
mandel
parents:
diff changeset
12 *
e78566595089 initial import
mandel
parents:
diff changeset
13 *
e78566595089 initial import
mandel
parents:
diff changeset
14 * GNU General Public License Usage
e78566595089 initial import
mandel
parents:
diff changeset
15 * Alternatively, this file may be used under the terms of the GNU
e78566595089 initial import
mandel
parents:
diff changeset
16 * General Public License versions 2.0 or 3.0 as published by the Free
e78566595089 initial import
mandel
parents:
diff changeset
17 * Software Foundation and appearing in the file LICENSE.GPL included in
e78566595089 initial import
mandel
parents:
diff changeset
18 * the packaging of this file. Please review the following information
e78566595089 initial import
mandel
parents:
diff changeset
19 * to ensure GNU General Public Licensing requirements will be met:
e78566595089 initial import
mandel
parents:
diff changeset
20 * http://www.fsf.org/licensing/licenses/info/GPLv2.html and
e78566595089 initial import
mandel
parents:
diff changeset
21 * http://www.gnu.org/copyleft/gpl.html. In addition, as a special
e78566595089 initial import
mandel
parents:
diff changeset
22 * exception, Nokia gives you certain additional rights. These rights
e78566595089 initial import
mandel
parents:
diff changeset
23 * are described in the Nokia Qt GPL Exception version 1.2, included in
e78566595089 initial import
mandel
parents:
diff changeset
24 * the file GPL_EXCEPTION.txt in this package.
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
25 *
1
e78566595089 initial import
mandel
parents:
diff changeset
26 * Qt for Windows(R) Licensees
e78566595089 initial import
mandel
parents:
diff changeset
27 * As a special exception, Nokia, as the sole copyright holder for Qt
e78566595089 initial import
mandel
parents:
diff changeset
28 * Designer, grants users of the Qt/Eclipse Integration plug-in the
e78566595089 initial import
mandel
parents:
diff changeset
29 * right for the Qt/Eclipse Integration to link to functionality
e78566595089 initial import
mandel
parents:
diff changeset
30 * provided by Qt Designer and its related libraries.
e78566595089 initial import
mandel
parents:
diff changeset
31 *
e78566595089 initial import
mandel
parents:
diff changeset
32 *
e78566595089 initial import
mandel
parents:
diff changeset
33 * If you are unsure which license is appropriate for your use, please
e78566595089 initial import
mandel
parents:
diff changeset
34 * contact the sales department at qt-sales@nokia.com.
e78566595089 initial import
mandel
parents:
diff changeset
35
e78566595089 initial import
mandel
parents:
diff changeset
36 **
e78566595089 initial import
mandel
parents:
diff changeset
37 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
e78566595089 initial import
mandel
parents:
diff changeset
38 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
e78566595089 initial import
mandel
parents:
diff changeset
39 **
e78566595089 initial import
mandel
parents:
diff changeset
40 ****************************************************************************/
e78566595089 initial import
mandel
parents:
diff changeset
41
e78566595089 initial import
mandel
parents:
diff changeset
42 package generator;
e78566595089 initial import
mandel
parents:
diff changeset
43
e78566595089 initial import
mandel
parents:
diff changeset
44 import qt.*;
e78566595089 initial import
mandel
parents:
diff changeset
45 import qt.core.*;
e78566595089 initial import
mandel
parents:
diff changeset
46
e78566595089 initial import
mandel
parents:
diff changeset
47 class QObject___ extends QObject {
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
48
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
49 /* TODO: test whether the linked list is really a better solution
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
50 public bool __stackAllocated = false;
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
51
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
52 new(size_t size, void* p = null)
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
53 {
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
54 if (!p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
55 {
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
56 p = malloc(size);
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
57 if (!p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
58 assert(false, "Out of memory");
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
59 GC.addRange(p, size);
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
60 }
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
61 return p;
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
62 }
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
63
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
64 delete(void* p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
65 {
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
66 if(p)
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
67 {
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
68 if (!(cast(typeof(this))p).__stackAllocated) {
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
69 free(p);
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
70 GC.removeRange(p);
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
71 }
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
72 }
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
73 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
74 */
1
e78566595089 initial import
mandel
parents:
diff changeset
75
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
76 private
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
77 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
78 static QObject __root;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
79 QObject __next;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
80 QObject __prev;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
81 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
82 /*
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
83 override void onSignalHandlerCreated(ref SignalHandler sh)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
84 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
85 sh.signalEvent = &onSignalEvent;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
86 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
87
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
88 private void onSignalEvent(int signalId, SignalEventId event)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
89 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
90 stringz signature;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
91 signalSignature(signalId, signature);
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
92 if (signature)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
93 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
94 switch (event)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
95 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
96 case SignalEventId.firstSlotConnected:
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
97 qtd_connect(__nativeId, signature, signalId, cast(bool)(__flags_ & QtdObjectFlags.dynamicEntity));
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
98 break;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
99 case SignalEventId.lastSlotDisconnected:
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
100 qtd_disconnect(__nativeId, signature, signalId, cast(bool)(__flags_ & QtdObjectFlags.dynamicEntity));
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
101 break;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
102 default:
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
103 assert (false);
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
104 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
105 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
106 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
107 */
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
108 ~this()
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
109 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
110 if (__prev)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
111 __prev.__next = __next;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
112 else
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
113 __root = __next;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
114
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
115 if (__next)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
116 __next.__prev = __prev;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
117 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
118
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
119 /**
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
120 */
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
121 T findChild(T : QObject = QObject)(string name = null)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
122 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
123 foreach (obj; children)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
124 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
125 auto tmp = cast(T)obj;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
126 if (tmp && (!name.length || tmp.objectName == name))
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
127 return tmp;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
128
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
129 tmp = obj.findChild!(T)(name);
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
130 if (tmp)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
131 return tmp;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
132 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
133
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
134 return null;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
135 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
136
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
137 /**
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
138 */
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
139 T[] findChildren(T : QObject = QObject)(string name = null)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
140 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
141 T[] result;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
142
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
143 void find(QObject[] objects)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
144 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
145 foreach (obj; objects)
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
146 {
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
147 auto tmp = cast(T)obj;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
148 if (tmp && (!name.length || tmp.objectName == name))
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
149 result ~= tmp;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
150 find(obj.children);
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
151 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
152 }
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
153
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
154 find(children);
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
155 return result;
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
156 }
288
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
157
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
158 static void connect(QObject sender, string signal, QObject receiver, string method)
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
159 {
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
160 int signalIndex = sender.metaObject.lookUpSignal(signal);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
161 int methodIndex = receiver.metaObject.lookUpMethod(method);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
162 QMetaObject.connect(sender, signalIndex, receiver, methodIndex);
f9559a957be9 new signals and slots implementation
eldar
parents: 253
diff changeset
163 }
1
e78566595089 initial import
mandel
parents:
diff changeset
164 }// class
e78566595089 initial import
mandel
parents:
diff changeset
165
e78566595089 initial import
mandel
parents:
diff changeset
166 abstract class QAbstractItemModel___ extends QAbstractItemModel {
e78566595089 initial import
mandel
parents:
diff changeset
167 /* private native boolean setData_native(long id, int row, int col, Object value, int role);
e78566595089 initial import
mandel
parents:
diff changeset
168
e78566595089 initial import
mandel
parents:
diff changeset
169 public final boolean setData(int row, int col, Object value) {
e78566595089 initial import
mandel
parents:
diff changeset
170 return setData_native(nativeId(), row, col, value, qt.core.Qt.ItemDataRole.DisplayRole);
e78566595089 initial import
mandel
parents:
diff changeset
171 }
e78566595089 initial import
mandel
parents:
diff changeset
172
e78566595089 initial import
mandel
parents:
diff changeset
173 public final boolean setData(int row, int col, Object value, int role) {
e78566595089 initial import
mandel
parents:
diff changeset
174 return setData_native(nativeId(), row, col, value, role);
e78566595089 initial import
mandel
parents:
diff changeset
175 }
e78566595089 initial import
mandel
parents:
diff changeset
176
e78566595089 initial import
mandel
parents:
diff changeset
177 private native Object data_native(long id, int row, int col, int role);
e78566595089 initial import
mandel
parents:
diff changeset
178
e78566595089 initial import
mandel
parents:
diff changeset
179 public final Object data(int row, int col, int role) {
e78566595089 initial import
mandel
parents:
diff changeset
180 return data_native(nativeId(), row, col, role);
e78566595089 initial import
mandel
parents:
diff changeset
181 }
e78566595089 initial import
mandel
parents:
diff changeset
182
e78566595089 initial import
mandel
parents:
diff changeset
183 public final Object data(int row, int col) {
e78566595089 initial import
mandel
parents:
diff changeset
184 return data_native(nativeId(), row, col, Qt.ItemDataRole.DisplayRole);
e78566595089 initial import
mandel
parents:
diff changeset
185 }*/
e78566595089 initial import
mandel
parents:
diff changeset
186 }// class
e78566595089 initial import
mandel
parents:
diff changeset
187
e78566595089 initial import
mandel
parents:
diff changeset
188 class QTimer___ extends QTimer {
e78566595089 initial import
mandel
parents:
diff changeset
189 static private class QSingleShotTimer extends QObject {
e78566595089 initial import
mandel
parents:
diff changeset
190 private int timerId = -1;
e78566595089 initial import
mandel
parents:
diff changeset
191 public Signal0 timeout = new Signal0();
e78566595089 initial import
mandel
parents:
diff changeset
192
e78566595089 initial import
mandel
parents:
diff changeset
193 public QSingleShotTimer(int msec, QObject obj, String method) {
e78566595089 initial import
mandel
parents:
diff changeset
194 super(obj);
e78566595089 initial import
mandel
parents:
diff changeset
195 timeout.connect(obj, method);
e78566595089 initial import
mandel
parents:
diff changeset
196 timerId = startTimer(msec);
e78566595089 initial import
mandel
parents:
diff changeset
197 }
e78566595089 initial import
mandel
parents:
diff changeset
198
e78566595089 initial import
mandel
parents:
diff changeset
199 protected void disposed() {
e78566595089 initial import
mandel
parents:
diff changeset
200 if (timerId > 0)
e78566595089 initial import
mandel
parents:
diff changeset
201 killTimer(timerId);
e78566595089 initial import
mandel
parents:
diff changeset
202 super.disposed();
e78566595089 initial import
mandel
parents:
diff changeset
203 }
e78566595089 initial import
mandel
parents:
diff changeset
204
e78566595089 initial import
mandel
parents:
diff changeset
205 protected void timerEvent(QTimerEvent e) {
e78566595089 initial import
mandel
parents:
diff changeset
206 if (timerId > 0)
e78566595089 initial import
mandel
parents:
diff changeset
207 killTimer(timerId);
e78566595089 initial import
mandel
parents:
diff changeset
208 timerId = -1;
e78566595089 initial import
mandel
parents:
diff changeset
209 timeout.emit();
e78566595089 initial import
mandel
parents:
diff changeset
210 disposeLater();
e78566595089 initial import
mandel
parents:
diff changeset
211 }
e78566595089 initial import
mandel
parents:
diff changeset
212 }
e78566595089 initial import
mandel
parents:
diff changeset
213
e78566595089 initial import
mandel
parents:
diff changeset
214 public static void singleShot(int msec, QObject obj, String method) {
e78566595089 initial import
mandel
parents:
diff changeset
215 new QSingleShotTimer(msec, obj, method);
e78566595089 initial import
mandel
parents:
diff changeset
216 }
e78566595089 initial import
mandel
parents:
diff changeset
217 }// class
e78566595089 initial import
mandel
parents:
diff changeset
218
e78566595089 initial import
mandel
parents:
diff changeset
219 class QCoreApplication___ extends QCoreApplication {
e78566595089 initial import
mandel
parents:
diff changeset
220
e78566595089 initial import
mandel
parents:
diff changeset
221 protected static QCoreApplication m_instance = null;
e78566595089 initial import
mandel
parents:
diff changeset
222
188
7dd099050621 initial commit for D2 support
eldar
parents: 185
diff changeset
223 this(string[] args)
1
e78566595089 initial import
mandel
parents:
diff changeset
224 {
e78566595089 initial import
mandel
parents:
diff changeset
225 // if (m_instance != null)
e78566595089 initial import
mandel
parents:
diff changeset
226 // throw new RuntimeException("QCoreApplication can only be initialized once");
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
227
1
e78566595089 initial import
mandel
parents:
diff changeset
228 argc = args.length;
e78566595089 initial import
mandel
parents:
diff changeset
229 argv = toStringzArray(args);
e78566595089 initial import
mandel
parents:
diff changeset
230 this(&argc, argv);
e78566595089 initial import
mandel
parents:
diff changeset
231
e78566595089 initial import
mandel
parents:
diff changeset
232 // m_instance.aboutToQuit.connect(m_instance, "disposeOfMyself()");
e78566595089 initial import
mandel
parents:
diff changeset
233 }
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
234
1
e78566595089 initial import
mandel
parents:
diff changeset
235 private int argc;
e78566595089 initial import
mandel
parents:
diff changeset
236 private char **argv;
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
237 /*
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
238 public static string translate(string context, string key, string disambiguation, QCoreApplication_Encoding encoding) {
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
239 string res;
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
240 qtd_QCoreApplication_translate_nativepointerchar_nativepointerchar_nativepointerchar_Encoding(&res, toStringz(context), toStringz(key), toStringz(disambiguation), encoding);
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
241 return res;
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
242 }
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
243
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
244 public static string translate(string context, string key, string disambiguation, QCoreApplication_Encoding encoding, int n) {
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
245 string res;
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
246 qtd_QCoreApplication_translate_nativepointerchar_nativepointerchar_nativepointerchar_Encoding_int(&res, toStringz(context), toStringz(key), toStringz(disambiguation), encoding, n);
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
247 return res;
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
248 }
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
249 */
1
e78566595089 initial import
mandel
parents:
diff changeset
250 }// class
e78566595089 initial import
mandel
parents:
diff changeset
251
e78566595089 initial import
mandel
parents:
diff changeset
252 class QTranslator___ extends QTranslator {
e78566595089 initial import
mandel
parents:
diff changeset
253 public final bool load(ubyte[] data) {
e78566595089 initial import
mandel
parents:
diff changeset
254 return load(data.ptr, data.length);
e78566595089 initial import
mandel
parents:
diff changeset
255 }
e78566595089 initial import
mandel
parents:
diff changeset
256 }// class
e78566595089 initial import
mandel
parents:
diff changeset
257
e78566595089 initial import
mandel
parents:
diff changeset
258 class QProcess___ extends QProcess {
e78566595089 initial import
mandel
parents:
diff changeset
259
e78566595089 initial import
mandel
parents:
diff changeset
260 public static class DetachedProcessInfo {
e78566595089 initial import
mandel
parents:
diff changeset
261 public DetachedProcessInfo(boolean success, long pid) {
e78566595089 initial import
mandel
parents:
diff changeset
262 this.success = success;
e78566595089 initial import
mandel
parents:
diff changeset
263 this.pid = pid;
e78566595089 initial import
mandel
parents:
diff changeset
264 }
e78566595089 initial import
mandel
parents:
diff changeset
265
e78566595089 initial import
mandel
parents:
diff changeset
266 public boolean success;
e78566595089 initial import
mandel
parents:
diff changeset
267 public long pid;
e78566595089 initial import
mandel
parents:
diff changeset
268 }
e78566595089 initial import
mandel
parents:
diff changeset
269
e78566595089 initial import
mandel
parents:
diff changeset
270 public static DetachedProcessInfo startDetached(String program, java.util.List<String> arguments, String workingDirectory) {
e78566595089 initial import
mandel
parents:
diff changeset
271 QNativePointer pid = new QNativePointer(QNativePointer.Type.Long);
e78566595089 initial import
mandel
parents:
diff changeset
272 boolean success = startDetached(program, arguments, workingDirectory, pid);
e78566595089 initial import
mandel
parents:
diff changeset
273 return new DetachedProcessInfo(success, pid.longValue());
e78566595089 initial import
mandel
parents:
diff changeset
274 }
e78566595089 initial import
mandel
parents:
diff changeset
275 }// class
e78566595089 initial import
mandel
parents:
diff changeset
276
e78566595089 initial import
mandel
parents:
diff changeset
277 class QDataStream___ extends QDataStream {
e78566595089 initial import
mandel
parents:
diff changeset
278
e78566595089 initial import
mandel
parents:
diff changeset
279 public final bool readBoolean() {
e78566595089 initial import
mandel
parents:
diff changeset
280 bool res;
e78566595089 initial import
mandel
parents:
diff changeset
281 operator_shift_right_boolean(&res);
e78566595089 initial import
mandel
parents:
diff changeset
282 return res;
e78566595089 initial import
mandel
parents:
diff changeset
283 }
e78566595089 initial import
mandel
parents:
diff changeset
284
e78566595089 initial import
mandel
parents:
diff changeset
285 public final byte readByte() {
e78566595089 initial import
mandel
parents:
diff changeset
286 byte res;
e78566595089 initial import
mandel
parents:
diff changeset
287 operator_shift_right_byte(&res);
e78566595089 initial import
mandel
parents:
diff changeset
288 return res;
e78566595089 initial import
mandel
parents:
diff changeset
289 }
e78566595089 initial import
mandel
parents:
diff changeset
290
e78566595089 initial import
mandel
parents:
diff changeset
291 public final short readShort() {
e78566595089 initial import
mandel
parents:
diff changeset
292 short res;
e78566595089 initial import
mandel
parents:
diff changeset
293 operator_shift_right_short(&res);
e78566595089 initial import
mandel
parents:
diff changeset
294 return res;
e78566595089 initial import
mandel
parents:
diff changeset
295 }
e78566595089 initial import
mandel
parents:
diff changeset
296
e78566595089 initial import
mandel
parents:
diff changeset
297 public final int readInt() {
e78566595089 initial import
mandel
parents:
diff changeset
298 int res;
e78566595089 initial import
mandel
parents:
diff changeset
299 operator_shift_right_int(&res);
e78566595089 initial import
mandel
parents:
diff changeset
300 return res;
e78566595089 initial import
mandel
parents:
diff changeset
301 }
e78566595089 initial import
mandel
parents:
diff changeset
302
e78566595089 initial import
mandel
parents:
diff changeset
303 public final long readLong() {
e78566595089 initial import
mandel
parents:
diff changeset
304 long res;
e78566595089 initial import
mandel
parents:
diff changeset
305 operator_shift_right_long(&res);
e78566595089 initial import
mandel
parents:
diff changeset
306 return res;
e78566595089 initial import
mandel
parents:
diff changeset
307 }
e78566595089 initial import
mandel
parents:
diff changeset
308
e78566595089 initial import
mandel
parents:
diff changeset
309 public final ushort readChar() {
e78566595089 initial import
mandel
parents:
diff changeset
310 ushort res;
e78566595089 initial import
mandel
parents:
diff changeset
311 operator_shift_right_char(&res);
e78566595089 initial import
mandel
parents:
diff changeset
312 return res;
e78566595089 initial import
mandel
parents:
diff changeset
313 }
e78566595089 initial import
mandel
parents:
diff changeset
314
e78566595089 initial import
mandel
parents:
diff changeset
315 public final float readFloat() {
e78566595089 initial import
mandel
parents:
diff changeset
316 float res;
e78566595089 initial import
mandel
parents:
diff changeset
317 operator_shift_right_float(&res);
e78566595089 initial import
mandel
parents:
diff changeset
318 return res;
e78566595089 initial import
mandel
parents:
diff changeset
319 }
e78566595089 initial import
mandel
parents:
diff changeset
320
e78566595089 initial import
mandel
parents:
diff changeset
321 public final double readDouble() {
e78566595089 initial import
mandel
parents:
diff changeset
322 double res;
e78566595089 initial import
mandel
parents:
diff changeset
323 operator_shift_right_double(&res);
e78566595089 initial import
mandel
parents:
diff changeset
324 return res;
e78566595089 initial import
mandel
parents:
diff changeset
325 }
e78566595089 initial import
mandel
parents:
diff changeset
326
e78566595089 initial import
mandel
parents:
diff changeset
327 public final QDataStream writeShort(short s) {
e78566595089 initial import
mandel
parents:
diff changeset
328 writeShort_char(s);
e78566595089 initial import
mandel
parents:
diff changeset
329 return this;
e78566595089 initial import
mandel
parents:
diff changeset
330 }
e78566595089 initial import
mandel
parents:
diff changeset
331 /*
e78566595089 initial import
mandel
parents:
diff changeset
332 private static extern(C) void qtd_QDataStream_readString_private(void* __this_nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
333
e78566595089 initial import
mandel
parents:
diff changeset
334 private native void writeString_private(long nativeId, String string);
e78566595089 initial import
mandel
parents:
diff changeset
335
e78566595089 initial import
mandel
parents:
diff changeset
336 public final String readString() {
e78566595089 initial import
mandel
parents:
diff changeset
337 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
338 throw new QNoNativeResourcesException("Function call on incomplete object of type: " + getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
339 return readString_private(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
340 }
e78566595089 initial import
mandel
parents:
diff changeset
341
e78566595089 initial import
mandel
parents:
diff changeset
342 public final void writeString(String string) {
e78566595089 initial import
mandel
parents:
diff changeset
343 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
344 throw new QNoNativeResourcesException("Function call on incomplete object of type: " + getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
345 writeString_private(nativeId(), string);
e78566595089 initial import
mandel
parents:
diff changeset
346 }
e78566595089 initial import
mandel
parents:
diff changeset
347
e78566595089 initial import
mandel
parents:
diff changeset
348 private native int writeBytes(long id, byte buffer[], int length);
e78566595089 initial import
mandel
parents:
diff changeset
349
e78566595089 initial import
mandel
parents:
diff changeset
350 private native int readBytes(long id, byte buffer[], int length);
e78566595089 initial import
mandel
parents:
diff changeset
351
e78566595089 initial import
mandel
parents:
diff changeset
352 public final int writeBytes(byte buffer[]) {
e78566595089 initial import
mandel
parents:
diff changeset
353 return writeBytes(buffer, buffer.length);
e78566595089 initial import
mandel
parents:
diff changeset
354 }
e78566595089 initial import
mandel
parents:
diff changeset
355
e78566595089 initial import
mandel
parents:
diff changeset
356 public final int writeBytes(byte buffer[], int length) {
e78566595089 initial import
mandel
parents:
diff changeset
357 return writeBytes(nativeId(), buffer, length);
e78566595089 initial import
mandel
parents:
diff changeset
358 }
e78566595089 initial import
mandel
parents:
diff changeset
359
e78566595089 initial import
mandel
parents:
diff changeset
360 public final int readBytes(byte buffer[]) {
e78566595089 initial import
mandel
parents:
diff changeset
361 return readBytes(buffer, buffer.length);
e78566595089 initial import
mandel
parents:
diff changeset
362 }
e78566595089 initial import
mandel
parents:
diff changeset
363
e78566595089 initial import
mandel
parents:
diff changeset
364 public final int readBytes(byte buffer[], int length) {
e78566595089 initial import
mandel
parents:
diff changeset
365 return readBytes(nativeId(), buffer, length);
e78566595089 initial import
mandel
parents:
diff changeset
366 }
e78566595089 initial import
mandel
parents:
diff changeset
367 */
e78566595089 initial import
mandel
parents:
diff changeset
368 }// class
e78566595089 initial import
mandel
parents:
diff changeset
369
e78566595089 initial import
mandel
parents:
diff changeset
370 class QTextStream___ extends QTextStream {
e78566595089 initial import
mandel
parents:
diff changeset
371 /* public final void setCodec(String codecName) {
e78566595089 initial import
mandel
parents:
diff changeset
372 setCodec(QNativePointer.createCharPointer(codecName));
e78566595089 initial import
mandel
parents:
diff changeset
373 if (codec() != __rcCodec)
e78566595089 initial import
mandel
parents:
diff changeset
374 __rcCodec = null;
e78566595089 initial import
mandel
parents:
diff changeset
375 }
e78566595089 initial import
mandel
parents:
diff changeset
376
e78566595089 initial import
mandel
parents:
diff changeset
377 private QNativePointer srb = new QNativePointer(QNativePointer.Type.Byte, 32) {
e78566595089 initial import
mandel
parents:
diff changeset
378 {
e78566595089 initial import
mandel
parents:
diff changeset
379 setVerificationEnabled(false);
e78566595089 initial import
mandel
parents:
diff changeset
380 }
e78566595089 initial import
mandel
parents:
diff changeset
381 };
e78566595089 initial import
mandel
parents:
diff changeset
382
e78566595089 initial import
mandel
parents:
diff changeset
383 public final byte readByte() {
e78566595089 initial import
mandel
parents:
diff changeset
384 operator_shift_right_byte(srb);
e78566595089 initial import
mandel
parents:
diff changeset
385 return srb.byteValue();
e78566595089 initial import
mandel
parents:
diff changeset
386 }
e78566595089 initial import
mandel
parents:
diff changeset
387
e78566595089 initial import
mandel
parents:
diff changeset
388 public final short readShort() {
e78566595089 initial import
mandel
parents:
diff changeset
389 operator_shift_right_short(srb);
e78566595089 initial import
mandel
parents:
diff changeset
390 return srb.shortValue();
e78566595089 initial import
mandel
parents:
diff changeset
391 }
e78566595089 initial import
mandel
parents:
diff changeset
392
e78566595089 initial import
mandel
parents:
diff changeset
393 public final int readInt() {
e78566595089 initial import
mandel
parents:
diff changeset
394 operator_shift_right_int(srb);
e78566595089 initial import
mandel
parents:
diff changeset
395 return srb.intValue();
e78566595089 initial import
mandel
parents:
diff changeset
396 }
e78566595089 initial import
mandel
parents:
diff changeset
397
e78566595089 initial import
mandel
parents:
diff changeset
398 public final long readLong() {
e78566595089 initial import
mandel
parents:
diff changeset
399 operator_shift_right_long(srb);
e78566595089 initial import
mandel
parents:
diff changeset
400 return srb.longValue();
e78566595089 initial import
mandel
parents:
diff changeset
401 }
e78566595089 initial import
mandel
parents:
diff changeset
402
e78566595089 initial import
mandel
parents:
diff changeset
403 public final float readFloat() {
e78566595089 initial import
mandel
parents:
diff changeset
404 operator_shift_right_float(srb);
e78566595089 initial import
mandel
parents:
diff changeset
405 return srb.floatValue();
e78566595089 initial import
mandel
parents:
diff changeset
406 }
e78566595089 initial import
mandel
parents:
diff changeset
407
e78566595089 initial import
mandel
parents:
diff changeset
408 public final double readDouble() {
e78566595089 initial import
mandel
parents:
diff changeset
409 operator_shift_right_double(srb);
e78566595089 initial import
mandel
parents:
diff changeset
410 return srb.doubleValue();
e78566595089 initial import
mandel
parents:
diff changeset
411 }
e78566595089 initial import
mandel
parents:
diff changeset
412
e78566595089 initial import
mandel
parents:
diff changeset
413 public final QTextStream writeShort(short s) {
e78566595089 initial import
mandel
parents:
diff changeset
414 writeShort_char((char) s);
e78566595089 initial import
mandel
parents:
diff changeset
415 return this;
e78566595089 initial import
mandel
parents:
diff changeset
416 }
e78566595089 initial import
mandel
parents:
diff changeset
417
e78566595089 initial import
mandel
parents:
diff changeset
418 public final QTextStream writeChar(char c) {
e78566595089 initial import
mandel
parents:
diff changeset
419 writeShort_char(c);
e78566595089 initial import
mandel
parents:
diff changeset
420 return this;
e78566595089 initial import
mandel
parents:
diff changeset
421 }
e78566595089 initial import
mandel
parents:
diff changeset
422
e78566595089 initial import
mandel
parents:
diff changeset
423 public final char readChar() {
e78566595089 initial import
mandel
parents:
diff changeset
424 operator_shift_right_short(srb);
e78566595089 initial import
mandel
parents:
diff changeset
425 return srb.charValue();
e78566595089 initial import
mandel
parents:
diff changeset
426 }
e78566595089 initial import
mandel
parents:
diff changeset
427
e78566595089 initial import
mandel
parents:
diff changeset
428 public final String readString() {
e78566595089 initial import
mandel
parents:
diff changeset
429 return readString_native(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
430 }
e78566595089 initial import
mandel
parents:
diff changeset
431
e78566595089 initial import
mandel
parents:
diff changeset
432 public final void writeString(String string) {
e78566595089 initial import
mandel
parents:
diff changeset
433 writeString_native(nativeId(), string);
e78566595089 initial import
mandel
parents:
diff changeset
434 }
e78566595089 initial import
mandel
parents:
diff changeset
435
e78566595089 initial import
mandel
parents:
diff changeset
436 private final native String readString_native(long id);
e78566595089 initial import
mandel
parents:
diff changeset
437
e78566595089 initial import
mandel
parents:
diff changeset
438 private final native void writeString_native(long id, String string);
e78566595089 initial import
mandel
parents:
diff changeset
439 */
e78566595089 initial import
mandel
parents:
diff changeset
440 }// class
e78566595089 initial import
mandel
parents:
diff changeset
441
e78566595089 initial import
mandel
parents:
diff changeset
442 class QBitArray___ extends QBitArray {
e78566595089 initial import
mandel
parents:
diff changeset
443 /*
e78566595089 initial import
mandel
parents:
diff changeset
444 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
445 public final void xor(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
446 operator_xor_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
447 }
e78566595089 initial import
mandel
parents:
diff changeset
448
e78566595089 initial import
mandel
parents:
diff changeset
449 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
450 public final void and(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
451 operator_and_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
452 }
e78566595089 initial import
mandel
parents:
diff changeset
453
e78566595089 initial import
mandel
parents:
diff changeset
454 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
455 public final void or(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
456 operator_or_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
457 }
e78566595089 initial import
mandel
parents:
diff changeset
458
e78566595089 initial import
mandel
parents:
diff changeset
459 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
460 public final void set(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
461 operator_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
462 }
e78566595089 initial import
mandel
parents:
diff changeset
463
e78566595089 initial import
mandel
parents:
diff changeset
464 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
465 public final QBitArray inverted() {
e78566595089 initial import
mandel
parents:
diff changeset
466 return operator_negate();
e78566595089 initial import
mandel
parents:
diff changeset
467 }
e78566595089 initial import
mandel
parents:
diff changeset
468 */
e78566595089 initial import
mandel
parents:
diff changeset
469 }// class
e78566595089 initial import
mandel
parents:
diff changeset
470
e78566595089 initial import
mandel
parents:
diff changeset
471 // hfr
e78566595089 initial import
mandel
parents:
diff changeset
472
e78566595089 initial import
mandel
parents:
diff changeset
473 class QDate___ extends QDate {
e78566595089 initial import
mandel
parents:
diff changeset
474
e78566595089 initial import
mandel
parents:
diff changeset
475 public final int weekNumber() {
e78566595089 initial import
mandel
parents:
diff changeset
476 return weekNumber(null);
e78566595089 initial import
mandel
parents:
diff changeset
477 }
e78566595089 initial import
mandel
parents:
diff changeset
478
e78566595089 initial import
mandel
parents:
diff changeset
479 public final int yearOfWeekNumber() {
e78566595089 initial import
mandel
parents:
diff changeset
480 int np;
e78566595089 initial import
mandel
parents:
diff changeset
481 weekNumber(&np);
e78566595089 initial import
mandel
parents:
diff changeset
482 return np;
e78566595089 initial import
mandel
parents:
diff changeset
483 }
e78566595089 initial import
mandel
parents:
diff changeset
484
e78566595089 initial import
mandel
parents:
diff changeset
485 }// class
e78566595089 initial import
mandel
parents:
diff changeset
486
e78566595089 initial import
mandel
parents:
diff changeset
487 class QDir___ extends QDir {
e78566595089 initial import
mandel
parents:
diff changeset
488 /*
e78566595089 initial import
mandel
parents:
diff changeset
489 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
490 public String at(int i) {
e78566595089 initial import
mandel
parents:
diff changeset
491 return operator_subscript(i);
e78566595089 initial import
mandel
parents:
diff changeset
492 }
e78566595089 initial import
mandel
parents:
diff changeset
493 */
e78566595089 initial import
mandel
parents:
diff changeset
494 }// class
e78566595089 initial import
mandel
parents:
diff changeset
495
e78566595089 initial import
mandel
parents:
diff changeset
496 class QByteArray___ extends QByteArray {
e78566595089 initial import
mandel
parents:
diff changeset
497 public QByteArray(String s) {
e78566595089 initial import
mandel
parents:
diff changeset
498 this();
e78566595089 initial import
mandel
parents:
diff changeset
499 append(s);
e78566595089 initial import
mandel
parents:
diff changeset
500 }
e78566595089 initial import
mandel
parents:
diff changeset
501
e78566595089 initial import
mandel
parents:
diff changeset
502 public QByteArray(byte data[]) {
e78566595089 initial import
mandel
parents:
diff changeset
503 this(qt.internal.QtJambiInternal.byteArrayToNativePointer(data), data.length);
e78566595089 initial import
mandel
parents:
diff changeset
504 }
e78566595089 initial import
mandel
parents:
diff changeset
505
e78566595089 initial import
mandel
parents:
diff changeset
506 public final boolean contains(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
507 return contains(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
508 }
e78566595089 initial import
mandel
parents:
diff changeset
509
e78566595089 initial import
mandel
parents:
diff changeset
510 public final int count(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
511 return count(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
512 }
e78566595089 initial import
mandel
parents:
diff changeset
513
e78566595089 initial import
mandel
parents:
diff changeset
514 public final boolean endsWith(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
515 return endsWith(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
516 }
e78566595089 initial import
mandel
parents:
diff changeset
517
e78566595089 initial import
mandel
parents:
diff changeset
518 public final QByteArray prepend(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
519 return prepend(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
520 }
e78566595089 initial import
mandel
parents:
diff changeset
521
e78566595089 initial import
mandel
parents:
diff changeset
522 public final QByteArray replace(QByteArray before, String after) {
e78566595089 initial import
mandel
parents:
diff changeset
523 return replace(before, new QByteArray(after));
e78566595089 initial import
mandel
parents:
diff changeset
524 }
e78566595089 initial import
mandel
parents:
diff changeset
525
e78566595089 initial import
mandel
parents:
diff changeset
526 public final QByteArray replace(String before, String after) {
e78566595089 initial import
mandel
parents:
diff changeset
527 return replace(new QByteArray(before), new QByteArray(after));
e78566595089 initial import
mandel
parents:
diff changeset
528 }
e78566595089 initial import
mandel
parents:
diff changeset
529
e78566595089 initial import
mandel
parents:
diff changeset
530 public final boolean startsWith(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
531 return startsWith(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
532 }
e78566595089 initial import
mandel
parents:
diff changeset
533
e78566595089 initial import
mandel
parents:
diff changeset
534 public final byte[] toByteArray() {
e78566595089 initial import
mandel
parents:
diff changeset
535 byte[] res = new byte[size()];
e78566595089 initial import
mandel
parents:
diff changeset
536
e78566595089 initial import
mandel
parents:
diff changeset
537 for (int i = 0; i < size(); i++) {
e78566595089 initial import
mandel
parents:
diff changeset
538 res[i] = at(i);
e78566595089 initial import
mandel
parents:
diff changeset
539 }
e78566595089 initial import
mandel
parents:
diff changeset
540 return res;
e78566595089 initial import
mandel
parents:
diff changeset
541 }
e78566595089 initial import
mandel
parents:
diff changeset
542
e78566595089 initial import
mandel
parents:
diff changeset
543 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
544 public final QByteArray set(QByteArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
545 operator_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
546 return this;
e78566595089 initial import
mandel
parents:
diff changeset
547 }
e78566595089 initial import
mandel
parents:
diff changeset
548
e78566595089 initial import
mandel
parents:
diff changeset
549 }// class
e78566595089 initial import
mandel
parents:
diff changeset
550
e78566595089 initial import
mandel
parents:
diff changeset
551 class QFile___ extends QFile {
e78566595089 initial import
mandel
parents:
diff changeset
552 /*
e78566595089 initial import
mandel
parents:
diff changeset
553 public static String decodeName(String localFileName) {
e78566595089 initial import
mandel
parents:
diff changeset
554 return decodeName(qt.QNativePointer.createCharPointer(localFileName));
e78566595089 initial import
mandel
parents:
diff changeset
555 }
e78566595089 initial import
mandel
parents:
diff changeset
556 */
e78566595089 initial import
mandel
parents:
diff changeset
557 }// class
e78566595089 initial import
mandel
parents:
diff changeset
558
e78566595089 initial import
mandel
parents:
diff changeset
559 class QIODevice___ extends QIODevice {
e78566595089 initial import
mandel
parents:
diff changeset
560
e78566595089 initial import
mandel
parents:
diff changeset
561 /**
e78566595089 initial import
mandel
parents:
diff changeset
562 * Gets a byte from the device.
e78566595089 initial import
mandel
parents:
diff changeset
563 *
e78566595089 initial import
mandel
parents:
diff changeset
564 * @return -1 on failure, or the value of the byte on success
e78566595089 initial import
mandel
parents:
diff changeset
565 */
e78566595089 initial import
mandel
parents:
diff changeset
566 /* public final int getByte() {
e78566595089 initial import
mandel
parents:
diff changeset
567 QNativePointer np = new QNativePointer(QNativePointer.Type.Byte);
e78566595089 initial import
mandel
parents:
diff changeset
568 boolean success = getByte(np);
e78566595089 initial import
mandel
parents:
diff changeset
569 return success ? np.byteValue() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
570 }
e78566595089 initial import
mandel
parents:
diff changeset
571 */
180
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
572
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
573 public final long write(string str) {
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
574 return write(str.ptr, str.length);
253
073b9153ed8a Rev. 264 done right.
maxter
parents: 252
diff changeset
575 }
1
e78566595089 initial import
mandel
parents:
diff changeset
576 }// class
e78566595089 initial import
mandel
parents:
diff changeset
577
e78566595089 initial import
mandel
parents:
diff changeset
578 class QCryptographicHash___ extends QCryptographicHash {
e78566595089 initial import
mandel
parents:
diff changeset
579
e78566595089 initial import
mandel
parents:
diff changeset
580 public final void addData(byte data[]) {
e78566595089 initial import
mandel
parents:
diff changeset
581 QNativePointer np = qt.internal.QtJambiInternal.byteArrayToNativePointer(data);
e78566595089 initial import
mandel
parents:
diff changeset
582 addData(np, data.length);
e78566595089 initial import
mandel
parents:
diff changeset
583 }
e78566595089 initial import
mandel
parents:
diff changeset
584
e78566595089 initial import
mandel
parents:
diff changeset
585 }// class
e78566595089 initial import
mandel
parents:
diff changeset
586
e78566595089 initial import
mandel
parents:
diff changeset
587 class QTextCodec___ extends QTextCodec {
e78566595089 initial import
mandel
parents:
diff changeset
588 /*
e78566595089 initial import
mandel
parents:
diff changeset
589 static {
e78566595089 initial import
mandel
parents:
diff changeset
590 setCodecForTr(QTextCodec.codecForName("UTF-8"));
e78566595089 initial import
mandel
parents:
diff changeset
591 }
e78566595089 initial import
mandel
parents:
diff changeset
592
e78566595089 initial import
mandel
parents:
diff changeset
593 public static QTextCodec codecForName(String name) {
e78566595089 initial import
mandel
parents:
diff changeset
594 return codecForName(qt.QNativePointer.createCharPointer(name));
e78566595089 initial import
mandel
parents:
diff changeset
595 }
e78566595089 initial import
mandel
parents:
diff changeset
596 */
e78566595089 initial import
mandel
parents:
diff changeset
597 }// class
e78566595089 initial import
mandel
parents:
diff changeset
598
e78566595089 initial import
mandel
parents:
diff changeset
599 class QBuffer___ extends QBuffer {
e78566595089 initial import
mandel
parents:
diff changeset
600
e78566595089 initial import
mandel
parents:
diff changeset
601 // retain a reference to avoid gc
e78566595089 initial import
mandel
parents:
diff changeset
602 private Object strongDataReference = null;
e78566595089 initial import
mandel
parents:
diff changeset
603 public final void setBuffer(QByteArray byteArray) {
90
ba63040afbf2 wrapping of QBuffer and QProcess, fixed #9
eldar
parents: 56
diff changeset
604 setBuffer_private(byteArray);
1
e78566595089 initial import
mandel
parents:
diff changeset
605 strongDataReference = byteArray;
e78566595089 initial import
mandel
parents:
diff changeset
606 }
e78566595089 initial import
mandel
parents:
diff changeset
607
e78566595089 initial import
mandel
parents:
diff changeset
608 public final void setData(byte data[]) {
90
ba63040afbf2 wrapping of QBuffer and QProcess, fixed #9
eldar
parents: 56
diff changeset
609 setData(cast(char*)data.ptr, data.length);
1
e78566595089 initial import
mandel
parents:
diff changeset
610 }
e78566595089 initial import
mandel
parents:
diff changeset
611
e78566595089 initial import
mandel
parents:
diff changeset
612 }// class
e78566595089 initial import
mandel
parents:
diff changeset
613
e78566595089 initial import
mandel
parents:
diff changeset
614 class QSignalMapper___ extends QSignalMapper {
e78566595089 initial import
mandel
parents:
diff changeset
615
e78566595089 initial import
mandel
parents:
diff changeset
616 private java.util.Hashtable<QObject, QObject> __rcObjectForObject = new java.util.Hashtable<QObject, QObject>();
e78566595089 initial import
mandel
parents:
diff changeset
617
e78566595089 initial import
mandel
parents:
diff changeset
618 private java.util.Hashtable<QObject, Object> __rcWidgetForObject = new java.util.Hashtable<QObject, Object>();
e78566595089 initial import
mandel
parents:
diff changeset
619
e78566595089 initial import
mandel
parents:
diff changeset
620 }// class
e78566595089 initial import
mandel
parents:
diff changeset
621
e78566595089 initial import
mandel
parents:
diff changeset
622 class QAbstractFileEngine_MapExtensionReturn___ extends QAbstractFileEngine_MapExtensionReturn {
e78566595089 initial import
mandel
parents:
diff changeset
623 /* private QNativePointer currentAddressNativePointer; // don't garbage collect while in use
e78566595089 initial import
mandel
parents:
diff changeset
624 public final void setAddress(String address) {
e78566595089 initial import
mandel
parents:
diff changeset
625 currentAddressNativePointer = address != null ? QNativePointer.createCharPointer(address) : null;
e78566595089 initial import
mandel
parents:
diff changeset
626 address_private(currentAddressNativePointer);
e78566595089 initial import
mandel
parents:
diff changeset
627 }
e78566595089 initial import
mandel
parents:
diff changeset
628
e78566595089 initial import
mandel
parents:
diff changeset
629 public final String address() {
e78566595089 initial import
mandel
parents:
diff changeset
630 QNativePointer np = address_private();
e78566595089 initial import
mandel
parents:
diff changeset
631 return np != null ? qt.internal.QtJambiInternal.charPointerToString(np) : null;
e78566595089 initial import
mandel
parents:
diff changeset
632 }*/
e78566595089 initial import
mandel
parents:
diff changeset
633 }// class
e78566595089 initial import
mandel
parents:
diff changeset
634
e78566595089 initial import
mandel
parents:
diff changeset
635 class QAbstractFileEngine___ extends QAbstractFileEngine {
e78566595089 initial import
mandel
parents:
diff changeset
636 /**
e78566595089 initial import
mandel
parents:
diff changeset
637 * Adds <tt>path</tt> to the set of paths in which Qt Jambi should search for resources. Resources
e78566595089 initial import
mandel
parents:
diff changeset
638 * can be accessed using the "classpath:" scheme.
e78566595089 initial import
mandel
parents:
diff changeset
639 */
e78566595089 initial import
mandel
parents:
diff changeset
640 /* public static void addSearchPathForResourceEngine(String path)
e78566595089 initial import
mandel
parents:
diff changeset
641 {
e78566595089 initial import
mandel
parents:
diff changeset
642 qt.internal.QClassPathEngine.addSearchPath(path);
e78566595089 initial import
mandel
parents:
diff changeset
643 }
e78566595089 initial import
mandel
parents:
diff changeset
644 */
e78566595089 initial import
mandel
parents:
diff changeset
645 /**
e78566595089 initial import
mandel
parents:
diff changeset
646 * Removes <tt>path</tt> from the set of paths in which Qt Jambi searches
e78566595089 initial import
mandel
parents:
diff changeset
647 * for resources.
e78566595089 initial import
mandel
parents:
diff changeset
648 */
e78566595089 initial import
mandel
parents:
diff changeset
649 /* public static void removeSearchPathForResourceEngine(String path)
e78566595089 initial import
mandel
parents:
diff changeset
650 {
e78566595089 initial import
mandel
parents:
diff changeset
651 qt.internal.QClassPathEngine.removeSearchPath(path);
e78566595089 initial import
mandel
parents:
diff changeset
652 }
e78566595089 initial import
mandel
parents:
diff changeset
653 */
e78566595089 initial import
mandel
parents:
diff changeset
654 }// class
e78566595089 initial import
mandel
parents:
diff changeset
655
e78566595089 initial import
mandel
parents:
diff changeset
656 class QAbstractFileEngine_UnMapExtensionOption___ extends QAbstractFileEngine_UnMapExtensionOption {
e78566595089 initial import
mandel
parents:
diff changeset
657 private QNativePointer currentAddressNativePointer; // don't garbage collect while in use
e78566595089 initial import
mandel
parents:
diff changeset
658 public final void setAddress(String address) {
e78566595089 initial import
mandel
parents:
diff changeset
659 currentAddressNativePointer = address != null ? QNativePointer.createCharPointer(address) : null;
e78566595089 initial import
mandel
parents:
diff changeset
660 address_private(currentAddressNativePointer);
e78566595089 initial import
mandel
parents:
diff changeset
661 }
e78566595089 initial import
mandel
parents:
diff changeset
662
e78566595089 initial import
mandel
parents:
diff changeset
663 public final String address() {
e78566595089 initial import
mandel
parents:
diff changeset
664 QNativePointer np = address_private();
e78566595089 initial import
mandel
parents:
diff changeset
665 return np != null ? qt.internal.QtJambiInternal.charPointerToString(np) : null;
e78566595089 initial import
mandel
parents:
diff changeset
666 }
e78566595089 initial import
mandel
parents:
diff changeset
667 }// class
e78566595089 initial import
mandel
parents:
diff changeset
668
e78566595089 initial import
mandel
parents:
diff changeset
669 class QFutureWatcher___ extends QFutureWatcher {
e78566595089 initial import
mandel
parents:
diff changeset
670
e78566595089 initial import
mandel
parents:
diff changeset
671 public final QFuture<T> future() {
e78566595089 initial import
mandel
parents:
diff changeset
672 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
673 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
674 return __qt_future(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
675 }
e78566595089 initial import
mandel
parents:
diff changeset
676 private native QFuture<T> __qt_future(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
677
e78566595089 initial import
mandel
parents:
diff changeset
678 }// class
e78566595089 initial import
mandel
parents:
diff changeset
679
e78566595089 initial import
mandel
parents:
diff changeset
680 class QFutureWatcherVoid___ extends QFutureWatcherVoid {
e78566595089 initial import
mandel
parents:
diff changeset
681
e78566595089 initial import
mandel
parents:
diff changeset
682 public final QFutureVoid future() {
e78566595089 initial import
mandel
parents:
diff changeset
683 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
684 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
685 return __qt_future(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
686 }
e78566595089 initial import
mandel
parents:
diff changeset
687
e78566595089 initial import
mandel
parents:
diff changeset
688 private native QFutureVoid __qt_future(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
689
e78566595089 initial import
mandel
parents:
diff changeset
690 }// class
e78566595089 initial import
mandel
parents:
diff changeset
691
e78566595089 initial import
mandel
parents:
diff changeset
692 class QFutureSynchronizer___ extends QFutureSynchronizer {
e78566595089 initial import
mandel
parents:
diff changeset
693
e78566595089 initial import
mandel
parents:
diff changeset
694 public final java.util.List<QFuture<T>> futures() {
e78566595089 initial import
mandel
parents:
diff changeset
695 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
696 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
697 return __qt_futures(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
698 }
e78566595089 initial import
mandel
parents:
diff changeset
699 private native java.util.List<QFuture<T>> __qt_futures(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
700
e78566595089 initial import
mandel
parents:
diff changeset
701 }// class
e78566595089 initial import
mandel
parents:
diff changeset
702
e78566595089 initial import
mandel
parents:
diff changeset
703 class QFutureSynchronizerVoid___ extends QFutureSynchronizerVoid {
e78566595089 initial import
mandel
parents:
diff changeset
704
e78566595089 initial import
mandel
parents:
diff changeset
705 public final java.util.List<QFutureVoid> futures() {
e78566595089 initial import
mandel
parents:
diff changeset
706 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
707 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
708 return __qt_futures(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
709 }
e78566595089 initial import
mandel
parents:
diff changeset
710 private native java.util.List<QFutureVoid> __qt_futures(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
711
e78566595089 initial import
mandel
parents:
diff changeset
712 }// class
e78566595089 initial import
mandel
parents:
diff changeset
713
e78566595089 initial import
mandel
parents:
diff changeset
714 class QLineF___ extends QLineF {
e78566595089 initial import
mandel
parents:
diff changeset
715 /*
e78566595089 initial import
mandel
parents:
diff changeset
716 public final QLineF.IntersectType intersect(QLineF line, qt.core.QPointF intersectionPoint) {
e78566595089 initial import
mandel
parents:
diff changeset
717 return intersect(line, intersectionPoint != null ? intersectionPoint.nativePointer() : null);
e78566595089 initial import
mandel
parents:
diff changeset
718 }
e78566595089 initial import
mandel
parents:
diff changeset
719 */
e78566595089 initial import
mandel
parents:
diff changeset
720 }// class
e78566595089 initial import
mandel
parents:
diff changeset
721
e78566595089 initial import
mandel
parents:
diff changeset
722 /**
e78566595089 initial import
mandel
parents:
diff changeset
723 The QtConcurrent class contains static methods for running computations in parallel (using separate threads)
e78566595089 initial import
mandel
parents:
diff changeset
724 on the items in a java.util.Collection, such as a Vector or LinkedList. We will now describe these methods.
e78566595089 initial import
mandel
parents:
diff changeset
725
e78566595089 initial import
mandel
parents:
diff changeset
726 The QtConcurrent::map(), QtConcurrent::mapped() and QtConcurrent::mappedReduced() functions run computations in parallel on the items in a sequence such as a QList or a QVector. QtConcurrent::map() modifies a sequence in-place, QtConcurrent::mapped() returns a new sequence containing the modified content, and QtConcurrent::mappedReduced() returns a single result.
e78566595089 initial import
mandel
parents:
diff changeset
727 Concurrent Map
e78566595089 initial import
mandel
parents:
diff changeset
728 <p>
e78566595089 initial import
mandel
parents:
diff changeset
729 QtConcurrent::mapped() takes an input sequence and a map function. This map function is then called for each item in the sequence, and a new sequence containing the return values from the map function is returned.
e78566595089 initial import
mandel
parents:
diff changeset
730 <p>
e78566595089 initial import
mandel
parents:
diff changeset
731 The map function must be of the form:
e78566595089 initial import
mandel
parents:
diff changeset
732 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
733 U function(const T &amp;t);
e78566595089 initial import
mandel
parents:
diff changeset
734 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
735 T and U can be any type (and they can even be the same type), but T must match the type stored in the sequence. The function returns the modified or mapped content.
e78566595089 initial import
mandel
parents:
diff changeset
736 <p>
e78566595089 initial import
mandel
parents:
diff changeset
737 This example shows how to apply a scale function to all the items in a sequence:
e78566595089 initial import
mandel
parents:
diff changeset
738 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
739 QImage scaled(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
740 {
e78566595089 initial import
mandel
parents:
diff changeset
741 return image.scaled(100, 100);
e78566595089 initial import
mandel
parents:
diff changeset
742 }
e78566595089 initial import
mandel
parents:
diff changeset
743
e78566595089 initial import
mandel
parents:
diff changeset
744 QList &lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
745 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images, scaled);
e78566595089 initial import
mandel
parents:
diff changeset
746 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
747 The results of the map are made available through QFuture. See the QFuture and QFutureWatcher documentation for more information on how to use QFuture in your applications.
e78566595089 initial import
mandel
parents:
diff changeset
748 <p>
e78566595089 initial import
mandel
parents:
diff changeset
749 If you want to modify a sequence in-place, use QtConcurrent::map(). The map function must then be of the form:
e78566595089 initial import
mandel
parents:
diff changeset
750 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
751 U function(T &amp;t);
e78566595089 initial import
mandel
parents:
diff changeset
752 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
753 Note that the return value and return type of the map function are not used.
e78566595089 initial import
mandel
parents:
diff changeset
754 <p>
e78566595089 initial import
mandel
parents:
diff changeset
755 Using QtConcurrent::map() is similar to using QtConcurrent::mapped():
e78566595089 initial import
mandel
parents:
diff changeset
756 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
757 void scale(QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
758 {
e78566595089 initial import
mandel
parents:
diff changeset
759 image = image.scaled(100, 100);
e78566595089 initial import
mandel
parents:
diff changeset
760 }
e78566595089 initial import
mandel
parents:
diff changeset
761
e78566595089 initial import
mandel
parents:
diff changeset
762 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
763 QFuture&lt;void&gt; future = QtConcurrent::map(images, scale);
e78566595089 initial import
mandel
parents:
diff changeset
764 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
765 Since the sequence is modified in place, QtConcurrent::map() does not return any results via QFuture. However, you can still use QFuture and QFutureWatcher to monitor the status of the map.
e78566595089 initial import
mandel
parents:
diff changeset
766 Concurrent Map-Reduce
e78566595089 initial import
mandel
parents:
diff changeset
767 <p>
e78566595089 initial import
mandel
parents:
diff changeset
768 QtConcurrent::mappedReduced() is similar to QtConcurrent::mapped(), but instead of returning a sequence with the new results, the results are combined into a single value using a reduce function.
e78566595089 initial import
mandel
parents:
diff changeset
769 <p>
e78566595089 initial import
mandel
parents:
diff changeset
770 The reduce function must be of the form:
e78566595089 initial import
mandel
parents:
diff changeset
771 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
772 V function(T &amp;result, const U &amp;intermediate)
e78566595089 initial import
mandel
parents:
diff changeset
773 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
774 T is the type of the final result, U is the return type of the map function. Note that the return value and return type of the reduce function are not used.
e78566595089 initial import
mandel
parents:
diff changeset
775 <p>
e78566595089 initial import
mandel
parents:
diff changeset
776 Call QtConcurrent::mappedReduced() like this:
e78566595089 initial import
mandel
parents:
diff changeset
777 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
778 void addToCollage(QImage &amp;collage, const QImage &amp;thumbnail)
e78566595089 initial import
mandel
parents:
diff changeset
779 {
e78566595089 initial import
mandel
parents:
diff changeset
780 QPainter p(&amp;collage);
e78566595089 initial import
mandel
parents:
diff changeset
781 static QPoint offset = QPoint(0, 0);
e78566595089 initial import
mandel
parents:
diff changeset
782 p.drawImage(offset, thumbnail);
e78566595089 initial import
mandel
parents:
diff changeset
783 offset += ...;
e78566595089 initial import
mandel
parents:
diff changeset
784 }
e78566595089 initial import
mandel
parents:
diff changeset
785
e78566595089 initial import
mandel
parents:
diff changeset
786 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
787 QFuture&lt;QImage&gt; collage = QtConcurrent::mappedReduced(images, scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
788 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
789 The reduce function will be called once for each result returned by the map function, and should merge the intermediate into the result variable. QtConcurrent::mappedReduced() guarantees that only one thread will call reduce at a time, so using a mutex to lock the result variable is not neccesary. The QtConcurrent::ReduceOptions enum provides a way to control the order in which the reduction is done. If QtConcurrent::UnorderedReduce is used (the default), the order is undefined, while QtConcurrent::OrderedReduce ensures that the reduction is done in the order of the original sequence.
e78566595089 initial import
mandel
parents:
diff changeset
790 Additional API Features
e78566595089 initial import
mandel
parents:
diff changeset
791 Using Iterators instead of Sequence
e78566595089 initial import
mandel
parents:
diff changeset
792 <p>
e78566595089 initial import
mandel
parents:
diff changeset
793 Each of the above functions has a variant that takes an iterator range instead of a sequence. You use them in the same way as the sequence variants:
e78566595089 initial import
mandel
parents:
diff changeset
794 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
795 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
796
e78566595089 initial import
mandel
parents:
diff changeset
797 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images.constBegin(), images.constEnd(), scaled);
e78566595089 initial import
mandel
parents:
diff changeset
798
e78566595089 initial import
mandel
parents:
diff changeset
799 // map in-place only works on non-const iterators
e78566595089 initial import
mandel
parents:
diff changeset
800 QFuture&lt;void&gt; future = QtConcurrent::map(images.begin(), images.end(), scale);
e78566595089 initial import
mandel
parents:
diff changeset
801
e78566595089 initial import
mandel
parents:
diff changeset
802 QFuture&lt;QImage&gt; collage = QtConcurrent::mappedReduced(images.constBegin(), images.constEnd(), scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
803 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
804 Blocking Variants
e78566595089 initial import
mandel
parents:
diff changeset
805 <p>
e78566595089 initial import
mandel
parents:
diff changeset
806 Each of the above functions has a blocking variant that returns the final result instead of a QFuture. You use them in the same way as the asynchronous variants.
e78566595089 initial import
mandel
parents:
diff changeset
807 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
808 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
809
e78566595089 initial import
mandel
parents:
diff changeset
810 // each call blocks until the entire operation is finished
e78566595089 initial import
mandel
parents:
diff changeset
811 QList&lt;QImage&gt; future = QtConcurrent::blockingMapped(images, scaled);
e78566595089 initial import
mandel
parents:
diff changeset
812
e78566595089 initial import
mandel
parents:
diff changeset
813 QtConcurrent::blockingMap(images, scale);
e78566595089 initial import
mandel
parents:
diff changeset
814
e78566595089 initial import
mandel
parents:
diff changeset
815 QImage collage = QtConcurrent::blockingMappedReduced(images, scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
816 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
817 Note that the result types above are not QFuture objects, but real result types (in this case, QList&lt;QImage&gt; and QImage).
e78566595089 initial import
mandel
parents:
diff changeset
818 Using Member Functions
e78566595089 initial import
mandel
parents:
diff changeset
819 <p>
e78566595089 initial import
mandel
parents:
diff changeset
820 QtConcurrent::map(), QtConcurrent::mapped(), and QtConcurrent::mappedReduced() accept pointers to member functions. The member function class type must match the type stored in the sequence:
e78566595089 initial import
mandel
parents:
diff changeset
821 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
822 // squeeze all strings in a QStringList
e78566595089 initial import
mandel
parents:
diff changeset
823 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
824 QFuture&lt;void&gt; squeezedStrings = QtConcurrent::map(strings, &amp;QString::squeeze);
e78566595089 initial import
mandel
parents:
diff changeset
825
e78566595089 initial import
mandel
parents:
diff changeset
826 // swap the rgb values of all pixels on a list of images
e78566595089 initial import
mandel
parents:
diff changeset
827 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
828 QFuture&lt;QImage&gt; bgrImages = QtConcurrent::mapped(images, &amp;QImage::rgbSwapped);
e78566595089 initial import
mandel
parents:
diff changeset
829
e78566595089 initial import
mandel
parents:
diff changeset
830 // create a set of the lengths of all strings in a list
e78566595089 initial import
mandel
parents:
diff changeset
831 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
832 QFuture&lt;QSet&lt;int&gt; &gt; wordLengths = QtConcurrent::mappedReduced(string, &amp;QString::length, &amp;QSet&lt;int&gt;::insert);
e78566595089 initial import
mandel
parents:
diff changeset
833 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
834 Note that when using QtConcurrent::mappedReduced(), you can mix the use of normal and member functions freely:
e78566595089 initial import
mandel
parents:
diff changeset
835 <p>
e78566595089 initial import
mandel
parents:
diff changeset
836 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
837 // can mix normal functions and member functions with QtConcurrent::mappedReduced()
e78566595089 initial import
mandel
parents:
diff changeset
838
e78566595089 initial import
mandel
parents:
diff changeset
839 // compute the average length of a list of strings
e78566595089 initial import
mandel
parents:
diff changeset
840 extern void computeAverage(int &amp;average, int length);
e78566595089 initial import
mandel
parents:
diff changeset
841 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
842 QFuture&lt;int&gt; averageWordLength = QtConcurrent::mappedReduced(strings, &amp;QString::length, computeAverage);
e78566595089 initial import
mandel
parents:
diff changeset
843
e78566595089 initial import
mandel
parents:
diff changeset
844 // create a set of the color distribution of all images in a list
e78566595089 initial import
mandel
parents:
diff changeset
845 extern int colorDistribution(const QImage &amp;string);
e78566595089 initial import
mandel
parents:
diff changeset
846 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
847 QFuture&lt;QSet&lt;int&gt; &gt; totalColorDistribution = QtConcurrent::mappedReduced(images, colorDistribution, QSet&lt;int&gt;::insert);
e78566595089 initial import
mandel
parents:
diff changeset
848 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
849 Using Function Objects
e78566595089 initial import
mandel
parents:
diff changeset
850 <p>
e78566595089 initial import
mandel
parents:
diff changeset
851 QtConcurrent::map(), QtConcurrent::mapped(), and QtConcurrent::mappedReduced() accept function objects, which can be used to add state to a function call. The result_type typedef must define the result type of the function call operator:
e78566595089 initial import
mandel
parents:
diff changeset
852 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
853 struct Scaled
e78566595089 initial import
mandel
parents:
diff changeset
854 {
e78566595089 initial import
mandel
parents:
diff changeset
855 Scaled(int size)
e78566595089 initial import
mandel
parents:
diff changeset
856 : m_size(size) { }
e78566595089 initial import
mandel
parents:
diff changeset
857
e78566595089 initial import
mandel
parents:
diff changeset
858 typedef QImage result_type;
e78566595089 initial import
mandel
parents:
diff changeset
859
e78566595089 initial import
mandel
parents:
diff changeset
860 QImage operator()(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
861 {
e78566595089 initial import
mandel
parents:
diff changeset
862 return image.scaled(m_size, m_size);
e78566595089 initial import
mandel
parents:
diff changeset
863 }
e78566595089 initial import
mandel
parents:
diff changeset
864
e78566595089 initial import
mandel
parents:
diff changeset
865 int m_size;
e78566595089 initial import
mandel
parents:
diff changeset
866 };
e78566595089 initial import
mandel
parents:
diff changeset
867
e78566595089 initial import
mandel
parents:
diff changeset
868 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
869 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images, Scaled(100));
e78566595089 initial import
mandel
parents:
diff changeset
870 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
871 Using Bound Function Arguments
e78566595089 initial import
mandel
parents:
diff changeset
872 <p>
e78566595089 initial import
mandel
parents:
diff changeset
873 Note that Qt does not provide support for bound functions. This is provided by 3rd party libraries like Boost or C++ TR1 Library Extensions.
e78566595089 initial import
mandel
parents:
diff changeset
874 <p>
e78566595089 initial import
mandel
parents:
diff changeset
875 If you want to use a map function that takes more than one argument you can use boost::bind() or std::tr1::bind() to transform it onto a function that takes one argument.
e78566595089 initial import
mandel
parents:
diff changeset
876 <p>
e78566595089 initial import
mandel
parents:
diff changeset
877 As an example, we'll use QImage::scaledToWidth():
e78566595089 initial import
mandel
parents:
diff changeset
878 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
879 QImage QImage::scaledToWidth(int width, Qt::TransformationMode) const;
e78566595089 initial import
mandel
parents:
diff changeset
880 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
881 scaledToWidth takes three arguments (including the "this" pointer) and can't be used with QtConcurrent::mapped() directly, because QtConcurrent::mapped() expects a function that takes one argument. To use QImage::scaledToWidth() with QtConcurrent::mapped() we have to provide a value for the width and the transformation mode:
e78566595089 initial import
mandel
parents:
diff changeset
882 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
883 boost::bind(&amp;QImage::scaledToWidth, 100 Qt::SmoothTransformation)
e78566595089 initial import
mandel
parents:
diff changeset
884 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
885 The return value from boost::bind() is a function object (functor) with the following signature:
e78566595089 initial import
mandel
parents:
diff changeset
886 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
887 QImage scaledToWith(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
888 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
889 This matches what QtConcurrent::mapped() expects, and the complete example becomes:
e78566595089 initial import
mandel
parents:
diff changeset
890 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
891 QList&gt;QImage&lt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
892 QFuture&gt;QImage&lt; thumbnails = QtConcurrent::mapped(images, boost::bind(&amp;QImage::scaledToWidth, 100 Qt::SmoothTransformation));
e78566595089 initial import
mandel
parents:
diff changeset
893 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
894 */
e78566595089 initial import
mandel
parents:
diff changeset
895 class QtConcurrent___ extends QtConcurrent {
e78566595089 initial import
mandel
parents:
diff changeset
896
e78566595089 initial import
mandel
parents:
diff changeset
897 static {
e78566595089 initial import
mandel
parents:
diff changeset
898 qt.QtJambi_LibraryInitializer.init();
e78566595089 initial import
mandel
parents:
diff changeset
899 qt.core.QtJambi_LibraryInitializer.init();
e78566595089 initial import
mandel
parents:
diff changeset
900 }
e78566595089 initial import
mandel
parents:
diff changeset
901
e78566595089 initial import
mandel
parents:
diff changeset
902 /**
e78566595089 initial import
mandel
parents:
diff changeset
903 * An implemetation of this interface is given one to QtConcurrent's map() methods.
e78566595089 initial import
mandel
parents:
diff changeset
904 * The map() method of this interface is called for each object in a java.util.Collection.
e78566595089 initial import
mandel
parents:
diff changeset
905 *
e78566595089 initial import
mandel
parents:
diff changeset
906 */
e78566595089 initial import
mandel
parents:
diff changeset
907 public interface MapFunctor<T> {
e78566595089 initial import
mandel
parents:
diff changeset
908
e78566595089 initial import
mandel
parents:
diff changeset
909 /**
e78566595089 initial import
mandel
parents:
diff changeset
910 * This function is called for each item in the Collection. The function is then free to alter <tt>object</tt> as it see fit.
e78566595089 initial import
mandel
parents:
diff changeset
911 */
e78566595089 initial import
mandel
parents:
diff changeset
912 public void map(T object);
e78566595089 initial import
mandel
parents:
diff changeset
913 }
e78566595089 initial import
mandel
parents:
diff changeset
914 /**
e78566595089 initial import
mandel
parents:
diff changeset
915 * Calls function once for each item in sequence. The function is passed a reference to the item, so that any modifications done to the item will appear in sequence.
e78566595089 initial import
mandel
parents:
diff changeset
916 */
e78566595089 initial import
mandel
parents:
diff changeset
917 public static native <T> QFutureVoid map(java.util.Collection<T> sequence, MapFunctor<T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
918
e78566595089 initial import
mandel
parents:
diff changeset
919 /**
e78566595089 initial import
mandel
parents:
diff changeset
920 * Calls function once for each item in sequence. The function is passed a reference to the item, so that any modifications done to the item will appear in sequence.
e78566595089 initial import
mandel
parents:
diff changeset
921 */
e78566595089 initial import
mandel
parents:
diff changeset
922 public static native <T> void blockingMap(java.util.Collection<T> sequence, MapFunctor<T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
923
e78566595089 initial import
mandel
parents:
diff changeset
924 /**
e78566595089 initial import
mandel
parents:
diff changeset
925 * Implement this interface to perform a mapped operation. An implementation of the interface is sendt
e78566595089 initial import
mandel
parents:
diff changeset
926 * to ome of the mapped methods of QtConcurrent, which applies the MappedFunctor.map() method to all elements in a collection,
e78566595089 initial import
mandel
parents:
diff changeset
927 * and returns the result.
e78566595089 initial import
mandel
parents:
diff changeset
928 */
e78566595089 initial import
mandel
parents:
diff changeset
929 public interface MappedFunctor<U, T> {
e78566595089 initial import
mandel
parents:
diff changeset
930
e78566595089 initial import
mandel
parents:
diff changeset
931 /**
e78566595089 initial import
mandel
parents:
diff changeset
932 * This method is called for each object in a collection. It should returned a new altered
e78566595089 initial import
mandel
parents:
diff changeset
933 * object.
e78566595089 initial import
mandel
parents:
diff changeset
934 */
e78566595089 initial import
mandel
parents:
diff changeset
935 public U map(T object);
e78566595089 initial import
mandel
parents:
diff changeset
936 }
e78566595089 initial import
mandel
parents:
diff changeset
937
e78566595089 initial import
mandel
parents:
diff changeset
938 /**
e78566595089 initial import
mandel
parents:
diff changeset
939 * Calls function once for each item in sequence and returns a future with each mapped item as a result. You can QFutureIterator to iterate through the results.
e78566595089 initial import
mandel
parents:
diff changeset
940 *
e78566595089 initial import
mandel
parents:
diff changeset
941 */
e78566595089 initial import
mandel
parents:
diff changeset
942 public static native <U, T> QFuture<U> mapped(java.util.Collection<T> sequence, MappedFunctor<U, T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
943
e78566595089 initial import
mandel
parents:
diff changeset
944 /**
e78566595089 initial import
mandel
parents:
diff changeset
945 * Calls function once for each item in sequence and returns a future with each mapped item as a result. You can QFutureIterator to iterate through the results.
e78566595089 initial import
mandel
parents:
diff changeset
946 */
e78566595089 initial import
mandel
parents:
diff changeset
947 public static native <U, T> java.util.List<U> blockingMapped(java.util.Collection<T> sequence, MappedFunctor<U, T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
948
e78566595089 initial import
mandel
parents:
diff changeset
949 /**
e78566595089 initial import
mandel
parents:
diff changeset
950 * Implement this interface in order to perform a reduce operation.
e78566595089 initial import
mandel
parents:
diff changeset
951 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
952 * The reduce method will be called once per intermediate result (the result of the mapping of the data)
e78566595089 initial import
mandel
parents:
diff changeset
953 * and the very first time the reduce() method is called for the particular data set, the result is set to
e78566595089 initial import
mandel
parents:
diff changeset
954 * the returned value of the defaultResult() method.
e78566595089 initial import
mandel
parents:
diff changeset
955 */
e78566595089 initial import
mandel
parents:
diff changeset
956 public interface ReducedFunctor<U, T> {
e78566595089 initial import
mandel
parents:
diff changeset
957 public U defaultResult();
e78566595089 initial import
mandel
parents:
diff changeset
958
e78566595089 initial import
mandel
parents:
diff changeset
959 /**
e78566595089 initial import
mandel
parents:
diff changeset
960 * Performs a reduce operation on <tt>intermediate</tt>. <tt>result</tt> is the result of the reduction.
e78566595089 initial import
mandel
parents:
diff changeset
961 */
e78566595089 initial import
mandel
parents:
diff changeset
962 public void reduce(U result, T intermediate);
e78566595089 initial import
mandel
parents:
diff changeset
963 }
e78566595089 initial import
mandel
parents:
diff changeset
964
e78566595089 initial import
mandel
parents:
diff changeset
965 /**
e78566595089 initial import
mandel
parents:
diff changeset
966 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
967 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
968 * It is equivalent of mappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce)
e78566595089 initial import
mandel
parents:
diff changeset
969 */
e78566595089 initial import
mandel
parents:
diff changeset
970 public static <U, V, T> QFuture<U> mappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor) {
e78566595089 initial import
mandel
parents:
diff changeset
971 return mappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
972 }
e78566595089 initial import
mandel
parents:
diff changeset
973
e78566595089 initial import
mandel
parents:
diff changeset
974
e78566595089 initial import
mandel
parents:
diff changeset
975 /**
e78566595089 initial import
mandel
parents:
diff changeset
976 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
977 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
978 * Note that while mapFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is determined by reduceOptions.
e78566595089 initial import
mandel
parents:
diff changeset
979 *
e78566595089 initial import
mandel
parents:
diff changeset
980 */
e78566595089 initial import
mandel
parents:
diff changeset
981 public static <U, V, T> QFuture<U> mappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, ReduceOption ... options) {
e78566595089 initial import
mandel
parents:
diff changeset
982 return mappedReduced(sequence, functor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
983 }
e78566595089 initial import
mandel
parents:
diff changeset
984
e78566595089 initial import
mandel
parents:
diff changeset
985 /**
e78566595089 initial import
mandel
parents:
diff changeset
986 * Calls mapFunction once for each item in sequence. The return value of each mapFunction is passed to reduceFunction.
e78566595089 initial import
mandel
parents:
diff changeset
987 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
988 * Note that while mapFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is determined by reduceOptions.
e78566595089 initial import
mandel
parents:
diff changeset
989 *
e78566595089 initial import
mandel
parents:
diff changeset
990 */
e78566595089 initial import
mandel
parents:
diff changeset
991 public static <U, V, T> QFuture<U> mappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, ReduceOptions options) {
e78566595089 initial import
mandel
parents:
diff changeset
992 return mappedReduced(sequence, functor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
993 }
e78566595089 initial import
mandel
parents:
diff changeset
994
e78566595089 initial import
mandel
parents:
diff changeset
995 private native static <U, V, T> QFuture<U> mappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, int options);
e78566595089 initial import
mandel
parents:
diff changeset
996
e78566595089 initial import
mandel
parents:
diff changeset
997
e78566595089 initial import
mandel
parents:
diff changeset
998 /**
e78566595089 initial import
mandel
parents:
diff changeset
999 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
1000 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1001 * It is equivalent of calling blockingMappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce)
e78566595089 initial import
mandel
parents:
diff changeset
1002 *
e78566595089 initial import
mandel
parents:
diff changeset
1003 */
e78566595089 initial import
mandel
parents:
diff changeset
1004 public static <U, V, T> U blockingMappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor) {
e78566595089 initial import
mandel
parents:
diff changeset
1005 return blockingMappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
1006 }
e78566595089 initial import
mandel
parents:
diff changeset
1007
e78566595089 initial import
mandel
parents:
diff changeset
1008 /**
e78566595089 initial import
mandel
parents:
diff changeset
1009 * Calls mapFunction once for each item in sequence. The return value of each mapFunction is passed to reduceFunction.
e78566595089 initial import
mandel
parents:
diff changeset
1010 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1011 * Note that while mapFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is determined by reduceOptions.
e78566595089 initial import
mandel
parents:
diff changeset
1012 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1013 * Note: This function will block until all items in the sequence have been processed.
e78566595089 initial import
mandel
parents:
diff changeset
1014 */
e78566595089 initial import
mandel
parents:
diff changeset
1015 public static <U, V, T> U blockingMappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, ReduceOption ... options) {
e78566595089 initial import
mandel
parents:
diff changeset
1016 return blockingMappedReduced(sequence, functor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
1017 }
e78566595089 initial import
mandel
parents:
diff changeset
1018
e78566595089 initial import
mandel
parents:
diff changeset
1019 /**
e78566595089 initial import
mandel
parents:
diff changeset
1020 * Calls mapFunction once for each item in sequence. The return value of each mapFunction is passed to reduceFunction.
e78566595089 initial import
mandel
parents:
diff changeset
1021 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1022 * Note that while mapFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is determined by reduceOptions.
e78566595089 initial import
mandel
parents:
diff changeset
1023 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1024 * Note: This function will block until all items in the sequence have been processed.
e78566595089 initial import
mandel
parents:
diff changeset
1025 */
e78566595089 initial import
mandel
parents:
diff changeset
1026 public static <U, V, T> U blockingMappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, ReduceOptions options) {
e78566595089 initial import
mandel
parents:
diff changeset
1027 return blockingMappedReduced(sequence, functor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
1028 }
e78566595089 initial import
mandel
parents:
diff changeset
1029
e78566595089 initial import
mandel
parents:
diff changeset
1030 private native static <U, V, T> U blockingMappedReduced(java.util.Collection<T> sequence, MappedFunctor<V, T> functor, ReducedFunctor<U, V> reducedFunctor, int options);
e78566595089 initial import
mandel
parents:
diff changeset
1031
e78566595089 initial import
mandel
parents:
diff changeset
1032 /**
e78566595089 initial import
mandel
parents:
diff changeset
1033 * An implementation of this interface is given to one of QtConcurrent's filtered() methods.
e78566595089 initial import
mandel
parents:
diff changeset
1034 * The filter method if this interface is called for each item in a java.util.Collection.
e78566595089 initial import
mandel
parents:
diff changeset
1035 *
e78566595089 initial import
mandel
parents:
diff changeset
1036 */
e78566595089 initial import
mandel
parents:
diff changeset
1037 public interface FilteredFunctor<T> {
e78566595089 initial import
mandel
parents:
diff changeset
1038
e78566595089 initial import
mandel
parents:
diff changeset
1039 /**
e78566595089 initial import
mandel
parents:
diff changeset
1040 * This method is called for each item in a java.util.Collection. The items for which
e78566595089 initial import
mandel
parents:
diff changeset
1041 * this method returns true are removed from the collection.
e78566595089 initial import
mandel
parents:
diff changeset
1042 */
e78566595089 initial import
mandel
parents:
diff changeset
1043 public boolean filter(T object);
e78566595089 initial import
mandel
parents:
diff changeset
1044 }
e78566595089 initial import
mandel
parents:
diff changeset
1045
e78566595089 initial import
mandel
parents:
diff changeset
1046 /**
e78566595089 initial import
mandel
parents:
diff changeset
1047 * Calls filterFunctor's filtered() method once for each item in sequence and returns a new Sequence of kept items. If filterFunction returns true, a copy of the item is put in the new Sequence. Otherwise, the item will not appear in the new Sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1048 */
e78566595089 initial import
mandel
parents:
diff changeset
1049 public native static <T> QFuture<T> filtered(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor);
e78566595089 initial import
mandel
parents:
diff changeset
1050
e78566595089 initial import
mandel
parents:
diff changeset
1051 /**
e78566595089 initial import
mandel
parents:
diff changeset
1052 * Calls filterFunctor's filtered() method once for each item in sequence and returns a new Sequence of kept items. If filterFunction returns true, a copy of the item is put in the new Sequence. Otherwise, the item will not appear in the new Sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1053 */
e78566595089 initial import
mandel
parents:
diff changeset
1054 public native static <T> java.util.List<T> blockingFiltered(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor);
e78566595089 initial import
mandel
parents:
diff changeset
1055
e78566595089 initial import
mandel
parents:
diff changeset
1056
e78566595089 initial import
mandel
parents:
diff changeset
1057 /**
e78566595089 initial import
mandel
parents:
diff changeset
1058 * This is an overloaded method provided for convenience. It is equivalent of calling filteredReduced(sequence, filteredFunctor, ReduceOption.UnorderedReduce, ReduceOption.Seq This is an overloaded method provided for convenience. It is equivalent of calling filteredReduced)
e78566595089 initial import
mandel
parents:
diff changeset
1059 */
e78566595089 initial import
mandel
parents:
diff changeset
1060 public static <U, T> QFuture<U> filteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor) {
e78566595089 initial import
mandel
parents:
diff changeset
1061 return filteredReduced(sequence, filteredFunctor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
1062 }
e78566595089 initial import
mandel
parents:
diff changeset
1063
e78566595089 initial import
mandel
parents:
diff changeset
1064 /**
e78566595089 initial import
mandel
parents:
diff changeset
1065 * Calls filterFunction once for each item in sequence. If filterFunction returns true for an item, that item is then passed to reduceFunction. In other words, the return value is the result of reduceFunction for each item where filterFunction returns true.
e78566595089 initial import
mandel
parents:
diff changeset
1066 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1067 * Note that while filterFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is undefined if reduceOptions is QtConcurrent::UnorderedReduce. If reduceOptions is QtConcurrent::OrderedReduce, reduceFunction is called in the order of the original sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1068 */
e78566595089 initial import
mandel
parents:
diff changeset
1069 public static <U, T> QFuture<U> filteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, ReduceOption ... options) {
e78566595089 initial import
mandel
parents:
diff changeset
1070 return filteredReduced(sequence, filteredFunctor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
1071 }
e78566595089 initial import
mandel
parents:
diff changeset
1072
e78566595089 initial import
mandel
parents:
diff changeset
1073 /**
e78566595089 initial import
mandel
parents:
diff changeset
1074 * Calls filterFunction once for each item in sequence. If filterFunction returns true for an item, that item is then passed to reduceFunction. In other words, the return value is the result of reduceFunction for each item where filterFunction returns true.
e78566595089 initial import
mandel
parents:
diff changeset
1075 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1076 * Note that while filterFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is undefined if reduceOptions is QtConcurrent::UnorderedReduce. If reduceOptions is QtConcurrent::OrderedReduce, reduceFunction is called in the order of the original sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1077 */
e78566595089 initial import
mandel
parents:
diff changeset
1078 public static <U, T> QFuture<U> filteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, ReduceOptions options) {
e78566595089 initial import
mandel
parents:
diff changeset
1079 return filteredReduced(sequence, filteredFunctor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
1080 }
e78566595089 initial import
mandel
parents:
diff changeset
1081 private native static <U, T> QFuture<U> filteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, int options);
e78566595089 initial import
mandel
parents:
diff changeset
1082
e78566595089 initial import
mandel
parents:
diff changeset
1083 /**
e78566595089 initial import
mandel
parents:
diff changeset
1084 * This is an overloaded method provided for convenience. It is the equivalent of calling blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce)
e78566595089 initial import
mandel
parents:
diff changeset
1085 */
e78566595089 initial import
mandel
parents:
diff changeset
1086 public static <U, T> U blockingFilteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor) {
e78566595089 initial import
mandel
parents:
diff changeset
1087 return blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
1088 }
e78566595089 initial import
mandel
parents:
diff changeset
1089
e78566595089 initial import
mandel
parents:
diff changeset
1090 /**
e78566595089 initial import
mandel
parents:
diff changeset
1091 * Calls filterFunction once for each item in sequence. If filterFunction returns true for an item, that item is then passed to reduceFunction. In other words, the return value is the result of reduceFunction for each item where filterFunction returns true.
e78566595089 initial import
mandel
parents:
diff changeset
1092 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1093 * Note that while filterFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is undefined if reduceOptions is QtConcurrent::UnorderedReduce. If reduceOptions is QtConcurrent::OrderedReduce, reduceFunction is called in the order of the original sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1094 */
e78566595089 initial import
mandel
parents:
diff changeset
1095 public static <U, T> U blockingFilteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, ReduceOption ... options) {
e78566595089 initial import
mandel
parents:
diff changeset
1096 return blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
1097 }
e78566595089 initial import
mandel
parents:
diff changeset
1098
e78566595089 initial import
mandel
parents:
diff changeset
1099 /**
e78566595089 initial import
mandel
parents:
diff changeset
1100 * Calls filterFunction once for each item in sequence. If filterFunction returns true for an item, that item is then passed to reduceFunction. In other words, the return value is the result of reduceFunction for each item where filterFunction returns true.
e78566595089 initial import
mandel
parents:
diff changeset
1101 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1102 * Note that while filterFunction is called concurrently, only one thread at a time will call reduceFunction. The order in which reduceFunction is called is undefined if reduceOptions is QtConcurrent::UnorderedReduce. If reduceOptions is QtConcurrent::OrderedReduce, reduceFunction is called in the order of the original sequence.
e78566595089 initial import
mandel
parents:
diff changeset
1103 */
e78566595089 initial import
mandel
parents:
diff changeset
1104 public static <U, T> U blockingFilteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, ReduceOptions options) {
e78566595089 initial import
mandel
parents:
diff changeset
1105 return blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
1106 }
e78566595089 initial import
mandel
parents:
diff changeset
1107
e78566595089 initial import
mandel
parents:
diff changeset
1108 private native static <U, T> U blockingFilteredReduced(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor, ReducedFunctor<U, T> reducedFunctor, int options);
e78566595089 initial import
mandel
parents:
diff changeset
1109
e78566595089 initial import
mandel
parents:
diff changeset
1110 /**
e78566595089 initial import
mandel
parents:
diff changeset
1111 * Executes the method <tt>m</tt> through the QtConcurrent framework with the given arguments. The returned QFuture object's result wil be the
e78566595089 initial import
mandel
parents:
diff changeset
1112 * return value of <tt>m</tt>. Note that this method does not accept function that return void. use runVoidMethod() for this.
e78566595089 initial import
mandel
parents:
diff changeset
1113 */
e78566595089 initial import
mandel
parents:
diff changeset
1114 public static <T> QFuture<T> run(Object _this, java.lang.reflect.Method m, Object ... args) {
e78566595089 initial import
mandel
parents:
diff changeset
1115 if (m.getReturnType() == null || m.getReturnType().equals(Void.TYPE))
e78566595089 initial import
mandel
parents:
diff changeset
1116 throw new IllegalArgumentException("Cannot call run on method returning void. Use 'runVoidMethod' instead.");
e78566595089 initial import
mandel
parents:
diff changeset
1117
e78566595089 initial import
mandel
parents:
diff changeset
1118 return runPrivate(_this, m.getDeclaringClass(), m, args, qt.internal.QtJambiInternal.resolveConversionSchema(m.getParameterTypes(), m.getParameterTypes()), qt.internal.QtJambiInternal.typeConversionCode(m.getReturnType()));
e78566595089 initial import
mandel
parents:
diff changeset
1119 }
e78566595089 initial import
mandel
parents:
diff changeset
1120 private native static <T> QFuture<T> runPrivate(Object _this, Class<?> declaringClass, java.lang.reflect.Method m, Object args[], int conversionScheme[], byte returnType);
e78566595089 initial import
mandel
parents:
diff changeset
1121
e78566595089 initial import
mandel
parents:
diff changeset
1122 /**
e78566595089 initial import
mandel
parents:
diff changeset
1123 * Executes the method <tt>m</tt> with the given arguments using the QtConcurrent framework. Notice that runVoidMethod() does not
e78566595089 initial import
mandel
parents:
diff changeset
1124 * accept methods that has a return value. Use the run() method for this purpose.
e78566595089 initial import
mandel
parents:
diff changeset
1125 */
e78566595089 initial import
mandel
parents:
diff changeset
1126 public static QFutureVoid runVoidMethod(Object _this, java.lang.reflect.Method m, Object ... args) {
e78566595089 initial import
mandel
parents:
diff changeset
1127 if (m.getReturnType() != null && !m.getReturnType().equals(Void.TYPE))
e78566595089 initial import
mandel
parents:
diff changeset
1128 throw new IllegalArgumentException("Cannot call runVoidMethod on method returning non-void type. Use 'run' instead.");
e78566595089 initial import
mandel
parents:
diff changeset
1129
e78566595089 initial import
mandel
parents:
diff changeset
1130 return runVoidMethodPrivate(_this, m.getDeclaringClass(), m, args, qt.internal.QtJambiInternal.resolveConversionSchema(m.getParameterTypes(), m.getParameterTypes()));
e78566595089 initial import
mandel
parents:
diff changeset
1131 }
e78566595089 initial import
mandel
parents:
diff changeset
1132 private native static QFutureVoid runVoidMethodPrivate(Object _this, Class<?> declaringClass, java.lang.reflect.Method m, Object args[], int conversionScheme[]);
e78566595089 initial import
mandel
parents:
diff changeset
1133
e78566595089 initial import
mandel
parents:
diff changeset
1134
e78566595089 initial import
mandel
parents:
diff changeset
1135 }// class