annotate generator/typesystem_core-java.java @ 184:7d9db724ee1d

QObject is now non GC'ed, to better integrate to Qt memory management
author eldar
date Sat, 04 Jul 2009 13:04:46 +0000
parents d3f4f14d43a5
children 4fcf7ba2a791
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.
e78566595089 initial import
mandel
parents:
diff changeset
25 *
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
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
49 public bool __stackAllocated = false;
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
50
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
51 public bool __qobject_is_deleting = false;
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
52
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
53 new(size_t size, void* p = null)
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
54 {
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
55 if (!p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
56 {
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
57 p = malloc(size);
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
58 if (!p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
59 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
60 GC.addRange(p, size);
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
61 }
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
62 return p;
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
63 }
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
64
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
65 delete(void* p)
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
66 {
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
67 if(p)
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
68 {
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
69 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
70 free(p);
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
71 GC.removeRange(p);
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
72 }
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
73 }
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
74 }
184
7d9db724ee1d QObject is now non GC'ed, to better integrate to Qt memory management
eldar
parents: 183
diff changeset
75
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
76 // list of QObjects references to prevent them from garbage collecting if they are managed by Qt
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
77 private static QObject[] __gc_ref_list;
1
e78566595089 initial import
mandel
parents:
diff changeset
78
e78566595089 initial import
mandel
parents:
diff changeset
79 // this flag controls whether QObject is managed by D's GC, or it has a parent and therefore managed by Qt
e78566595089 initial import
mandel
parents:
diff changeset
80 private bool __gc_managed = true;
183
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
81
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
82 // this flag needs to be set false when QObject is deleted from inside Qt so when deleting it from D it won't delete C++ object
d3f4f14d43a5 fixes with QObjects
eldar
parents: 180
diff changeset
83 public bool __no_real_delete = false;
1
e78566595089 initial import
mandel
parents:
diff changeset
84 }// class
e78566595089 initial import
mandel
parents:
diff changeset
85
e78566595089 initial import
mandel
parents:
diff changeset
86 abstract class QAbstractItemModel___ extends QAbstractItemModel {
e78566595089 initial import
mandel
parents:
diff changeset
87 /* private native boolean setData_native(long id, int row, int col, Object value, int role);
e78566595089 initial import
mandel
parents:
diff changeset
88
e78566595089 initial import
mandel
parents:
diff changeset
89 public final boolean setData(int row, int col, Object value) {
e78566595089 initial import
mandel
parents:
diff changeset
90 return setData_native(nativeId(), row, col, value, qt.core.Qt.ItemDataRole.DisplayRole);
e78566595089 initial import
mandel
parents:
diff changeset
91 }
e78566595089 initial import
mandel
parents:
diff changeset
92
e78566595089 initial import
mandel
parents:
diff changeset
93 public final boolean setData(int row, int col, Object value, int role) {
e78566595089 initial import
mandel
parents:
diff changeset
94 return setData_native(nativeId(), row, col, value, role);
e78566595089 initial import
mandel
parents:
diff changeset
95 }
e78566595089 initial import
mandel
parents:
diff changeset
96
e78566595089 initial import
mandel
parents:
diff changeset
97 private native Object data_native(long id, int row, int col, int role);
e78566595089 initial import
mandel
parents:
diff changeset
98
e78566595089 initial import
mandel
parents:
diff changeset
99 public final Object data(int row, int col, int role) {
e78566595089 initial import
mandel
parents:
diff changeset
100 return data_native(nativeId(), row, col, role);
e78566595089 initial import
mandel
parents:
diff changeset
101 }
e78566595089 initial import
mandel
parents:
diff changeset
102
e78566595089 initial import
mandel
parents:
diff changeset
103 public final Object data(int row, int col) {
e78566595089 initial import
mandel
parents:
diff changeset
104 return data_native(nativeId(), row, col, Qt.ItemDataRole.DisplayRole);
e78566595089 initial import
mandel
parents:
diff changeset
105 }*/
e78566595089 initial import
mandel
parents:
diff changeset
106 }// class
e78566595089 initial import
mandel
parents:
diff changeset
107
e78566595089 initial import
mandel
parents:
diff changeset
108 class QTimer___ extends QTimer {
e78566595089 initial import
mandel
parents:
diff changeset
109 static private class QSingleShotTimer extends QObject {
e78566595089 initial import
mandel
parents:
diff changeset
110 private int timerId = -1;
e78566595089 initial import
mandel
parents:
diff changeset
111 public Signal0 timeout = new Signal0();
e78566595089 initial import
mandel
parents:
diff changeset
112
e78566595089 initial import
mandel
parents:
diff changeset
113 public QSingleShotTimer(int msec, QObject obj, String method) {
e78566595089 initial import
mandel
parents:
diff changeset
114 super(obj);
e78566595089 initial import
mandel
parents:
diff changeset
115 timeout.connect(obj, method);
e78566595089 initial import
mandel
parents:
diff changeset
116 timerId = startTimer(msec);
e78566595089 initial import
mandel
parents:
diff changeset
117 }
e78566595089 initial import
mandel
parents:
diff changeset
118
e78566595089 initial import
mandel
parents:
diff changeset
119 protected void disposed() {
e78566595089 initial import
mandel
parents:
diff changeset
120 if (timerId > 0)
e78566595089 initial import
mandel
parents:
diff changeset
121 killTimer(timerId);
e78566595089 initial import
mandel
parents:
diff changeset
122 super.disposed();
e78566595089 initial import
mandel
parents:
diff changeset
123 }
e78566595089 initial import
mandel
parents:
diff changeset
124
e78566595089 initial import
mandel
parents:
diff changeset
125 protected void timerEvent(QTimerEvent e) {
e78566595089 initial import
mandel
parents:
diff changeset
126 if (timerId > 0)
e78566595089 initial import
mandel
parents:
diff changeset
127 killTimer(timerId);
e78566595089 initial import
mandel
parents:
diff changeset
128 timerId = -1;
e78566595089 initial import
mandel
parents:
diff changeset
129 timeout.emit();
e78566595089 initial import
mandel
parents:
diff changeset
130 disposeLater();
e78566595089 initial import
mandel
parents:
diff changeset
131 }
e78566595089 initial import
mandel
parents:
diff changeset
132 }
e78566595089 initial import
mandel
parents:
diff changeset
133
e78566595089 initial import
mandel
parents:
diff changeset
134 public static void singleShot(int msec, QObject obj, String method) {
e78566595089 initial import
mandel
parents:
diff changeset
135 new QSingleShotTimer(msec, obj, method);
e78566595089 initial import
mandel
parents:
diff changeset
136 }
e78566595089 initial import
mandel
parents:
diff changeset
137 }// class
e78566595089 initial import
mandel
parents:
diff changeset
138
e78566595089 initial import
mandel
parents:
diff changeset
139 class QCoreApplication___ extends QCoreApplication {
e78566595089 initial import
mandel
parents:
diff changeset
140
e78566595089 initial import
mandel
parents:
diff changeset
141 protected static QCoreApplication m_instance = null;
e78566595089 initial import
mandel
parents:
diff changeset
142
90
ba63040afbf2 wrapping of QBuffer and QProcess, fixed #9
eldar
parents: 56
diff changeset
143 this(in string[] args)
1
e78566595089 initial import
mandel
parents:
diff changeset
144 {
e78566595089 initial import
mandel
parents:
diff changeset
145 // if (m_instance != null)
e78566595089 initial import
mandel
parents:
diff changeset
146 // throw new RuntimeException("QCoreApplication can only be initialized once");
e78566595089 initial import
mandel
parents:
diff changeset
147
e78566595089 initial import
mandel
parents:
diff changeset
148 argc = args.length;
e78566595089 initial import
mandel
parents:
diff changeset
149 argv = toStringzArray(args);
e78566595089 initial import
mandel
parents:
diff changeset
150 this(&argc, argv);
e78566595089 initial import
mandel
parents:
diff changeset
151
e78566595089 initial import
mandel
parents:
diff changeset
152 // m_instance.aboutToQuit.connect(m_instance, "disposeOfMyself()");
e78566595089 initial import
mandel
parents:
diff changeset
153 }
e78566595089 initial import
mandel
parents:
diff changeset
154
e78566595089 initial import
mandel
parents:
diff changeset
155 private int argc;
e78566595089 initial import
mandel
parents:
diff changeset
156 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
157 /*
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
158 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
159 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
160 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
161 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
162 }
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
163
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
164 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
165 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
166 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
167 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
168 }
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 1
diff changeset
169 */
1
e78566595089 initial import
mandel
parents:
diff changeset
170 }// class
e78566595089 initial import
mandel
parents:
diff changeset
171
e78566595089 initial import
mandel
parents:
diff changeset
172 class QTranslator___ extends QTranslator {
e78566595089 initial import
mandel
parents:
diff changeset
173 public final bool load(ubyte[] data) {
e78566595089 initial import
mandel
parents:
diff changeset
174 return load(data.ptr, data.length);
e78566595089 initial import
mandel
parents:
diff changeset
175 }
e78566595089 initial import
mandel
parents:
diff changeset
176 }// class
e78566595089 initial import
mandel
parents:
diff changeset
177
e78566595089 initial import
mandel
parents:
diff changeset
178 class QProcess___ extends QProcess {
e78566595089 initial import
mandel
parents:
diff changeset
179
e78566595089 initial import
mandel
parents:
diff changeset
180 public static class DetachedProcessInfo {
e78566595089 initial import
mandel
parents:
diff changeset
181 public DetachedProcessInfo(boolean success, long pid) {
e78566595089 initial import
mandel
parents:
diff changeset
182 this.success = success;
e78566595089 initial import
mandel
parents:
diff changeset
183 this.pid = pid;
e78566595089 initial import
mandel
parents:
diff changeset
184 }
e78566595089 initial import
mandel
parents:
diff changeset
185
e78566595089 initial import
mandel
parents:
diff changeset
186 public boolean success;
e78566595089 initial import
mandel
parents:
diff changeset
187 public long pid;
e78566595089 initial import
mandel
parents:
diff changeset
188 }
e78566595089 initial import
mandel
parents:
diff changeset
189
e78566595089 initial import
mandel
parents:
diff changeset
190 public static DetachedProcessInfo startDetached(String program, java.util.List<String> arguments, String workingDirectory) {
e78566595089 initial import
mandel
parents:
diff changeset
191 QNativePointer pid = new QNativePointer(QNativePointer.Type.Long);
e78566595089 initial import
mandel
parents:
diff changeset
192 boolean success = startDetached(program, arguments, workingDirectory, pid);
e78566595089 initial import
mandel
parents:
diff changeset
193 return new DetachedProcessInfo(success, pid.longValue());
e78566595089 initial import
mandel
parents:
diff changeset
194 }
e78566595089 initial import
mandel
parents:
diff changeset
195 }// class
e78566595089 initial import
mandel
parents:
diff changeset
196
e78566595089 initial import
mandel
parents:
diff changeset
197 class QDataStream___ extends QDataStream {
e78566595089 initial import
mandel
parents:
diff changeset
198
e78566595089 initial import
mandel
parents:
diff changeset
199 public final bool readBoolean() {
e78566595089 initial import
mandel
parents:
diff changeset
200 bool res;
e78566595089 initial import
mandel
parents:
diff changeset
201 operator_shift_right_boolean(&res);
e78566595089 initial import
mandel
parents:
diff changeset
202 return res;
e78566595089 initial import
mandel
parents:
diff changeset
203 }
e78566595089 initial import
mandel
parents:
diff changeset
204
e78566595089 initial import
mandel
parents:
diff changeset
205 public final byte readByte() {
e78566595089 initial import
mandel
parents:
diff changeset
206 byte res;
e78566595089 initial import
mandel
parents:
diff changeset
207 operator_shift_right_byte(&res);
e78566595089 initial import
mandel
parents:
diff changeset
208 return res;
e78566595089 initial import
mandel
parents:
diff changeset
209 }
e78566595089 initial import
mandel
parents:
diff changeset
210
e78566595089 initial import
mandel
parents:
diff changeset
211 public final short readShort() {
e78566595089 initial import
mandel
parents:
diff changeset
212 short res;
e78566595089 initial import
mandel
parents:
diff changeset
213 operator_shift_right_short(&res);
e78566595089 initial import
mandel
parents:
diff changeset
214 return res;
e78566595089 initial import
mandel
parents:
diff changeset
215 }
e78566595089 initial import
mandel
parents:
diff changeset
216
e78566595089 initial import
mandel
parents:
diff changeset
217 public final int readInt() {
e78566595089 initial import
mandel
parents:
diff changeset
218 int res;
e78566595089 initial import
mandel
parents:
diff changeset
219 operator_shift_right_int(&res);
e78566595089 initial import
mandel
parents:
diff changeset
220 return res;
e78566595089 initial import
mandel
parents:
diff changeset
221 }
e78566595089 initial import
mandel
parents:
diff changeset
222
e78566595089 initial import
mandel
parents:
diff changeset
223 public final long readLong() {
e78566595089 initial import
mandel
parents:
diff changeset
224 long res;
e78566595089 initial import
mandel
parents:
diff changeset
225 operator_shift_right_long(&res);
e78566595089 initial import
mandel
parents:
diff changeset
226 return res;
e78566595089 initial import
mandel
parents:
diff changeset
227 }
e78566595089 initial import
mandel
parents:
diff changeset
228
e78566595089 initial import
mandel
parents:
diff changeset
229 public final ushort readChar() {
e78566595089 initial import
mandel
parents:
diff changeset
230 ushort res;
e78566595089 initial import
mandel
parents:
diff changeset
231 operator_shift_right_char(&res);
e78566595089 initial import
mandel
parents:
diff changeset
232 return res;
e78566595089 initial import
mandel
parents:
diff changeset
233 }
e78566595089 initial import
mandel
parents:
diff changeset
234
e78566595089 initial import
mandel
parents:
diff changeset
235 public final float readFloat() {
e78566595089 initial import
mandel
parents:
diff changeset
236 float res;
e78566595089 initial import
mandel
parents:
diff changeset
237 operator_shift_right_float(&res);
e78566595089 initial import
mandel
parents:
diff changeset
238 return res;
e78566595089 initial import
mandel
parents:
diff changeset
239 }
e78566595089 initial import
mandel
parents:
diff changeset
240
e78566595089 initial import
mandel
parents:
diff changeset
241 public final double readDouble() {
e78566595089 initial import
mandel
parents:
diff changeset
242 double res;
e78566595089 initial import
mandel
parents:
diff changeset
243 operator_shift_right_double(&res);
e78566595089 initial import
mandel
parents:
diff changeset
244 return res;
e78566595089 initial import
mandel
parents:
diff changeset
245 }
e78566595089 initial import
mandel
parents:
diff changeset
246
e78566595089 initial import
mandel
parents:
diff changeset
247 public final QDataStream writeShort(short s) {
e78566595089 initial import
mandel
parents:
diff changeset
248 writeShort_char(s);
e78566595089 initial import
mandel
parents:
diff changeset
249 return this;
e78566595089 initial import
mandel
parents:
diff changeset
250 }
e78566595089 initial import
mandel
parents:
diff changeset
251 /*
e78566595089 initial import
mandel
parents:
diff changeset
252 private static extern(C) void qtd_QDataStream_readString_private(void* __this_nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
253
e78566595089 initial import
mandel
parents:
diff changeset
254 private native void writeString_private(long nativeId, String string);
e78566595089 initial import
mandel
parents:
diff changeset
255
e78566595089 initial import
mandel
parents:
diff changeset
256 public final String readString() {
e78566595089 initial import
mandel
parents:
diff changeset
257 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
258 throw new QNoNativeResourcesException("Function call on incomplete object of type: " + getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
259 return readString_private(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
260 }
e78566595089 initial import
mandel
parents:
diff changeset
261
e78566595089 initial import
mandel
parents:
diff changeset
262 public final void writeString(String string) {
e78566595089 initial import
mandel
parents:
diff changeset
263 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
264 throw new QNoNativeResourcesException("Function call on incomplete object of type: " + getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
265 writeString_private(nativeId(), string);
e78566595089 initial import
mandel
parents:
diff changeset
266 }
e78566595089 initial import
mandel
parents:
diff changeset
267
e78566595089 initial import
mandel
parents:
diff changeset
268 private native int writeBytes(long id, byte buffer[], int length);
e78566595089 initial import
mandel
parents:
diff changeset
269
e78566595089 initial import
mandel
parents:
diff changeset
270 private native int readBytes(long id, byte buffer[], int length);
e78566595089 initial import
mandel
parents:
diff changeset
271
e78566595089 initial import
mandel
parents:
diff changeset
272 public final int writeBytes(byte buffer[]) {
e78566595089 initial import
mandel
parents:
diff changeset
273 return writeBytes(buffer, buffer.length);
e78566595089 initial import
mandel
parents:
diff changeset
274 }
e78566595089 initial import
mandel
parents:
diff changeset
275
e78566595089 initial import
mandel
parents:
diff changeset
276 public final int writeBytes(byte buffer[], int length) {
e78566595089 initial import
mandel
parents:
diff changeset
277 return writeBytes(nativeId(), buffer, length);
e78566595089 initial import
mandel
parents:
diff changeset
278 }
e78566595089 initial import
mandel
parents:
diff changeset
279
e78566595089 initial import
mandel
parents:
diff changeset
280 public final int readBytes(byte buffer[]) {
e78566595089 initial import
mandel
parents:
diff changeset
281 return readBytes(buffer, buffer.length);
e78566595089 initial import
mandel
parents:
diff changeset
282 }
e78566595089 initial import
mandel
parents:
diff changeset
283
e78566595089 initial import
mandel
parents:
diff changeset
284 public final int readBytes(byte buffer[], int length) {
e78566595089 initial import
mandel
parents:
diff changeset
285 return readBytes(nativeId(), buffer, length);
e78566595089 initial import
mandel
parents:
diff changeset
286 }
e78566595089 initial import
mandel
parents:
diff changeset
287 */
e78566595089 initial import
mandel
parents:
diff changeset
288 }// class
e78566595089 initial import
mandel
parents:
diff changeset
289
e78566595089 initial import
mandel
parents:
diff changeset
290 class QTextStream___ extends QTextStream {
e78566595089 initial import
mandel
parents:
diff changeset
291 /* public final void setCodec(String codecName) {
e78566595089 initial import
mandel
parents:
diff changeset
292 setCodec(QNativePointer.createCharPointer(codecName));
e78566595089 initial import
mandel
parents:
diff changeset
293 if (codec() != __rcCodec)
e78566595089 initial import
mandel
parents:
diff changeset
294 __rcCodec = null;
e78566595089 initial import
mandel
parents:
diff changeset
295 }
e78566595089 initial import
mandel
parents:
diff changeset
296
e78566595089 initial import
mandel
parents:
diff changeset
297 private QNativePointer srb = new QNativePointer(QNativePointer.Type.Byte, 32) {
e78566595089 initial import
mandel
parents:
diff changeset
298 {
e78566595089 initial import
mandel
parents:
diff changeset
299 setVerificationEnabled(false);
e78566595089 initial import
mandel
parents:
diff changeset
300 }
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 byte readByte() {
e78566595089 initial import
mandel
parents:
diff changeset
304 operator_shift_right_byte(srb);
e78566595089 initial import
mandel
parents:
diff changeset
305 return srb.byteValue();
e78566595089 initial import
mandel
parents:
diff changeset
306 }
e78566595089 initial import
mandel
parents:
diff changeset
307
e78566595089 initial import
mandel
parents:
diff changeset
308 public final short readShort() {
e78566595089 initial import
mandel
parents:
diff changeset
309 operator_shift_right_short(srb);
e78566595089 initial import
mandel
parents:
diff changeset
310 return srb.shortValue();
e78566595089 initial import
mandel
parents:
diff changeset
311 }
e78566595089 initial import
mandel
parents:
diff changeset
312
e78566595089 initial import
mandel
parents:
diff changeset
313 public final int readInt() {
e78566595089 initial import
mandel
parents:
diff changeset
314 operator_shift_right_int(srb);
e78566595089 initial import
mandel
parents:
diff changeset
315 return srb.intValue();
e78566595089 initial import
mandel
parents:
diff changeset
316 }
e78566595089 initial import
mandel
parents:
diff changeset
317
e78566595089 initial import
mandel
parents:
diff changeset
318 public final long readLong() {
e78566595089 initial import
mandel
parents:
diff changeset
319 operator_shift_right_long(srb);
e78566595089 initial import
mandel
parents:
diff changeset
320 return srb.longValue();
e78566595089 initial import
mandel
parents:
diff changeset
321 }
e78566595089 initial import
mandel
parents:
diff changeset
322
e78566595089 initial import
mandel
parents:
diff changeset
323 public final float readFloat() {
e78566595089 initial import
mandel
parents:
diff changeset
324 operator_shift_right_float(srb);
e78566595089 initial import
mandel
parents:
diff changeset
325 return srb.floatValue();
e78566595089 initial import
mandel
parents:
diff changeset
326 }
e78566595089 initial import
mandel
parents:
diff changeset
327
e78566595089 initial import
mandel
parents:
diff changeset
328 public final double readDouble() {
e78566595089 initial import
mandel
parents:
diff changeset
329 operator_shift_right_double(srb);
e78566595089 initial import
mandel
parents:
diff changeset
330 return srb.doubleValue();
e78566595089 initial import
mandel
parents:
diff changeset
331 }
e78566595089 initial import
mandel
parents:
diff changeset
332
e78566595089 initial import
mandel
parents:
diff changeset
333 public final QTextStream writeShort(short s) {
e78566595089 initial import
mandel
parents:
diff changeset
334 writeShort_char((char) s);
e78566595089 initial import
mandel
parents:
diff changeset
335 return this;
e78566595089 initial import
mandel
parents:
diff changeset
336 }
e78566595089 initial import
mandel
parents:
diff changeset
337
e78566595089 initial import
mandel
parents:
diff changeset
338 public final QTextStream writeChar(char c) {
e78566595089 initial import
mandel
parents:
diff changeset
339 writeShort_char(c);
e78566595089 initial import
mandel
parents:
diff changeset
340 return this;
e78566595089 initial import
mandel
parents:
diff changeset
341 }
e78566595089 initial import
mandel
parents:
diff changeset
342
e78566595089 initial import
mandel
parents:
diff changeset
343 public final char readChar() {
e78566595089 initial import
mandel
parents:
diff changeset
344 operator_shift_right_short(srb);
e78566595089 initial import
mandel
parents:
diff changeset
345 return srb.charValue();
e78566595089 initial import
mandel
parents:
diff changeset
346 }
e78566595089 initial import
mandel
parents:
diff changeset
347
e78566595089 initial import
mandel
parents:
diff changeset
348 public final String readString() {
e78566595089 initial import
mandel
parents:
diff changeset
349 return readString_native(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
350 }
e78566595089 initial import
mandel
parents:
diff changeset
351
e78566595089 initial import
mandel
parents:
diff changeset
352 public final void writeString(String string) {
e78566595089 initial import
mandel
parents:
diff changeset
353 writeString_native(nativeId(), string);
e78566595089 initial import
mandel
parents:
diff changeset
354 }
e78566595089 initial import
mandel
parents:
diff changeset
355
e78566595089 initial import
mandel
parents:
diff changeset
356 private final native String readString_native(long id);
e78566595089 initial import
mandel
parents:
diff changeset
357
e78566595089 initial import
mandel
parents:
diff changeset
358 private final native void writeString_native(long id, String string);
e78566595089 initial import
mandel
parents:
diff changeset
359 */
e78566595089 initial import
mandel
parents:
diff changeset
360 }// class
e78566595089 initial import
mandel
parents:
diff changeset
361
e78566595089 initial import
mandel
parents:
diff changeset
362 class QBitArray___ extends QBitArray {
e78566595089 initial import
mandel
parents:
diff changeset
363 /*
e78566595089 initial import
mandel
parents:
diff changeset
364 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
365 public final void xor(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
366 operator_xor_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
367 }
e78566595089 initial import
mandel
parents:
diff changeset
368
e78566595089 initial import
mandel
parents:
diff changeset
369 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
370 public final void and(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
371 operator_and_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
372 }
e78566595089 initial import
mandel
parents:
diff changeset
373
e78566595089 initial import
mandel
parents:
diff changeset
374 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
375 public final void or(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
376 operator_or_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
377 }
e78566595089 initial import
mandel
parents:
diff changeset
378
e78566595089 initial import
mandel
parents:
diff changeset
379 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
380 public final void set(QBitArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
381 operator_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
382 }
e78566595089 initial import
mandel
parents:
diff changeset
383
e78566595089 initial import
mandel
parents:
diff changeset
384 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
385 public final QBitArray inverted() {
e78566595089 initial import
mandel
parents:
diff changeset
386 return operator_negate();
e78566595089 initial import
mandel
parents:
diff changeset
387 }
e78566595089 initial import
mandel
parents:
diff changeset
388 */
e78566595089 initial import
mandel
parents:
diff changeset
389 }// class
e78566595089 initial import
mandel
parents:
diff changeset
390
e78566595089 initial import
mandel
parents:
diff changeset
391 // hfr
e78566595089 initial import
mandel
parents:
diff changeset
392
e78566595089 initial import
mandel
parents:
diff changeset
393 class QDate___ extends QDate {
e78566595089 initial import
mandel
parents:
diff changeset
394
e78566595089 initial import
mandel
parents:
diff changeset
395 public final int weekNumber() {
e78566595089 initial import
mandel
parents:
diff changeset
396 return weekNumber(null);
e78566595089 initial import
mandel
parents:
diff changeset
397 }
e78566595089 initial import
mandel
parents:
diff changeset
398
e78566595089 initial import
mandel
parents:
diff changeset
399 public final int yearOfWeekNumber() {
e78566595089 initial import
mandel
parents:
diff changeset
400 int np;
e78566595089 initial import
mandel
parents:
diff changeset
401 weekNumber(&np);
e78566595089 initial import
mandel
parents:
diff changeset
402 return np;
e78566595089 initial import
mandel
parents:
diff changeset
403 }
e78566595089 initial import
mandel
parents:
diff changeset
404
e78566595089 initial import
mandel
parents:
diff changeset
405 }// class
e78566595089 initial import
mandel
parents:
diff changeset
406
e78566595089 initial import
mandel
parents:
diff changeset
407 class QDir___ extends QDir {
e78566595089 initial import
mandel
parents:
diff changeset
408 /*
e78566595089 initial import
mandel
parents:
diff changeset
409 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
410 public String at(int i) {
e78566595089 initial import
mandel
parents:
diff changeset
411 return operator_subscript(i);
e78566595089 initial import
mandel
parents:
diff changeset
412 }
e78566595089 initial import
mandel
parents:
diff changeset
413 */
e78566595089 initial import
mandel
parents:
diff changeset
414 }// class
e78566595089 initial import
mandel
parents:
diff changeset
415
e78566595089 initial import
mandel
parents:
diff changeset
416 class QByteArray___ extends QByteArray {
e78566595089 initial import
mandel
parents:
diff changeset
417 public QByteArray(String s) {
e78566595089 initial import
mandel
parents:
diff changeset
418 this();
e78566595089 initial import
mandel
parents:
diff changeset
419 append(s);
e78566595089 initial import
mandel
parents:
diff changeset
420 }
e78566595089 initial import
mandel
parents:
diff changeset
421
e78566595089 initial import
mandel
parents:
diff changeset
422 public QByteArray(byte data[]) {
e78566595089 initial import
mandel
parents:
diff changeset
423 this(qt.internal.QtJambiInternal.byteArrayToNativePointer(data), data.length);
e78566595089 initial import
mandel
parents:
diff changeset
424 }
e78566595089 initial import
mandel
parents:
diff changeset
425
e78566595089 initial import
mandel
parents:
diff changeset
426 public final boolean contains(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
427 return contains(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
428 }
e78566595089 initial import
mandel
parents:
diff changeset
429
e78566595089 initial import
mandel
parents:
diff changeset
430 public final int count(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
431 return count(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
432 }
e78566595089 initial import
mandel
parents:
diff changeset
433
e78566595089 initial import
mandel
parents:
diff changeset
434 public final boolean endsWith(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
435 return endsWith(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
436 }
e78566595089 initial import
mandel
parents:
diff changeset
437
e78566595089 initial import
mandel
parents:
diff changeset
438 public final QByteArray prepend(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
439 return prepend(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
440 }
e78566595089 initial import
mandel
parents:
diff changeset
441
e78566595089 initial import
mandel
parents:
diff changeset
442 public final QByteArray replace(QByteArray before, String after) {
e78566595089 initial import
mandel
parents:
diff changeset
443 return replace(before, new QByteArray(after));
e78566595089 initial import
mandel
parents:
diff changeset
444 }
e78566595089 initial import
mandel
parents:
diff changeset
445
e78566595089 initial import
mandel
parents:
diff changeset
446 public final QByteArray replace(String before, String after) {
e78566595089 initial import
mandel
parents:
diff changeset
447 return replace(new QByteArray(before), new QByteArray(after));
e78566595089 initial import
mandel
parents:
diff changeset
448 }
e78566595089 initial import
mandel
parents:
diff changeset
449
e78566595089 initial import
mandel
parents:
diff changeset
450 public final boolean startsWith(String str) {
e78566595089 initial import
mandel
parents:
diff changeset
451 return startsWith(new QByteArray(str));
e78566595089 initial import
mandel
parents:
diff changeset
452 }
e78566595089 initial import
mandel
parents:
diff changeset
453
e78566595089 initial import
mandel
parents:
diff changeset
454 public final byte[] toByteArray() {
e78566595089 initial import
mandel
parents:
diff changeset
455 byte[] res = new byte[size()];
e78566595089 initial import
mandel
parents:
diff changeset
456
e78566595089 initial import
mandel
parents:
diff changeset
457 for (int i = 0; i < size(); i++) {
e78566595089 initial import
mandel
parents:
diff changeset
458 res[i] = at(i);
e78566595089 initial import
mandel
parents:
diff changeset
459 }
e78566595089 initial import
mandel
parents:
diff changeset
460 return res;
e78566595089 initial import
mandel
parents:
diff changeset
461 }
e78566595089 initial import
mandel
parents:
diff changeset
462
e78566595089 initial import
mandel
parents:
diff changeset
463 @qt.QtBlockedSlot
e78566595089 initial import
mandel
parents:
diff changeset
464 public final QByteArray set(QByteArray other) {
e78566595089 initial import
mandel
parents:
diff changeset
465 operator_assign(other);
e78566595089 initial import
mandel
parents:
diff changeset
466 return this;
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 class QFile___ extends QFile {
e78566595089 initial import
mandel
parents:
diff changeset
472 /*
e78566595089 initial import
mandel
parents:
diff changeset
473 public static String decodeName(String localFileName) {
e78566595089 initial import
mandel
parents:
diff changeset
474 return decodeName(qt.QNativePointer.createCharPointer(localFileName));
e78566595089 initial import
mandel
parents:
diff changeset
475 }
e78566595089 initial import
mandel
parents:
diff changeset
476 */
e78566595089 initial import
mandel
parents:
diff changeset
477 }// class
e78566595089 initial import
mandel
parents:
diff changeset
478
e78566595089 initial import
mandel
parents:
diff changeset
479 class QIODevice___ extends QIODevice {
e78566595089 initial import
mandel
parents:
diff changeset
480
e78566595089 initial import
mandel
parents:
diff changeset
481 /**
e78566595089 initial import
mandel
parents:
diff changeset
482 * Gets a byte from the device.
e78566595089 initial import
mandel
parents:
diff changeset
483 *
e78566595089 initial import
mandel
parents:
diff changeset
484 * @return -1 on failure, or the value of the byte on success
e78566595089 initial import
mandel
parents:
diff changeset
485 */
e78566595089 initial import
mandel
parents:
diff changeset
486 /* public final int getByte() {
e78566595089 initial import
mandel
parents:
diff changeset
487 QNativePointer np = new QNativePointer(QNativePointer.Type.Byte);
e78566595089 initial import
mandel
parents:
diff changeset
488 boolean success = getByte(np);
e78566595089 initial import
mandel
parents:
diff changeset
489 return success ? np.byteValue() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
490 }
e78566595089 initial import
mandel
parents:
diff changeset
491 */
180
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
492
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
493 public final long write(string str) {
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
494 return write(str.ptr, str.length);
39921f499a22 Fix #26
SokoL_SD
parents: 90
diff changeset
495 }
1
e78566595089 initial import
mandel
parents:
diff changeset
496 }// class
e78566595089 initial import
mandel
parents:
diff changeset
497
e78566595089 initial import
mandel
parents:
diff changeset
498 class QCryptographicHash___ extends QCryptographicHash {
e78566595089 initial import
mandel
parents:
diff changeset
499
e78566595089 initial import
mandel
parents:
diff changeset
500 public final void addData(byte data[]) {
e78566595089 initial import
mandel
parents:
diff changeset
501 QNativePointer np = qt.internal.QtJambiInternal.byteArrayToNativePointer(data);
e78566595089 initial import
mandel
parents:
diff changeset
502 addData(np, data.length);
e78566595089 initial import
mandel
parents:
diff changeset
503 }
e78566595089 initial import
mandel
parents:
diff changeset
504
e78566595089 initial import
mandel
parents:
diff changeset
505 }// class
e78566595089 initial import
mandel
parents:
diff changeset
506
e78566595089 initial import
mandel
parents:
diff changeset
507 class QTextCodec___ extends QTextCodec {
e78566595089 initial import
mandel
parents:
diff changeset
508 /*
e78566595089 initial import
mandel
parents:
diff changeset
509 static {
e78566595089 initial import
mandel
parents:
diff changeset
510 setCodecForTr(QTextCodec.codecForName("UTF-8"));
e78566595089 initial import
mandel
parents:
diff changeset
511 }
e78566595089 initial import
mandel
parents:
diff changeset
512
e78566595089 initial import
mandel
parents:
diff changeset
513 public static QTextCodec codecForName(String name) {
e78566595089 initial import
mandel
parents:
diff changeset
514 return codecForName(qt.QNativePointer.createCharPointer(name));
e78566595089 initial import
mandel
parents:
diff changeset
515 }
e78566595089 initial import
mandel
parents:
diff changeset
516 */
e78566595089 initial import
mandel
parents:
diff changeset
517 }// class
e78566595089 initial import
mandel
parents:
diff changeset
518
e78566595089 initial import
mandel
parents:
diff changeset
519 class QBuffer___ extends QBuffer {
e78566595089 initial import
mandel
parents:
diff changeset
520
e78566595089 initial import
mandel
parents:
diff changeset
521 // retain a reference to avoid gc
e78566595089 initial import
mandel
parents:
diff changeset
522 private Object strongDataReference = null;
e78566595089 initial import
mandel
parents:
diff changeset
523 public final void setBuffer(QByteArray byteArray) {
90
ba63040afbf2 wrapping of QBuffer and QProcess, fixed #9
eldar
parents: 56
diff changeset
524 setBuffer_private(byteArray);
1
e78566595089 initial import
mandel
parents:
diff changeset
525 strongDataReference = byteArray;
e78566595089 initial import
mandel
parents:
diff changeset
526 }
e78566595089 initial import
mandel
parents:
diff changeset
527
e78566595089 initial import
mandel
parents:
diff changeset
528 public final void setData(byte data[]) {
90
ba63040afbf2 wrapping of QBuffer and QProcess, fixed #9
eldar
parents: 56
diff changeset
529 setData(cast(char*)data.ptr, data.length);
1
e78566595089 initial import
mandel
parents:
diff changeset
530 }
e78566595089 initial import
mandel
parents:
diff changeset
531
e78566595089 initial import
mandel
parents:
diff changeset
532 }// class
e78566595089 initial import
mandel
parents:
diff changeset
533
e78566595089 initial import
mandel
parents:
diff changeset
534 class QSignalMapper___ extends QSignalMapper {
e78566595089 initial import
mandel
parents:
diff changeset
535
e78566595089 initial import
mandel
parents:
diff changeset
536 private java.util.Hashtable<QObject, QObject> __rcObjectForObject = new java.util.Hashtable<QObject, QObject>();
e78566595089 initial import
mandel
parents:
diff changeset
537
e78566595089 initial import
mandel
parents:
diff changeset
538 private java.util.Hashtable<QObject, Object> __rcWidgetForObject = new java.util.Hashtable<QObject, Object>();
e78566595089 initial import
mandel
parents:
diff changeset
539
e78566595089 initial import
mandel
parents:
diff changeset
540 }// class
e78566595089 initial import
mandel
parents:
diff changeset
541
e78566595089 initial import
mandel
parents:
diff changeset
542 class QAbstractFileEngine_MapExtensionReturn___ extends QAbstractFileEngine_MapExtensionReturn {
e78566595089 initial import
mandel
parents:
diff changeset
543 /* private QNativePointer currentAddressNativePointer; // don't garbage collect while in use
e78566595089 initial import
mandel
parents:
diff changeset
544 public final void setAddress(String address) {
e78566595089 initial import
mandel
parents:
diff changeset
545 currentAddressNativePointer = address != null ? QNativePointer.createCharPointer(address) : null;
e78566595089 initial import
mandel
parents:
diff changeset
546 address_private(currentAddressNativePointer);
e78566595089 initial import
mandel
parents:
diff changeset
547 }
e78566595089 initial import
mandel
parents:
diff changeset
548
e78566595089 initial import
mandel
parents:
diff changeset
549 public final String address() {
e78566595089 initial import
mandel
parents:
diff changeset
550 QNativePointer np = address_private();
e78566595089 initial import
mandel
parents:
diff changeset
551 return np != null ? qt.internal.QtJambiInternal.charPointerToString(np) : null;
e78566595089 initial import
mandel
parents:
diff changeset
552 }*/
e78566595089 initial import
mandel
parents:
diff changeset
553 }// class
e78566595089 initial import
mandel
parents:
diff changeset
554
e78566595089 initial import
mandel
parents:
diff changeset
555 class QAbstractFileEngine___ extends QAbstractFileEngine {
e78566595089 initial import
mandel
parents:
diff changeset
556 /**
e78566595089 initial import
mandel
parents:
diff changeset
557 * 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
558 * can be accessed using the "classpath:" scheme.
e78566595089 initial import
mandel
parents:
diff changeset
559 */
e78566595089 initial import
mandel
parents:
diff changeset
560 /* public static void addSearchPathForResourceEngine(String path)
e78566595089 initial import
mandel
parents:
diff changeset
561 {
e78566595089 initial import
mandel
parents:
diff changeset
562 qt.internal.QClassPathEngine.addSearchPath(path);
e78566595089 initial import
mandel
parents:
diff changeset
563 }
e78566595089 initial import
mandel
parents:
diff changeset
564 */
e78566595089 initial import
mandel
parents:
diff changeset
565 /**
e78566595089 initial import
mandel
parents:
diff changeset
566 * Removes <tt>path</tt> from the set of paths in which Qt Jambi searches
e78566595089 initial import
mandel
parents:
diff changeset
567 * for resources.
e78566595089 initial import
mandel
parents:
diff changeset
568 */
e78566595089 initial import
mandel
parents:
diff changeset
569 /* public static void removeSearchPathForResourceEngine(String path)
e78566595089 initial import
mandel
parents:
diff changeset
570 {
e78566595089 initial import
mandel
parents:
diff changeset
571 qt.internal.QClassPathEngine.removeSearchPath(path);
e78566595089 initial import
mandel
parents:
diff changeset
572 }
e78566595089 initial import
mandel
parents:
diff changeset
573 */
e78566595089 initial import
mandel
parents:
diff changeset
574 }// class
e78566595089 initial import
mandel
parents:
diff changeset
575
e78566595089 initial import
mandel
parents:
diff changeset
576 class QAbstractFileEngine_UnMapExtensionOption___ extends QAbstractFileEngine_UnMapExtensionOption {
e78566595089 initial import
mandel
parents:
diff changeset
577 private QNativePointer currentAddressNativePointer; // don't garbage collect while in use
e78566595089 initial import
mandel
parents:
diff changeset
578 public final void setAddress(String address) {
e78566595089 initial import
mandel
parents:
diff changeset
579 currentAddressNativePointer = address != null ? QNativePointer.createCharPointer(address) : null;
e78566595089 initial import
mandel
parents:
diff changeset
580 address_private(currentAddressNativePointer);
e78566595089 initial import
mandel
parents:
diff changeset
581 }
e78566595089 initial import
mandel
parents:
diff changeset
582
e78566595089 initial import
mandel
parents:
diff changeset
583 public final String address() {
e78566595089 initial import
mandel
parents:
diff changeset
584 QNativePointer np = address_private();
e78566595089 initial import
mandel
parents:
diff changeset
585 return np != null ? qt.internal.QtJambiInternal.charPointerToString(np) : null;
e78566595089 initial import
mandel
parents:
diff changeset
586 }
e78566595089 initial import
mandel
parents:
diff changeset
587 }// class
e78566595089 initial import
mandel
parents:
diff changeset
588
e78566595089 initial import
mandel
parents:
diff changeset
589 class QFutureWatcher___ extends QFutureWatcher {
e78566595089 initial import
mandel
parents:
diff changeset
590
e78566595089 initial import
mandel
parents:
diff changeset
591 public final QFuture<T> future() {
e78566595089 initial import
mandel
parents:
diff changeset
592 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
593 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
594 return __qt_future(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
595 }
e78566595089 initial import
mandel
parents:
diff changeset
596 private native QFuture<T> __qt_future(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
597
e78566595089 initial import
mandel
parents:
diff changeset
598 }// class
e78566595089 initial import
mandel
parents:
diff changeset
599
e78566595089 initial import
mandel
parents:
diff changeset
600 class QFutureWatcherVoid___ extends QFutureWatcherVoid {
e78566595089 initial import
mandel
parents:
diff changeset
601
e78566595089 initial import
mandel
parents:
diff changeset
602 public final QFutureVoid future() {
e78566595089 initial import
mandel
parents:
diff changeset
603 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
604 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
605 return __qt_future(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
606 }
e78566595089 initial import
mandel
parents:
diff changeset
607
e78566595089 initial import
mandel
parents:
diff changeset
608 private native QFutureVoid __qt_future(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
609
e78566595089 initial import
mandel
parents:
diff changeset
610 }// class
e78566595089 initial import
mandel
parents:
diff changeset
611
e78566595089 initial import
mandel
parents:
diff changeset
612 class QFutureSynchronizer___ extends QFutureSynchronizer {
e78566595089 initial import
mandel
parents:
diff changeset
613
e78566595089 initial import
mandel
parents:
diff changeset
614 public final java.util.List<QFuture<T>> futures() {
e78566595089 initial import
mandel
parents:
diff changeset
615 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
616 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
617 return __qt_futures(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
618 }
e78566595089 initial import
mandel
parents:
diff changeset
619 private native java.util.List<QFuture<T>> __qt_futures(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
620
e78566595089 initial import
mandel
parents:
diff changeset
621 }// class
e78566595089 initial import
mandel
parents:
diff changeset
622
e78566595089 initial import
mandel
parents:
diff changeset
623 class QFutureSynchronizerVoid___ extends QFutureSynchronizerVoid {
e78566595089 initial import
mandel
parents:
diff changeset
624
e78566595089 initial import
mandel
parents:
diff changeset
625 public final java.util.List<QFutureVoid> futures() {
e78566595089 initial import
mandel
parents:
diff changeset
626 if (nativeId() == 0)
e78566595089 initial import
mandel
parents:
diff changeset
627 throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
e78566595089 initial import
mandel
parents:
diff changeset
628 return __qt_futures(nativeId());
e78566595089 initial import
mandel
parents:
diff changeset
629 }
e78566595089 initial import
mandel
parents:
diff changeset
630 private native java.util.List<QFutureVoid> __qt_futures(long nativeId);
e78566595089 initial import
mandel
parents:
diff changeset
631
e78566595089 initial import
mandel
parents:
diff changeset
632 }// class
e78566595089 initial import
mandel
parents:
diff changeset
633
e78566595089 initial import
mandel
parents:
diff changeset
634 class QLineF___ extends QLineF {
e78566595089 initial import
mandel
parents:
diff changeset
635 /*
e78566595089 initial import
mandel
parents:
diff changeset
636 public final QLineF.IntersectType intersect(QLineF line, qt.core.QPointF intersectionPoint) {
e78566595089 initial import
mandel
parents:
diff changeset
637 return intersect(line, intersectionPoint != null ? intersectionPoint.nativePointer() : null);
e78566595089 initial import
mandel
parents:
diff changeset
638 }
e78566595089 initial import
mandel
parents:
diff changeset
639 */
e78566595089 initial import
mandel
parents:
diff changeset
640 }// class
e78566595089 initial import
mandel
parents:
diff changeset
641
e78566595089 initial import
mandel
parents:
diff changeset
642 /**
e78566595089 initial import
mandel
parents:
diff changeset
643 The QtConcurrent class contains static methods for running computations in parallel (using separate threads)
e78566595089 initial import
mandel
parents:
diff changeset
644 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
645
e78566595089 initial import
mandel
parents:
diff changeset
646 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
647 Concurrent Map
e78566595089 initial import
mandel
parents:
diff changeset
648 <p>
e78566595089 initial import
mandel
parents:
diff changeset
649 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
650 <p>
e78566595089 initial import
mandel
parents:
diff changeset
651 The map function must be of the form:
e78566595089 initial import
mandel
parents:
diff changeset
652 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
653 U function(const T &amp;t);
e78566595089 initial import
mandel
parents:
diff changeset
654 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
655 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
656 <p>
e78566595089 initial import
mandel
parents:
diff changeset
657 This example shows how to apply a scale function to all the items in a sequence:
e78566595089 initial import
mandel
parents:
diff changeset
658 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
659 QImage scaled(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
660 {
e78566595089 initial import
mandel
parents:
diff changeset
661 return image.scaled(100, 100);
e78566595089 initial import
mandel
parents:
diff changeset
662 }
e78566595089 initial import
mandel
parents:
diff changeset
663
e78566595089 initial import
mandel
parents:
diff changeset
664 QList &lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
665 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images, scaled);
e78566595089 initial import
mandel
parents:
diff changeset
666 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
667 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
668 <p>
e78566595089 initial import
mandel
parents:
diff changeset
669 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
670 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
671 U function(T &amp;t);
e78566595089 initial import
mandel
parents:
diff changeset
672 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
673 Note that the return value and return type of the map function are not used.
e78566595089 initial import
mandel
parents:
diff changeset
674 <p>
e78566595089 initial import
mandel
parents:
diff changeset
675 Using QtConcurrent::map() is similar to using QtConcurrent::mapped():
e78566595089 initial import
mandel
parents:
diff changeset
676 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
677 void scale(QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
678 {
e78566595089 initial import
mandel
parents:
diff changeset
679 image = image.scaled(100, 100);
e78566595089 initial import
mandel
parents:
diff changeset
680 }
e78566595089 initial import
mandel
parents:
diff changeset
681
e78566595089 initial import
mandel
parents:
diff changeset
682 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
683 QFuture&lt;void&gt; future = QtConcurrent::map(images, scale);
e78566595089 initial import
mandel
parents:
diff changeset
684 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
685 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
686 Concurrent Map-Reduce
e78566595089 initial import
mandel
parents:
diff changeset
687 <p>
e78566595089 initial import
mandel
parents:
diff changeset
688 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
689 <p>
e78566595089 initial import
mandel
parents:
diff changeset
690 The reduce function must be of the form:
e78566595089 initial import
mandel
parents:
diff changeset
691 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
692 V function(T &amp;result, const U &amp;intermediate)
e78566595089 initial import
mandel
parents:
diff changeset
693 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
694 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
695 <p>
e78566595089 initial import
mandel
parents:
diff changeset
696 Call QtConcurrent::mappedReduced() like this:
e78566595089 initial import
mandel
parents:
diff changeset
697 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
698 void addToCollage(QImage &amp;collage, const QImage &amp;thumbnail)
e78566595089 initial import
mandel
parents:
diff changeset
699 {
e78566595089 initial import
mandel
parents:
diff changeset
700 QPainter p(&amp;collage);
e78566595089 initial import
mandel
parents:
diff changeset
701 static QPoint offset = QPoint(0, 0);
e78566595089 initial import
mandel
parents:
diff changeset
702 p.drawImage(offset, thumbnail);
e78566595089 initial import
mandel
parents:
diff changeset
703 offset += ...;
e78566595089 initial import
mandel
parents:
diff changeset
704 }
e78566595089 initial import
mandel
parents:
diff changeset
705
e78566595089 initial import
mandel
parents:
diff changeset
706 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
707 QFuture&lt;QImage&gt; collage = QtConcurrent::mappedReduced(images, scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
708 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
709 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
710 Additional API Features
e78566595089 initial import
mandel
parents:
diff changeset
711 Using Iterators instead of Sequence
e78566595089 initial import
mandel
parents:
diff changeset
712 <p>
e78566595089 initial import
mandel
parents:
diff changeset
713 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
714 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
715 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
716
e78566595089 initial import
mandel
parents:
diff changeset
717 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images.constBegin(), images.constEnd(), scaled);
e78566595089 initial import
mandel
parents:
diff changeset
718
e78566595089 initial import
mandel
parents:
diff changeset
719 // map in-place only works on non-const iterators
e78566595089 initial import
mandel
parents:
diff changeset
720 QFuture&lt;void&gt; future = QtConcurrent::map(images.begin(), images.end(), scale);
e78566595089 initial import
mandel
parents:
diff changeset
721
e78566595089 initial import
mandel
parents:
diff changeset
722 QFuture&lt;QImage&gt; collage = QtConcurrent::mappedReduced(images.constBegin(), images.constEnd(), scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
723 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
724 Blocking Variants
e78566595089 initial import
mandel
parents:
diff changeset
725 <p>
e78566595089 initial import
mandel
parents:
diff changeset
726 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
727 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
728 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
729
e78566595089 initial import
mandel
parents:
diff changeset
730 // each call blocks until the entire operation is finished
e78566595089 initial import
mandel
parents:
diff changeset
731 QList&lt;QImage&gt; future = QtConcurrent::blockingMapped(images, scaled);
e78566595089 initial import
mandel
parents:
diff changeset
732
e78566595089 initial import
mandel
parents:
diff changeset
733 QtConcurrent::blockingMap(images, scale);
e78566595089 initial import
mandel
parents:
diff changeset
734
e78566595089 initial import
mandel
parents:
diff changeset
735 QImage collage = QtConcurrent::blockingMappedReduced(images, scaled, addToCollage);
e78566595089 initial import
mandel
parents:
diff changeset
736 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
737 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
738 Using Member Functions
e78566595089 initial import
mandel
parents:
diff changeset
739 <p>
e78566595089 initial import
mandel
parents:
diff changeset
740 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
741 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
742 // squeeze all strings in a QStringList
e78566595089 initial import
mandel
parents:
diff changeset
743 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
744 QFuture&lt;void&gt; squeezedStrings = QtConcurrent::map(strings, &amp;QString::squeeze);
e78566595089 initial import
mandel
parents:
diff changeset
745
e78566595089 initial import
mandel
parents:
diff changeset
746 // swap the rgb values of all pixels on a list of images
e78566595089 initial import
mandel
parents:
diff changeset
747 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
748 QFuture&lt;QImage&gt; bgrImages = QtConcurrent::mapped(images, &amp;QImage::rgbSwapped);
e78566595089 initial import
mandel
parents:
diff changeset
749
e78566595089 initial import
mandel
parents:
diff changeset
750 // create a set of the lengths of all strings in a list
e78566595089 initial import
mandel
parents:
diff changeset
751 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
752 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
753 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
754 Note that when using QtConcurrent::mappedReduced(), you can mix the use of normal and member functions freely:
e78566595089 initial import
mandel
parents:
diff changeset
755 <p>
e78566595089 initial import
mandel
parents:
diff changeset
756 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
757 // can mix normal functions and member functions with QtConcurrent::mappedReduced()
e78566595089 initial import
mandel
parents:
diff changeset
758
e78566595089 initial import
mandel
parents:
diff changeset
759 // compute the average length of a list of strings
e78566595089 initial import
mandel
parents:
diff changeset
760 extern void computeAverage(int &amp;average, int length);
e78566595089 initial import
mandel
parents:
diff changeset
761 QStringList strings = ...;
e78566595089 initial import
mandel
parents:
diff changeset
762 QFuture&lt;int&gt; averageWordLength = QtConcurrent::mappedReduced(strings, &amp;QString::length, computeAverage);
e78566595089 initial import
mandel
parents:
diff changeset
763
e78566595089 initial import
mandel
parents:
diff changeset
764 // create a set of the color distribution of all images in a list
e78566595089 initial import
mandel
parents:
diff changeset
765 extern int colorDistribution(const QImage &amp;string);
e78566595089 initial import
mandel
parents:
diff changeset
766 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
767 QFuture&lt;QSet&lt;int&gt; &gt; totalColorDistribution = QtConcurrent::mappedReduced(images, colorDistribution, QSet&lt;int&gt;::insert);
e78566595089 initial import
mandel
parents:
diff changeset
768 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
769 Using Function Objects
e78566595089 initial import
mandel
parents:
diff changeset
770 <p>
e78566595089 initial import
mandel
parents:
diff changeset
771 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
772 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
773 struct Scaled
e78566595089 initial import
mandel
parents:
diff changeset
774 {
e78566595089 initial import
mandel
parents:
diff changeset
775 Scaled(int size)
e78566595089 initial import
mandel
parents:
diff changeset
776 : m_size(size) { }
e78566595089 initial import
mandel
parents:
diff changeset
777
e78566595089 initial import
mandel
parents:
diff changeset
778 typedef QImage result_type;
e78566595089 initial import
mandel
parents:
diff changeset
779
e78566595089 initial import
mandel
parents:
diff changeset
780 QImage operator()(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
781 {
e78566595089 initial import
mandel
parents:
diff changeset
782 return image.scaled(m_size, m_size);
e78566595089 initial import
mandel
parents:
diff changeset
783 }
e78566595089 initial import
mandel
parents:
diff changeset
784
e78566595089 initial import
mandel
parents:
diff changeset
785 int m_size;
e78566595089 initial import
mandel
parents:
diff changeset
786 };
e78566595089 initial import
mandel
parents:
diff changeset
787
e78566595089 initial import
mandel
parents:
diff changeset
788 QList&lt;QImage&gt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
789 QFuture&lt;QImage&gt; thumbnails = QtConcurrent::mapped(images, Scaled(100));
e78566595089 initial import
mandel
parents:
diff changeset
790 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
791 Using Bound Function Arguments
e78566595089 initial import
mandel
parents:
diff changeset
792 <p>
e78566595089 initial import
mandel
parents:
diff changeset
793 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
794 <p>
e78566595089 initial import
mandel
parents:
diff changeset
795 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
796 <p>
e78566595089 initial import
mandel
parents:
diff changeset
797 As an example, we'll use QImage::scaledToWidth():
e78566595089 initial import
mandel
parents:
diff changeset
798 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
799 QImage QImage::scaledToWidth(int width, Qt::TransformationMode) const;
e78566595089 initial import
mandel
parents:
diff changeset
800 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
801 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
802 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
803 boost::bind(&amp;QImage::scaledToWidth, 100 Qt::SmoothTransformation)
e78566595089 initial import
mandel
parents:
diff changeset
804 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
805 The return value from boost::bind() is a function object (functor) with the following signature:
e78566595089 initial import
mandel
parents:
diff changeset
806 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
807 QImage scaledToWith(const QImage &amp;image)
e78566595089 initial import
mandel
parents:
diff changeset
808 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
809 This matches what QtConcurrent::mapped() expects, and the complete example becomes:
e78566595089 initial import
mandel
parents:
diff changeset
810 <pre>
e78566595089 initial import
mandel
parents:
diff changeset
811 QList&gt;QImage&lt; images = ...;
e78566595089 initial import
mandel
parents:
diff changeset
812 QFuture&gt;QImage&lt; thumbnails = QtConcurrent::mapped(images, boost::bind(&amp;QImage::scaledToWidth, 100 Qt::SmoothTransformation));
e78566595089 initial import
mandel
parents:
diff changeset
813 </pre>
e78566595089 initial import
mandel
parents:
diff changeset
814 */
e78566595089 initial import
mandel
parents:
diff changeset
815 class QtConcurrent___ extends QtConcurrent {
e78566595089 initial import
mandel
parents:
diff changeset
816
e78566595089 initial import
mandel
parents:
diff changeset
817 static {
e78566595089 initial import
mandel
parents:
diff changeset
818 qt.QtJambi_LibraryInitializer.init();
e78566595089 initial import
mandel
parents:
diff changeset
819 qt.core.QtJambi_LibraryInitializer.init();
e78566595089 initial import
mandel
parents:
diff changeset
820 }
e78566595089 initial import
mandel
parents:
diff changeset
821
e78566595089 initial import
mandel
parents:
diff changeset
822 /**
e78566595089 initial import
mandel
parents:
diff changeset
823 * An implemetation of this interface is given one to QtConcurrent's map() methods.
e78566595089 initial import
mandel
parents:
diff changeset
824 * The map() method of this interface is called for each object in a java.util.Collection.
e78566595089 initial import
mandel
parents:
diff changeset
825 *
e78566595089 initial import
mandel
parents:
diff changeset
826 */
e78566595089 initial import
mandel
parents:
diff changeset
827 public interface MapFunctor<T> {
e78566595089 initial import
mandel
parents:
diff changeset
828
e78566595089 initial import
mandel
parents:
diff changeset
829 /**
e78566595089 initial import
mandel
parents:
diff changeset
830 * 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
831 */
e78566595089 initial import
mandel
parents:
diff changeset
832 public void map(T object);
e78566595089 initial import
mandel
parents:
diff changeset
833 }
e78566595089 initial import
mandel
parents:
diff changeset
834 /**
e78566595089 initial import
mandel
parents:
diff changeset
835 * 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
836 */
e78566595089 initial import
mandel
parents:
diff changeset
837 public static native <T> QFutureVoid map(java.util.Collection<T> sequence, MapFunctor<T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
838
e78566595089 initial import
mandel
parents:
diff changeset
839 /**
e78566595089 initial import
mandel
parents:
diff changeset
840 * 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
841 */
e78566595089 initial import
mandel
parents:
diff changeset
842 public static native <T> void blockingMap(java.util.Collection<T> sequence, MapFunctor<T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
843
e78566595089 initial import
mandel
parents:
diff changeset
844 /**
e78566595089 initial import
mandel
parents:
diff changeset
845 * Implement this interface to perform a mapped operation. An implementation of the interface is sendt
e78566595089 initial import
mandel
parents:
diff changeset
846 * 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
847 * and returns the result.
e78566595089 initial import
mandel
parents:
diff changeset
848 */
e78566595089 initial import
mandel
parents:
diff changeset
849 public interface MappedFunctor<U, T> {
e78566595089 initial import
mandel
parents:
diff changeset
850
e78566595089 initial import
mandel
parents:
diff changeset
851 /**
e78566595089 initial import
mandel
parents:
diff changeset
852 * This method is called for each object in a collection. It should returned a new altered
e78566595089 initial import
mandel
parents:
diff changeset
853 * object.
e78566595089 initial import
mandel
parents:
diff changeset
854 */
e78566595089 initial import
mandel
parents:
diff changeset
855 public U map(T object);
e78566595089 initial import
mandel
parents:
diff changeset
856 }
e78566595089 initial import
mandel
parents:
diff changeset
857
e78566595089 initial import
mandel
parents:
diff changeset
858 /**
e78566595089 initial import
mandel
parents:
diff changeset
859 * 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
860 *
e78566595089 initial import
mandel
parents:
diff changeset
861 */
e78566595089 initial import
mandel
parents:
diff changeset
862 public static native <U, T> QFuture<U> mapped(java.util.Collection<T> sequence, MappedFunctor<U, T> functor);
e78566595089 initial import
mandel
parents:
diff changeset
863
e78566595089 initial import
mandel
parents:
diff changeset
864 /**
e78566595089 initial import
mandel
parents:
diff changeset
865 * 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
866 */
e78566595089 initial import
mandel
parents:
diff changeset
867 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
868
e78566595089 initial import
mandel
parents:
diff changeset
869 /**
e78566595089 initial import
mandel
parents:
diff changeset
870 * Implement this interface in order to perform a reduce operation.
e78566595089 initial import
mandel
parents:
diff changeset
871 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
872 * 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
873 * 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
874 * the returned value of the defaultResult() method.
e78566595089 initial import
mandel
parents:
diff changeset
875 */
e78566595089 initial import
mandel
parents:
diff changeset
876 public interface ReducedFunctor<U, T> {
e78566595089 initial import
mandel
parents:
diff changeset
877 public U defaultResult();
e78566595089 initial import
mandel
parents:
diff changeset
878
e78566595089 initial import
mandel
parents:
diff changeset
879 /**
e78566595089 initial import
mandel
parents:
diff changeset
880 * Performs a reduce operation on <tt>intermediate</tt>. <tt>result</tt> is the result of the reduction.
e78566595089 initial import
mandel
parents:
diff changeset
881 */
e78566595089 initial import
mandel
parents:
diff changeset
882 public void reduce(U result, T intermediate);
e78566595089 initial import
mandel
parents:
diff changeset
883 }
e78566595089 initial import
mandel
parents:
diff changeset
884
e78566595089 initial import
mandel
parents:
diff changeset
885 /**
e78566595089 initial import
mandel
parents:
diff changeset
886 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
887 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
888 * It is equivalent of mappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce)
e78566595089 initial import
mandel
parents:
diff changeset
889 */
e78566595089 initial import
mandel
parents:
diff changeset
890 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
891 return mappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
892 }
e78566595089 initial import
mandel
parents:
diff changeset
893
e78566595089 initial import
mandel
parents:
diff changeset
894
e78566595089 initial import
mandel
parents:
diff changeset
895 /**
e78566595089 initial import
mandel
parents:
diff changeset
896 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
897 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
898 * 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
899 *
e78566595089 initial import
mandel
parents:
diff changeset
900 */
e78566595089 initial import
mandel
parents:
diff changeset
901 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
902 return mappedReduced(sequence, functor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
903 }
e78566595089 initial import
mandel
parents:
diff changeset
904
e78566595089 initial import
mandel
parents:
diff changeset
905 /**
e78566595089 initial import
mandel
parents:
diff changeset
906 * 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
907 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
908 * 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
909 *
e78566595089 initial import
mandel
parents:
diff changeset
910 */
e78566595089 initial import
mandel
parents:
diff changeset
911 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
912 return mappedReduced(sequence, functor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
913 }
e78566595089 initial import
mandel
parents:
diff changeset
914
e78566595089 initial import
mandel
parents:
diff changeset
915 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
916
e78566595089 initial import
mandel
parents:
diff changeset
917
e78566595089 initial import
mandel
parents:
diff changeset
918 /**
e78566595089 initial import
mandel
parents:
diff changeset
919 * This is an overloaded method provided for convenience.
e78566595089 initial import
mandel
parents:
diff changeset
920 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
921 * It is equivalent of calling blockingMappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce)
e78566595089 initial import
mandel
parents:
diff changeset
922 *
e78566595089 initial import
mandel
parents:
diff changeset
923 */
e78566595089 initial import
mandel
parents:
diff changeset
924 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
925 return blockingMappedReduced(sequence, functor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
926 }
e78566595089 initial import
mandel
parents:
diff changeset
927
e78566595089 initial import
mandel
parents:
diff changeset
928 /**
e78566595089 initial import
mandel
parents:
diff changeset
929 * 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
930 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
931 * 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
932 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
933 * Note: This function will block until all items in the sequence have been processed.
e78566595089 initial import
mandel
parents:
diff changeset
934 */
e78566595089 initial import
mandel
parents:
diff changeset
935 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
936 return blockingMappedReduced(sequence, functor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
937 }
e78566595089 initial import
mandel
parents:
diff changeset
938
e78566595089 initial import
mandel
parents:
diff changeset
939 /**
e78566595089 initial import
mandel
parents:
diff changeset
940 * 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
941 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
942 * 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
943 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
944 * Note: This function will block until all items in the sequence have been processed.
e78566595089 initial import
mandel
parents:
diff changeset
945 */
e78566595089 initial import
mandel
parents:
diff changeset
946 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
947 return blockingMappedReduced(sequence, functor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
948 }
e78566595089 initial import
mandel
parents:
diff changeset
949
e78566595089 initial import
mandel
parents:
diff changeset
950 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
951
e78566595089 initial import
mandel
parents:
diff changeset
952 /**
e78566595089 initial import
mandel
parents:
diff changeset
953 * An implementation of this interface is given to one of QtConcurrent's filtered() methods.
e78566595089 initial import
mandel
parents:
diff changeset
954 * The filter method if this interface is called for each item in a java.util.Collection.
e78566595089 initial import
mandel
parents:
diff changeset
955 *
e78566595089 initial import
mandel
parents:
diff changeset
956 */
e78566595089 initial import
mandel
parents:
diff changeset
957 public interface FilteredFunctor<T> {
e78566595089 initial import
mandel
parents:
diff changeset
958
e78566595089 initial import
mandel
parents:
diff changeset
959 /**
e78566595089 initial import
mandel
parents:
diff changeset
960 * This method is called for each item in a java.util.Collection. The items for which
e78566595089 initial import
mandel
parents:
diff changeset
961 * this method returns true are removed from the collection.
e78566595089 initial import
mandel
parents:
diff changeset
962 */
e78566595089 initial import
mandel
parents:
diff changeset
963 public boolean filter(T object);
e78566595089 initial import
mandel
parents:
diff changeset
964 }
e78566595089 initial import
mandel
parents:
diff changeset
965
e78566595089 initial import
mandel
parents:
diff changeset
966 /**
e78566595089 initial import
mandel
parents:
diff changeset
967 * 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
968 */
e78566595089 initial import
mandel
parents:
diff changeset
969 public native static <T> QFuture<T> filtered(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor);
e78566595089 initial import
mandel
parents:
diff changeset
970
e78566595089 initial import
mandel
parents:
diff changeset
971 /**
e78566595089 initial import
mandel
parents:
diff changeset
972 * 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
973 */
e78566595089 initial import
mandel
parents:
diff changeset
974 public native static <T> java.util.List<T> blockingFiltered(java.util.Collection<T> sequence, FilteredFunctor<T> filteredFunctor);
e78566595089 initial import
mandel
parents:
diff changeset
975
e78566595089 initial import
mandel
parents:
diff changeset
976
e78566595089 initial import
mandel
parents:
diff changeset
977 /**
e78566595089 initial import
mandel
parents:
diff changeset
978 * 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
979 */
e78566595089 initial import
mandel
parents:
diff changeset
980 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
981 return filteredReduced(sequence, filteredFunctor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
982 }
e78566595089 initial import
mandel
parents:
diff changeset
983
e78566595089 initial import
mandel
parents:
diff changeset
984 /**
e78566595089 initial import
mandel
parents:
diff changeset
985 * 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
986 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
987 * 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
988 */
e78566595089 initial import
mandel
parents:
diff changeset
989 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
990 return filteredReduced(sequence, filteredFunctor, reducedFunctor, new ReduceOptions(options));
e78566595089 initial import
mandel
parents:
diff changeset
991 }
e78566595089 initial import
mandel
parents:
diff changeset
992
e78566595089 initial import
mandel
parents:
diff changeset
993 /**
e78566595089 initial import
mandel
parents:
diff changeset
994 * 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
995 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
996 * 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
997 */
e78566595089 initial import
mandel
parents:
diff changeset
998 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
999 return filteredReduced(sequence, filteredFunctor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
1000 }
e78566595089 initial import
mandel
parents:
diff changeset
1001 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
1002
e78566595089 initial import
mandel
parents:
diff changeset
1003 /**
e78566595089 initial import
mandel
parents:
diff changeset
1004 * 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
1005 */
e78566595089 initial import
mandel
parents:
diff changeset
1006 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
1007 return blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, ReduceOption.UnorderedReduce, ReduceOption.SequentialReduce);
e78566595089 initial import
mandel
parents:
diff changeset
1008 }
e78566595089 initial import
mandel
parents:
diff changeset
1009
e78566595089 initial import
mandel
parents:
diff changeset
1010 /**
e78566595089 initial import
mandel
parents:
diff changeset
1011 * 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
1012 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1013 * 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
1014 */
e78566595089 initial import
mandel
parents:
diff changeset
1015 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
1016 return blockingFilteredReduced(sequence, filteredFunctor, 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 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
1021 * <p>
e78566595089 initial import
mandel
parents:
diff changeset
1022 * 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
1023 */
e78566595089 initial import
mandel
parents:
diff changeset
1024 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
1025 return blockingFilteredReduced(sequence, filteredFunctor, reducedFunctor, options.value());
e78566595089 initial import
mandel
parents:
diff changeset
1026 }
e78566595089 initial import
mandel
parents:
diff changeset
1027
e78566595089 initial import
mandel
parents:
diff changeset
1028 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
1029
e78566595089 initial import
mandel
parents:
diff changeset
1030 /**
e78566595089 initial import
mandel
parents:
diff changeset
1031 * 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
1032 * 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
1033 */
e78566595089 initial import
mandel
parents:
diff changeset
1034 public static <T> QFuture<T> run(Object _this, java.lang.reflect.Method m, Object ... args) {
e78566595089 initial import
mandel
parents:
diff changeset
1035 if (m.getReturnType() == null || m.getReturnType().equals(Void.TYPE))
e78566595089 initial import
mandel
parents:
diff changeset
1036 throw new IllegalArgumentException("Cannot call run on method returning void. Use 'runVoidMethod' instead.");
e78566595089 initial import
mandel
parents:
diff changeset
1037
e78566595089 initial import
mandel
parents:
diff changeset
1038 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
1039 }
e78566595089 initial import
mandel
parents:
diff changeset
1040 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
1041
e78566595089 initial import
mandel
parents:
diff changeset
1042 /**
e78566595089 initial import
mandel
parents:
diff changeset
1043 * 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
1044 * accept methods that has a return value. Use the run() method for this purpose.
e78566595089 initial import
mandel
parents:
diff changeset
1045 */
e78566595089 initial import
mandel
parents:
diff changeset
1046 public static QFutureVoid runVoidMethod(Object _this, java.lang.reflect.Method m, Object ... args) {
e78566595089 initial import
mandel
parents:
diff changeset
1047 if (m.getReturnType() != null && !m.getReturnType().equals(Void.TYPE))
e78566595089 initial import
mandel
parents:
diff changeset
1048 throw new IllegalArgumentException("Cannot call runVoidMethod on method returning non-void type. Use 'run' instead.");
e78566595089 initial import
mandel
parents:
diff changeset
1049
e78566595089 initial import
mandel
parents:
diff changeset
1050 return runVoidMethodPrivate(_this, m.getDeclaringClass(), m, args, qt.internal.QtJambiInternal.resolveConversionSchema(m.getParameterTypes(), m.getParameterTypes()));
e78566595089 initial import
mandel
parents:
diff changeset
1051 }
e78566595089 initial import
mandel
parents:
diff changeset
1052 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
1053
e78566595089 initial import
mandel
parents:
diff changeset
1054
e78566595089 initial import
mandel
parents:
diff changeset
1055 }// class