1 /*******************************************************************************
2  * Copyright (c) 2000, 2020 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *    IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 
15 /* Note: This file was auto-generated by org.eclipse.swt.tools.internal.JNIGenerator */
16 /* DO NOT EDIT - your changes will be lost. */
17 
18 #include "swt.h"
19 #include "os_structs.h"
20 
21 #ifndef NO_ACCEL
22 typedef struct ACCEL_FID_CACHE {
23 	int cached;
24 	jclass clazz;
25 	jfieldID fVirt, key, cmd;
26 } ACCEL_FID_CACHE;
27 
28 ACCEL_FID_CACHE ACCELFc;
29 
cacheACCELFields(JNIEnv * env,jobject lpObject)30 void cacheACCELFields(JNIEnv *env, jobject lpObject)
31 {
32 	if (ACCELFc.cached) return;
33 	ACCELFc.clazz = (*env)->GetObjectClass(env, lpObject);
34 	ACCELFc.fVirt = (*env)->GetFieldID(env, ACCELFc.clazz, "fVirt", "B");
35 	ACCELFc.key = (*env)->GetFieldID(env, ACCELFc.clazz, "key", "S");
36 	ACCELFc.cmd = (*env)->GetFieldID(env, ACCELFc.clazz, "cmd", "S");
37 	ACCELFc.cached = 1;
38 }
39 
getACCELFields(JNIEnv * env,jobject lpObject,ACCEL * lpStruct)40 ACCEL *getACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)
41 {
42 	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);
43 	lpStruct->fVirt = (*env)->GetByteField(env, lpObject, ACCELFc.fVirt);
44 	lpStruct->key = (*env)->GetShortField(env, lpObject, ACCELFc.key);
45 	lpStruct->cmd = (*env)->GetShortField(env, lpObject, ACCELFc.cmd);
46 	return lpStruct;
47 }
48 
setACCELFields(JNIEnv * env,jobject lpObject,ACCEL * lpStruct)49 void setACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)
50 {
51 	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);
52 	(*env)->SetByteField(env, lpObject, ACCELFc.fVirt, (jbyte)lpStruct->fVirt);
53 	(*env)->SetShortField(env, lpObject, ACCELFc.key, (jshort)lpStruct->key);
54 	(*env)->SetShortField(env, lpObject, ACCELFc.cmd, (jshort)lpStruct->cmd);
55 }
56 #endif
57 
58 #ifndef NO_ACTCTX
59 typedef struct ACTCTX_FID_CACHE {
60 	int cached;
61 	jclass clazz;
62 	jfieldID cbSize, dwFlags, lpSource, wProcessorArchitecture, wLangId, lpAssemblyDirectory, lpResourceName, lpApplicationName, hModule;
63 } ACTCTX_FID_CACHE;
64 
65 ACTCTX_FID_CACHE ACTCTXFc;
66 
cacheACTCTXFields(JNIEnv * env,jobject lpObject)67 void cacheACTCTXFields(JNIEnv *env, jobject lpObject)
68 {
69 	if (ACTCTXFc.cached) return;
70 	ACTCTXFc.clazz = (*env)->GetObjectClass(env, lpObject);
71 	ACTCTXFc.cbSize = (*env)->GetFieldID(env, ACTCTXFc.clazz, "cbSize", "I");
72 	ACTCTXFc.dwFlags = (*env)->GetFieldID(env, ACTCTXFc.clazz, "dwFlags", "I");
73 	ACTCTXFc.lpSource = (*env)->GetFieldID(env, ACTCTXFc.clazz, "lpSource", "J");
74 	ACTCTXFc.wProcessorArchitecture = (*env)->GetFieldID(env, ACTCTXFc.clazz, "wProcessorArchitecture", "S");
75 	ACTCTXFc.wLangId = (*env)->GetFieldID(env, ACTCTXFc.clazz, "wLangId", "S");
76 	ACTCTXFc.lpAssemblyDirectory = (*env)->GetFieldID(env, ACTCTXFc.clazz, "lpAssemblyDirectory", "J");
77 	ACTCTXFc.lpResourceName = (*env)->GetFieldID(env, ACTCTXFc.clazz, "lpResourceName", "J");
78 	ACTCTXFc.lpApplicationName = (*env)->GetFieldID(env, ACTCTXFc.clazz, "lpApplicationName", "J");
79 	ACTCTXFc.hModule = (*env)->GetFieldID(env, ACTCTXFc.clazz, "hModule", "J");
80 	ACTCTXFc.cached = 1;
81 }
82 
getACTCTXFields(JNIEnv * env,jobject lpObject,ACTCTX * lpStruct)83 ACTCTX *getACTCTXFields(JNIEnv *env, jobject lpObject, ACTCTX *lpStruct)
84 {
85 	if (!ACTCTXFc.cached) cacheACTCTXFields(env, lpObject);
86 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, ACTCTXFc.cbSize);
87 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, ACTCTXFc.dwFlags);
88 	lpStruct->lpSource = (LPCTSTR)(*env)->GetLongField(env, lpObject, ACTCTXFc.lpSource);
89 	lpStruct->wProcessorArchitecture = (*env)->GetShortField(env, lpObject, ACTCTXFc.wProcessorArchitecture);
90 	lpStruct->wLangId = (*env)->GetShortField(env, lpObject, ACTCTXFc.wLangId);
91 	lpStruct->lpAssemblyDirectory = (LPCTSTR)(*env)->GetLongField(env, lpObject, ACTCTXFc.lpAssemblyDirectory);
92 	lpStruct->lpResourceName = (LPCTSTR)(*env)->GetLongField(env, lpObject, ACTCTXFc.lpResourceName);
93 	lpStruct->lpApplicationName = (LPCTSTR)(*env)->GetLongField(env, lpObject, ACTCTXFc.lpApplicationName);
94 	lpStruct->hModule = (HMODULE)(*env)->GetLongField(env, lpObject, ACTCTXFc.hModule);
95 	return lpStruct;
96 }
97 
setACTCTXFields(JNIEnv * env,jobject lpObject,ACTCTX * lpStruct)98 void setACTCTXFields(JNIEnv *env, jobject lpObject, ACTCTX *lpStruct)
99 {
100 	if (!ACTCTXFc.cached) cacheACTCTXFields(env, lpObject);
101 	(*env)->SetIntField(env, lpObject, ACTCTXFc.cbSize, (jint)lpStruct->cbSize);
102 	(*env)->SetIntField(env, lpObject, ACTCTXFc.dwFlags, (jint)lpStruct->dwFlags);
103 	(*env)->SetLongField(env, lpObject, ACTCTXFc.lpSource, (jlong)lpStruct->lpSource);
104 	(*env)->SetShortField(env, lpObject, ACTCTXFc.wProcessorArchitecture, (jshort)lpStruct->wProcessorArchitecture);
105 	(*env)->SetShortField(env, lpObject, ACTCTXFc.wLangId, (jshort)lpStruct->wLangId);
106 	(*env)->SetLongField(env, lpObject, ACTCTXFc.lpAssemblyDirectory, (jlong)lpStruct->lpAssemblyDirectory);
107 	(*env)->SetLongField(env, lpObject, ACTCTXFc.lpResourceName, (jlong)lpStruct->lpResourceName);
108 	(*env)->SetLongField(env, lpObject, ACTCTXFc.lpApplicationName, (jlong)lpStruct->lpApplicationName);
109 	(*env)->SetLongField(env, lpObject, ACTCTXFc.hModule, (jlong)lpStruct->hModule);
110 }
111 #endif
112 
113 #ifndef NO_BITMAP
114 typedef struct BITMAP_FID_CACHE {
115 	int cached;
116 	jclass clazz;
117 	jfieldID bmType, bmWidth, bmHeight, bmWidthBytes, bmPlanes, bmBitsPixel, bmBits;
118 } BITMAP_FID_CACHE;
119 
120 BITMAP_FID_CACHE BITMAPFc;
121 
cacheBITMAPFields(JNIEnv * env,jobject lpObject)122 void cacheBITMAPFields(JNIEnv *env, jobject lpObject)
123 {
124 	if (BITMAPFc.cached) return;
125 	BITMAPFc.clazz = (*env)->GetObjectClass(env, lpObject);
126 	BITMAPFc.bmType = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmType", "I");
127 	BITMAPFc.bmWidth = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidth", "I");
128 	BITMAPFc.bmHeight = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmHeight", "I");
129 	BITMAPFc.bmWidthBytes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidthBytes", "I");
130 	BITMAPFc.bmPlanes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmPlanes", "S");
131 	BITMAPFc.bmBitsPixel = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBitsPixel", "S");
132 	BITMAPFc.bmBits = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBits", "J");
133 	BITMAPFc.cached = 1;
134 }
135 
getBITMAPFields(JNIEnv * env,jobject lpObject,BITMAP * lpStruct)136 BITMAP *getBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)
137 {
138 	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);
139 	lpStruct->bmType = (*env)->GetIntField(env, lpObject, BITMAPFc.bmType);
140 	lpStruct->bmWidth = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidth);
141 	lpStruct->bmHeight = (*env)->GetIntField(env, lpObject, BITMAPFc.bmHeight);
142 	lpStruct->bmWidthBytes = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidthBytes);
143 	lpStruct->bmPlanes = (*env)->GetShortField(env, lpObject, BITMAPFc.bmPlanes);
144 	lpStruct->bmBitsPixel = (*env)->GetShortField(env, lpObject, BITMAPFc.bmBitsPixel);
145 	lpStruct->bmBits = (LPVOID)(*env)->GetLongField(env, lpObject, BITMAPFc.bmBits);
146 	return lpStruct;
147 }
148 
setBITMAPFields(JNIEnv * env,jobject lpObject,BITMAP * lpStruct)149 void setBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)
150 {
151 	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);
152 	(*env)->SetIntField(env, lpObject, BITMAPFc.bmType, (jint)lpStruct->bmType);
153 	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidth, (jint)lpStruct->bmWidth);
154 	(*env)->SetIntField(env, lpObject, BITMAPFc.bmHeight, (jint)lpStruct->bmHeight);
155 	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidthBytes, (jint)lpStruct->bmWidthBytes);
156 	(*env)->SetShortField(env, lpObject, BITMAPFc.bmPlanes, (jshort)lpStruct->bmPlanes);
157 	(*env)->SetShortField(env, lpObject, BITMAPFc.bmBitsPixel, (jshort)lpStruct->bmBitsPixel);
158 	(*env)->SetLongField(env, lpObject, BITMAPFc.bmBits, (jlong)lpStruct->bmBits);
159 }
160 #endif
161 
162 #ifndef NO_BITMAPINFOHEADER
163 typedef struct BITMAPINFOHEADER_FID_CACHE {
164 	int cached;
165 	jclass clazz;
166 	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant;
167 } BITMAPINFOHEADER_FID_CACHE;
168 
169 BITMAPINFOHEADER_FID_CACHE BITMAPINFOHEADERFc;
170 
cacheBITMAPINFOHEADERFields(JNIEnv * env,jobject lpObject)171 void cacheBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject)
172 {
173 	if (BITMAPINFOHEADERFc.cached) return;
174 	BITMAPINFOHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);
175 	BITMAPINFOHEADERFc.biSize = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSize", "I");
176 	BITMAPINFOHEADERFc.biWidth = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biWidth", "I");
177 	BITMAPINFOHEADERFc.biHeight = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biHeight", "I");
178 	BITMAPINFOHEADERFc.biPlanes = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biPlanes", "S");
179 	BITMAPINFOHEADERFc.biBitCount = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biBitCount", "S");
180 	BITMAPINFOHEADERFc.biCompression = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biCompression", "I");
181 	BITMAPINFOHEADERFc.biSizeImage = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSizeImage", "I");
182 	BITMAPINFOHEADERFc.biXPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biXPelsPerMeter", "I");
183 	BITMAPINFOHEADERFc.biYPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biYPelsPerMeter", "I");
184 	BITMAPINFOHEADERFc.biClrUsed = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrUsed", "I");
185 	BITMAPINFOHEADERFc.biClrImportant = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrImportant", "I");
186 	BITMAPINFOHEADERFc.cached = 1;
187 }
188 
getBITMAPINFOHEADERFields(JNIEnv * env,jobject lpObject,BITMAPINFOHEADER * lpStruct)189 BITMAPINFOHEADER *getBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)
190 {
191 	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);
192 	lpStruct->biSize = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize);
193 	lpStruct->biWidth = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth);
194 	lpStruct->biHeight = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight);
195 	lpStruct->biPlanes = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes);
196 	lpStruct->biBitCount = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount);
197 	lpStruct->biCompression = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression);
198 	lpStruct->biSizeImage = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage);
199 	lpStruct->biXPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter);
200 	lpStruct->biYPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter);
201 	lpStruct->biClrUsed = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed);
202 	lpStruct->biClrImportant = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant);
203 	return lpStruct;
204 }
205 
setBITMAPINFOHEADERFields(JNIEnv * env,jobject lpObject,BITMAPINFOHEADER * lpStruct)206 void setBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)
207 {
208 	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);
209 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize, (jint)lpStruct->biSize);
210 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth, (jint)lpStruct->biWidth);
211 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight, (jint)lpStruct->biHeight);
212 	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes, (jshort)lpStruct->biPlanes);
213 	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount, (jshort)lpStruct->biBitCount);
214 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression, (jint)lpStruct->biCompression);
215 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage, (jint)lpStruct->biSizeImage);
216 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter, (jint)lpStruct->biXPelsPerMeter);
217 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter, (jint)lpStruct->biYPelsPerMeter);
218 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed, (jint)lpStruct->biClrUsed);
219 	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant, (jint)lpStruct->biClrImportant);
220 }
221 #endif
222 
223 #ifndef NO_BLENDFUNCTION
224 typedef struct BLENDFUNCTION_FID_CACHE {
225 	int cached;
226 	jclass clazz;
227 	jfieldID BlendOp, BlendFlags, SourceConstantAlpha, AlphaFormat;
228 } BLENDFUNCTION_FID_CACHE;
229 
230 BLENDFUNCTION_FID_CACHE BLENDFUNCTIONFc;
231 
cacheBLENDFUNCTIONFields(JNIEnv * env,jobject lpObject)232 void cacheBLENDFUNCTIONFields(JNIEnv *env, jobject lpObject)
233 {
234 	if (BLENDFUNCTIONFc.cached) return;
235 	BLENDFUNCTIONFc.clazz = (*env)->GetObjectClass(env, lpObject);
236 	BLENDFUNCTIONFc.BlendOp = (*env)->GetFieldID(env, BLENDFUNCTIONFc.clazz, "BlendOp", "B");
237 	BLENDFUNCTIONFc.BlendFlags = (*env)->GetFieldID(env, BLENDFUNCTIONFc.clazz, "BlendFlags", "B");
238 	BLENDFUNCTIONFc.SourceConstantAlpha = (*env)->GetFieldID(env, BLENDFUNCTIONFc.clazz, "SourceConstantAlpha", "B");
239 	BLENDFUNCTIONFc.AlphaFormat = (*env)->GetFieldID(env, BLENDFUNCTIONFc.clazz, "AlphaFormat", "B");
240 	BLENDFUNCTIONFc.cached = 1;
241 }
242 
getBLENDFUNCTIONFields(JNIEnv * env,jobject lpObject,BLENDFUNCTION * lpStruct)243 BLENDFUNCTION *getBLENDFUNCTIONFields(JNIEnv *env, jobject lpObject, BLENDFUNCTION *lpStruct)
244 {
245 	if (!BLENDFUNCTIONFc.cached) cacheBLENDFUNCTIONFields(env, lpObject);
246 	lpStruct->BlendOp = (*env)->GetByteField(env, lpObject, BLENDFUNCTIONFc.BlendOp);
247 	lpStruct->BlendFlags = (*env)->GetByteField(env, lpObject, BLENDFUNCTIONFc.BlendFlags);
248 	lpStruct->SourceConstantAlpha = (*env)->GetByteField(env, lpObject, BLENDFUNCTIONFc.SourceConstantAlpha);
249 	lpStruct->AlphaFormat = (*env)->GetByteField(env, lpObject, BLENDFUNCTIONFc.AlphaFormat);
250 	return lpStruct;
251 }
252 
setBLENDFUNCTIONFields(JNIEnv * env,jobject lpObject,BLENDFUNCTION * lpStruct)253 void setBLENDFUNCTIONFields(JNIEnv *env, jobject lpObject, BLENDFUNCTION *lpStruct)
254 {
255 	if (!BLENDFUNCTIONFc.cached) cacheBLENDFUNCTIONFields(env, lpObject);
256 	(*env)->SetByteField(env, lpObject, BLENDFUNCTIONFc.BlendOp, (jbyte)lpStruct->BlendOp);
257 	(*env)->SetByteField(env, lpObject, BLENDFUNCTIONFc.BlendFlags, (jbyte)lpStruct->BlendFlags);
258 	(*env)->SetByteField(env, lpObject, BLENDFUNCTIONFc.SourceConstantAlpha, (jbyte)lpStruct->SourceConstantAlpha);
259 	(*env)->SetByteField(env, lpObject, BLENDFUNCTIONFc.AlphaFormat, (jbyte)lpStruct->AlphaFormat);
260 }
261 #endif
262 
263 #ifndef NO_BP_PAINTPARAMS
264 typedef struct BP_PAINTPARAMS_FID_CACHE {
265 	int cached;
266 	jclass clazz;
267 	jfieldID cbSize, dwFlags, prcExclude, pBlendFunction;
268 } BP_PAINTPARAMS_FID_CACHE;
269 
270 BP_PAINTPARAMS_FID_CACHE BP_PAINTPARAMSFc;
271 
cacheBP_PAINTPARAMSFields(JNIEnv * env,jobject lpObject)272 void cacheBP_PAINTPARAMSFields(JNIEnv *env, jobject lpObject)
273 {
274 	if (BP_PAINTPARAMSFc.cached) return;
275 	BP_PAINTPARAMSFc.clazz = (*env)->GetObjectClass(env, lpObject);
276 	BP_PAINTPARAMSFc.cbSize = (*env)->GetFieldID(env, BP_PAINTPARAMSFc.clazz, "cbSize", "I");
277 	BP_PAINTPARAMSFc.dwFlags = (*env)->GetFieldID(env, BP_PAINTPARAMSFc.clazz, "dwFlags", "I");
278 	BP_PAINTPARAMSFc.prcExclude = (*env)->GetFieldID(env, BP_PAINTPARAMSFc.clazz, "prcExclude", "J");
279 	BP_PAINTPARAMSFc.pBlendFunction = (*env)->GetFieldID(env, BP_PAINTPARAMSFc.clazz, "pBlendFunction", "J");
280 	BP_PAINTPARAMSFc.cached = 1;
281 }
282 
getBP_PAINTPARAMSFields(JNIEnv * env,jobject lpObject,BP_PAINTPARAMS * lpStruct)283 BP_PAINTPARAMS *getBP_PAINTPARAMSFields(JNIEnv *env, jobject lpObject, BP_PAINTPARAMS *lpStruct)
284 {
285 	if (!BP_PAINTPARAMSFc.cached) cacheBP_PAINTPARAMSFields(env, lpObject);
286 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, BP_PAINTPARAMSFc.cbSize);
287 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, BP_PAINTPARAMSFc.dwFlags);
288 	lpStruct->prcExclude = (RECT*)(*env)->GetLongField(env, lpObject, BP_PAINTPARAMSFc.prcExclude);
289 	lpStruct->pBlendFunction = (BLENDFUNCTION*)(*env)->GetLongField(env, lpObject, BP_PAINTPARAMSFc.pBlendFunction);
290 	return lpStruct;
291 }
292 
setBP_PAINTPARAMSFields(JNIEnv * env,jobject lpObject,BP_PAINTPARAMS * lpStruct)293 void setBP_PAINTPARAMSFields(JNIEnv *env, jobject lpObject, BP_PAINTPARAMS *lpStruct)
294 {
295 	if (!BP_PAINTPARAMSFc.cached) cacheBP_PAINTPARAMSFields(env, lpObject);
296 	(*env)->SetIntField(env, lpObject, BP_PAINTPARAMSFc.cbSize, (jint)lpStruct->cbSize);
297 	(*env)->SetIntField(env, lpObject, BP_PAINTPARAMSFc.dwFlags, (jint)lpStruct->dwFlags);
298 	(*env)->SetLongField(env, lpObject, BP_PAINTPARAMSFc.prcExclude, (jlong)lpStruct->prcExclude);
299 	(*env)->SetLongField(env, lpObject, BP_PAINTPARAMSFc.pBlendFunction, (jlong)lpStruct->pBlendFunction);
300 }
301 #endif
302 
303 #ifndef NO_BUTTON_IMAGELIST
304 typedef struct BUTTON_IMAGELIST_FID_CACHE {
305 	int cached;
306 	jclass clazz;
307 	jfieldID himl, margin_left, margin_top, margin_right, margin_bottom, uAlign;
308 } BUTTON_IMAGELIST_FID_CACHE;
309 
310 BUTTON_IMAGELIST_FID_CACHE BUTTON_IMAGELISTFc;
311 
cacheBUTTON_IMAGELISTFields(JNIEnv * env,jobject lpObject)312 void cacheBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject)
313 {
314 	if (BUTTON_IMAGELISTFc.cached) return;
315 	BUTTON_IMAGELISTFc.clazz = (*env)->GetObjectClass(env, lpObject);
316 	BUTTON_IMAGELISTFc.himl = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "himl", "J");
317 	BUTTON_IMAGELISTFc.margin_left = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_left", "I");
318 	BUTTON_IMAGELISTFc.margin_top = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_top", "I");
319 	BUTTON_IMAGELISTFc.margin_right = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_right", "I");
320 	BUTTON_IMAGELISTFc.margin_bottom = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "margin_bottom", "I");
321 	BUTTON_IMAGELISTFc.uAlign = (*env)->GetFieldID(env, BUTTON_IMAGELISTFc.clazz, "uAlign", "I");
322 	BUTTON_IMAGELISTFc.cached = 1;
323 }
324 
getBUTTON_IMAGELISTFields(JNIEnv * env,jobject lpObject,BUTTON_IMAGELIST * lpStruct)325 BUTTON_IMAGELIST *getBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct)
326 {
327 	if (!BUTTON_IMAGELISTFc.cached) cacheBUTTON_IMAGELISTFields(env, lpObject);
328 	lpStruct->himl = (HIMAGELIST)(*env)->GetLongField(env, lpObject, BUTTON_IMAGELISTFc.himl);
329 	lpStruct->margin.left = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_left);
330 	lpStruct->margin.top = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_top);
331 	lpStruct->margin.right = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_right);
332 	lpStruct->margin.bottom = (LONG)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_bottom);
333 	lpStruct->uAlign = (UINT)(*env)->GetIntField(env, lpObject, BUTTON_IMAGELISTFc.uAlign);
334 	return lpStruct;
335 }
336 
setBUTTON_IMAGELISTFields(JNIEnv * env,jobject lpObject,BUTTON_IMAGELIST * lpStruct)337 void setBUTTON_IMAGELISTFields(JNIEnv *env, jobject lpObject, BUTTON_IMAGELIST *lpStruct)
338 {
339 	if (!BUTTON_IMAGELISTFc.cached) cacheBUTTON_IMAGELISTFields(env, lpObject);
340 	(*env)->SetLongField(env, lpObject, BUTTON_IMAGELISTFc.himl, (jlong)lpStruct->himl);
341 	(*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_left, (jint)lpStruct->margin.left);
342 	(*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_top, (jint)lpStruct->margin.top);
343 	(*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_right, (jint)lpStruct->margin.right);
344 	(*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.margin_bottom, (jint)lpStruct->margin.bottom);
345 	(*env)->SetIntField(env, lpObject, BUTTON_IMAGELISTFc.uAlign, (jint)lpStruct->uAlign);
346 }
347 #endif
348 
349 #ifndef NO_CANDIDATEFORM
350 typedef struct CANDIDATEFORM_FID_CACHE {
351 	int cached;
352 	jclass clazz;
353 	jfieldID dwIndex, dwStyle, ptCurrentPos, rcArea;
354 } CANDIDATEFORM_FID_CACHE;
355 
356 CANDIDATEFORM_FID_CACHE CANDIDATEFORMFc;
357 
cacheCANDIDATEFORMFields(JNIEnv * env,jobject lpObject)358 void cacheCANDIDATEFORMFields(JNIEnv *env, jobject lpObject)
359 {
360 	if (CANDIDATEFORMFc.cached) return;
361 	CANDIDATEFORMFc.clazz = (*env)->GetObjectClass(env, lpObject);
362 	CANDIDATEFORMFc.dwIndex = (*env)->GetFieldID(env, CANDIDATEFORMFc.clazz, "dwIndex", "I");
363 	CANDIDATEFORMFc.dwStyle = (*env)->GetFieldID(env, CANDIDATEFORMFc.clazz, "dwStyle", "I");
364 	CANDIDATEFORMFc.ptCurrentPos = (*env)->GetFieldID(env, CANDIDATEFORMFc.clazz, "ptCurrentPos", "Lorg/eclipse/swt/internal/win32/POINT;");
365 	CANDIDATEFORMFc.rcArea = (*env)->GetFieldID(env, CANDIDATEFORMFc.clazz, "rcArea", "Lorg/eclipse/swt/internal/win32/RECT;");
366 	CANDIDATEFORMFc.cached = 1;
367 }
368 
getCANDIDATEFORMFields(JNIEnv * env,jobject lpObject,CANDIDATEFORM * lpStruct)369 CANDIDATEFORM *getCANDIDATEFORMFields(JNIEnv *env, jobject lpObject, CANDIDATEFORM *lpStruct)
370 {
371 	if (!CANDIDATEFORMFc.cached) cacheCANDIDATEFORMFields(env, lpObject);
372 	lpStruct->dwIndex = (*env)->GetIntField(env, lpObject, CANDIDATEFORMFc.dwIndex);
373 	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, CANDIDATEFORMFc.dwStyle);
374 	{
375 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CANDIDATEFORMFc.ptCurrentPos);
376 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->ptCurrentPos);
377 	}
378 	{
379 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CANDIDATEFORMFc.rcArea);
380 	if (lpObject1 != NULL) getRECTFields(env, lpObject1, &lpStruct->rcArea);
381 	}
382 	return lpStruct;
383 }
384 
setCANDIDATEFORMFields(JNIEnv * env,jobject lpObject,CANDIDATEFORM * lpStruct)385 void setCANDIDATEFORMFields(JNIEnv *env, jobject lpObject, CANDIDATEFORM *lpStruct)
386 {
387 	if (!CANDIDATEFORMFc.cached) cacheCANDIDATEFORMFields(env, lpObject);
388 	(*env)->SetIntField(env, lpObject, CANDIDATEFORMFc.dwIndex, (jint)lpStruct->dwIndex);
389 	(*env)->SetIntField(env, lpObject, CANDIDATEFORMFc.dwStyle, (jint)lpStruct->dwStyle);
390 	{
391 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CANDIDATEFORMFc.ptCurrentPos);
392 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->ptCurrentPos);
393 	}
394 	{
395 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CANDIDATEFORMFc.rcArea);
396 	if (lpObject1 != NULL) setRECTFields(env, lpObject1, &lpStruct->rcArea);
397 	}
398 }
399 #endif
400 
401 #ifndef NO_CERT_CONTEXT
402 typedef struct CERT_CONTEXT_FID_CACHE {
403 	int cached;
404 	jclass clazz;
405 	jfieldID dwCertEncodingType, pbCertEncoded, cbCertEncoded, pCertInfo, hCertStore;
406 } CERT_CONTEXT_FID_CACHE;
407 
408 CERT_CONTEXT_FID_CACHE CERT_CONTEXTFc;
409 
cacheCERT_CONTEXTFields(JNIEnv * env,jobject lpObject)410 void cacheCERT_CONTEXTFields(JNIEnv *env, jobject lpObject)
411 {
412 	if (CERT_CONTEXTFc.cached) return;
413 	CERT_CONTEXTFc.clazz = (*env)->GetObjectClass(env, lpObject);
414 	CERT_CONTEXTFc.dwCertEncodingType = (*env)->GetFieldID(env, CERT_CONTEXTFc.clazz, "dwCertEncodingType", "I");
415 	CERT_CONTEXTFc.pbCertEncoded = (*env)->GetFieldID(env, CERT_CONTEXTFc.clazz, "pbCertEncoded", "J");
416 	CERT_CONTEXTFc.cbCertEncoded = (*env)->GetFieldID(env, CERT_CONTEXTFc.clazz, "cbCertEncoded", "I");
417 	CERT_CONTEXTFc.pCertInfo = (*env)->GetFieldID(env, CERT_CONTEXTFc.clazz, "pCertInfo", "J");
418 	CERT_CONTEXTFc.hCertStore = (*env)->GetFieldID(env, CERT_CONTEXTFc.clazz, "hCertStore", "J");
419 	CERT_CONTEXTFc.cached = 1;
420 }
421 
getCERT_CONTEXTFields(JNIEnv * env,jobject lpObject,CERT_CONTEXT * lpStruct)422 CERT_CONTEXT *getCERT_CONTEXTFields(JNIEnv *env, jobject lpObject, CERT_CONTEXT *lpStruct)
423 {
424 	if (!CERT_CONTEXTFc.cached) cacheCERT_CONTEXTFields(env, lpObject);
425 	lpStruct->dwCertEncodingType = (*env)->GetIntField(env, lpObject, CERT_CONTEXTFc.dwCertEncodingType);
426 	lpStruct->pbCertEncoded = (BYTE *)(*env)->GetLongField(env, lpObject, CERT_CONTEXTFc.pbCertEncoded);
427 	lpStruct->cbCertEncoded = (*env)->GetIntField(env, lpObject, CERT_CONTEXTFc.cbCertEncoded);
428 	lpStruct->pCertInfo = (PCERT_INFO)(*env)->GetLongField(env, lpObject, CERT_CONTEXTFc.pCertInfo);
429 	lpStruct->hCertStore = (HCERTSTORE)(*env)->GetLongField(env, lpObject, CERT_CONTEXTFc.hCertStore);
430 	return lpStruct;
431 }
432 
setCERT_CONTEXTFields(JNIEnv * env,jobject lpObject,CERT_CONTEXT * lpStruct)433 void setCERT_CONTEXTFields(JNIEnv *env, jobject lpObject, CERT_CONTEXT *lpStruct)
434 {
435 	if (!CERT_CONTEXTFc.cached) cacheCERT_CONTEXTFields(env, lpObject);
436 	(*env)->SetIntField(env, lpObject, CERT_CONTEXTFc.dwCertEncodingType, (jint)lpStruct->dwCertEncodingType);
437 	(*env)->SetLongField(env, lpObject, CERT_CONTEXTFc.pbCertEncoded, (jlong)lpStruct->pbCertEncoded);
438 	(*env)->SetIntField(env, lpObject, CERT_CONTEXTFc.cbCertEncoded, (jint)lpStruct->cbCertEncoded);
439 	(*env)->SetLongField(env, lpObject, CERT_CONTEXTFc.pCertInfo, (jlong)lpStruct->pCertInfo);
440 	(*env)->SetLongField(env, lpObject, CERT_CONTEXTFc.hCertStore, (jlong)lpStruct->hCertStore);
441 }
442 #endif
443 
444 #ifndef NO_CERT_INFO
445 typedef struct CERT_INFO_FID_CACHE {
446 	int cached;
447 	jclass clazz;
448 	jfieldID dwVersion, SerialNumber, SignatureAlgorithm, Issuer, NotBefore, NotAfter, Subject, SubjectPublicKeyInfo, IssuerUniqueId, SubjectUniqueId, cExtension, rgExtension;
449 } CERT_INFO_FID_CACHE;
450 
451 CERT_INFO_FID_CACHE CERT_INFOFc;
452 
cacheCERT_INFOFields(JNIEnv * env,jobject lpObject)453 void cacheCERT_INFOFields(JNIEnv *env, jobject lpObject)
454 {
455 	if (CERT_INFOFc.cached) return;
456 	CERT_INFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
457 	CERT_INFOFc.dwVersion = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "dwVersion", "I");
458 	CERT_INFOFc.SerialNumber = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "SerialNumber", "Lorg/eclipse/swt/internal/win32/CRYPT_INTEGER_BLOB;");
459 	CERT_INFOFc.SignatureAlgorithm = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "SignatureAlgorithm", "Lorg/eclipse/swt/internal/win32/CRYPT_ALGORITHM_IDENTIFIER;");
460 	CERT_INFOFc.Issuer = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "Issuer", "Lorg/eclipse/swt/internal/win32/CERT_NAME_BLOB;");
461 	CERT_INFOFc.NotBefore = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "NotBefore", "Lorg/eclipse/swt/internal/win32/FILETIME;");
462 	CERT_INFOFc.NotAfter = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "NotAfter", "Lorg/eclipse/swt/internal/win32/FILETIME;");
463 	CERT_INFOFc.Subject = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "Subject", "Lorg/eclipse/swt/internal/win32/CERT_NAME_BLOB;");
464 	CERT_INFOFc.SubjectPublicKeyInfo = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "SubjectPublicKeyInfo", "Lorg/eclipse/swt/internal/win32/CERT_PUBLIC_KEY_INFO;");
465 	CERT_INFOFc.IssuerUniqueId = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "IssuerUniqueId", "Lorg/eclipse/swt/internal/win32/CRYPT_BIT_BLOB;");
466 	CERT_INFOFc.SubjectUniqueId = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "SubjectUniqueId", "Lorg/eclipse/swt/internal/win32/CRYPT_BIT_BLOB;");
467 	CERT_INFOFc.cExtension = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "cExtension", "I");
468 	CERT_INFOFc.rgExtension = (*env)->GetFieldID(env, CERT_INFOFc.clazz, "rgExtension", "J");
469 	CERT_INFOFc.cached = 1;
470 }
471 
getCERT_INFOFields(JNIEnv * env,jobject lpObject,CERT_INFO * lpStruct)472 CERT_INFO *getCERT_INFOFields(JNIEnv *env, jobject lpObject, CERT_INFO *lpStruct)
473 {
474 	if (!CERT_INFOFc.cached) cacheCERT_INFOFields(env, lpObject);
475 	lpStruct->dwVersion = (*env)->GetIntField(env, lpObject, CERT_INFOFc.dwVersion);
476 	{
477 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SerialNumber);
478 	if (lpObject1 != NULL) getCRYPT_INTEGER_BLOBFields(env, lpObject1, &lpStruct->SerialNumber);
479 	}
480 	{
481 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SignatureAlgorithm);
482 	if (lpObject1 != NULL) getCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject1, &lpStruct->SignatureAlgorithm);
483 	}
484 	{
485 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.Issuer);
486 	if (lpObject1 != NULL) getCERT_NAME_BLOBFields(env, lpObject1, &lpStruct->Issuer);
487 	}
488 	{
489 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.NotBefore);
490 	if (lpObject1 != NULL) getFILETIMEFields(env, lpObject1, &lpStruct->NotBefore);
491 	}
492 	{
493 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.NotAfter);
494 	if (lpObject1 != NULL) getFILETIMEFields(env, lpObject1, &lpStruct->NotAfter);
495 	}
496 	{
497 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.Subject);
498 	if (lpObject1 != NULL) getCERT_NAME_BLOBFields(env, lpObject1, &lpStruct->Subject);
499 	}
500 	{
501 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SubjectPublicKeyInfo);
502 	if (lpObject1 != NULL) getCERT_PUBLIC_KEY_INFOFields(env, lpObject1, &lpStruct->SubjectPublicKeyInfo);
503 	}
504 	{
505 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.IssuerUniqueId);
506 	if (lpObject1 != NULL) getCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->IssuerUniqueId);
507 	}
508 	{
509 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SubjectUniqueId);
510 	if (lpObject1 != NULL) getCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->SubjectUniqueId);
511 	}
512 	lpStruct->cExtension = (*env)->GetIntField(env, lpObject, CERT_INFOFc.cExtension);
513 	lpStruct->rgExtension = (PCERT_EXTENSION)(*env)->GetLongField(env, lpObject, CERT_INFOFc.rgExtension);
514 	return lpStruct;
515 }
516 
setCERT_INFOFields(JNIEnv * env,jobject lpObject,CERT_INFO * lpStruct)517 void setCERT_INFOFields(JNIEnv *env, jobject lpObject, CERT_INFO *lpStruct)
518 {
519 	if (!CERT_INFOFc.cached) cacheCERT_INFOFields(env, lpObject);
520 	(*env)->SetIntField(env, lpObject, CERT_INFOFc.dwVersion, (jint)lpStruct->dwVersion);
521 	{
522 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SerialNumber);
523 	if (lpObject1 != NULL) setCRYPT_INTEGER_BLOBFields(env, lpObject1, &lpStruct->SerialNumber);
524 	}
525 	{
526 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SignatureAlgorithm);
527 	if (lpObject1 != NULL) setCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject1, &lpStruct->SignatureAlgorithm);
528 	}
529 	{
530 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.Issuer);
531 	if (lpObject1 != NULL) setCERT_NAME_BLOBFields(env, lpObject1, &lpStruct->Issuer);
532 	}
533 	{
534 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.NotBefore);
535 	if (lpObject1 != NULL) setFILETIMEFields(env, lpObject1, &lpStruct->NotBefore);
536 	}
537 	{
538 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.NotAfter);
539 	if (lpObject1 != NULL) setFILETIMEFields(env, lpObject1, &lpStruct->NotAfter);
540 	}
541 	{
542 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.Subject);
543 	if (lpObject1 != NULL) setCERT_NAME_BLOBFields(env, lpObject1, &lpStruct->Subject);
544 	}
545 	{
546 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SubjectPublicKeyInfo);
547 	if (lpObject1 != NULL) setCERT_PUBLIC_KEY_INFOFields(env, lpObject1, &lpStruct->SubjectPublicKeyInfo);
548 	}
549 	{
550 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.IssuerUniqueId);
551 	if (lpObject1 != NULL) setCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->IssuerUniqueId);
552 	}
553 	{
554 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_INFOFc.SubjectUniqueId);
555 	if (lpObject1 != NULL) setCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->SubjectUniqueId);
556 	}
557 	(*env)->SetIntField(env, lpObject, CERT_INFOFc.cExtension, (jint)lpStruct->cExtension);
558 	(*env)->SetLongField(env, lpObject, CERT_INFOFc.rgExtension, (jlong)lpStruct->rgExtension);
559 }
560 #endif
561 
562 #ifndef NO_CERT_NAME_BLOB
563 typedef struct CERT_NAME_BLOB_FID_CACHE {
564 	int cached;
565 	jclass clazz;
566 	jfieldID cbData, pbData;
567 } CERT_NAME_BLOB_FID_CACHE;
568 
569 CERT_NAME_BLOB_FID_CACHE CERT_NAME_BLOBFc;
570 
cacheCERT_NAME_BLOBFields(JNIEnv * env,jobject lpObject)571 void cacheCERT_NAME_BLOBFields(JNIEnv *env, jobject lpObject)
572 {
573 	if (CERT_NAME_BLOBFc.cached) return;
574 	CERT_NAME_BLOBFc.clazz = (*env)->GetObjectClass(env, lpObject);
575 	CERT_NAME_BLOBFc.cbData = (*env)->GetFieldID(env, CERT_NAME_BLOBFc.clazz, "cbData", "I");
576 	CERT_NAME_BLOBFc.pbData = (*env)->GetFieldID(env, CERT_NAME_BLOBFc.clazz, "pbData", "J");
577 	CERT_NAME_BLOBFc.cached = 1;
578 }
579 
getCERT_NAME_BLOBFields(JNIEnv * env,jobject lpObject,CERT_NAME_BLOB * lpStruct)580 CERT_NAME_BLOB *getCERT_NAME_BLOBFields(JNIEnv *env, jobject lpObject, CERT_NAME_BLOB *lpStruct)
581 {
582 	if (!CERT_NAME_BLOBFc.cached) cacheCERT_NAME_BLOBFields(env, lpObject);
583 	lpStruct->cbData = (*env)->GetIntField(env, lpObject, CERT_NAME_BLOBFc.cbData);
584 	lpStruct->pbData = (BYTE *)(*env)->GetLongField(env, lpObject, CERT_NAME_BLOBFc.pbData);
585 	return lpStruct;
586 }
587 
setCERT_NAME_BLOBFields(JNIEnv * env,jobject lpObject,CERT_NAME_BLOB * lpStruct)588 void setCERT_NAME_BLOBFields(JNIEnv *env, jobject lpObject, CERT_NAME_BLOB *lpStruct)
589 {
590 	if (!CERT_NAME_BLOBFc.cached) cacheCERT_NAME_BLOBFields(env, lpObject);
591 	(*env)->SetIntField(env, lpObject, CERT_NAME_BLOBFc.cbData, (jint)lpStruct->cbData);
592 	(*env)->SetLongField(env, lpObject, CERT_NAME_BLOBFc.pbData, (jlong)lpStruct->pbData);
593 }
594 #endif
595 
596 #ifndef NO_CERT_PUBLIC_KEY_INFO
597 typedef struct CERT_PUBLIC_KEY_INFO_FID_CACHE {
598 	int cached;
599 	jclass clazz;
600 	jfieldID Algorithm, PublicKey;
601 } CERT_PUBLIC_KEY_INFO_FID_CACHE;
602 
603 CERT_PUBLIC_KEY_INFO_FID_CACHE CERT_PUBLIC_KEY_INFOFc;
604 
cacheCERT_PUBLIC_KEY_INFOFields(JNIEnv * env,jobject lpObject)605 void cacheCERT_PUBLIC_KEY_INFOFields(JNIEnv *env, jobject lpObject)
606 {
607 	if (CERT_PUBLIC_KEY_INFOFc.cached) return;
608 	CERT_PUBLIC_KEY_INFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
609 	CERT_PUBLIC_KEY_INFOFc.Algorithm = (*env)->GetFieldID(env, CERT_PUBLIC_KEY_INFOFc.clazz, "Algorithm", "Lorg/eclipse/swt/internal/win32/CRYPT_ALGORITHM_IDENTIFIER;");
610 	CERT_PUBLIC_KEY_INFOFc.PublicKey = (*env)->GetFieldID(env, CERT_PUBLIC_KEY_INFOFc.clazz, "PublicKey", "Lorg/eclipse/swt/internal/win32/CRYPT_BIT_BLOB;");
611 	CERT_PUBLIC_KEY_INFOFc.cached = 1;
612 }
613 
getCERT_PUBLIC_KEY_INFOFields(JNIEnv * env,jobject lpObject,CERT_PUBLIC_KEY_INFO * lpStruct)614 CERT_PUBLIC_KEY_INFO *getCERT_PUBLIC_KEY_INFOFields(JNIEnv *env, jobject lpObject, CERT_PUBLIC_KEY_INFO *lpStruct)
615 {
616 	if (!CERT_PUBLIC_KEY_INFOFc.cached) cacheCERT_PUBLIC_KEY_INFOFields(env, lpObject);
617 	{
618 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_PUBLIC_KEY_INFOFc.Algorithm);
619 	if (lpObject1 != NULL) getCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject1, &lpStruct->Algorithm);
620 	}
621 	{
622 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_PUBLIC_KEY_INFOFc.PublicKey);
623 	if (lpObject1 != NULL) getCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->PublicKey);
624 	}
625 	return lpStruct;
626 }
627 
setCERT_PUBLIC_KEY_INFOFields(JNIEnv * env,jobject lpObject,CERT_PUBLIC_KEY_INFO * lpStruct)628 void setCERT_PUBLIC_KEY_INFOFields(JNIEnv *env, jobject lpObject, CERT_PUBLIC_KEY_INFO *lpStruct)
629 {
630 	if (!CERT_PUBLIC_KEY_INFOFc.cached) cacheCERT_PUBLIC_KEY_INFOFields(env, lpObject);
631 	{
632 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_PUBLIC_KEY_INFOFc.Algorithm);
633 	if (lpObject1 != NULL) setCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject1, &lpStruct->Algorithm);
634 	}
635 	{
636 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CERT_PUBLIC_KEY_INFOFc.PublicKey);
637 	if (lpObject1 != NULL) setCRYPT_BIT_BLOBFields(env, lpObject1, &lpStruct->PublicKey);
638 	}
639 }
640 #endif
641 
642 #ifndef NO_CHOOSECOLOR
643 typedef struct CHOOSECOLOR_FID_CACHE {
644 	int cached;
645 	jclass clazz;
646 	jfieldID lStructSize, hwndOwner, hInstance, rgbResult, lpCustColors, Flags, lCustData, lpfnHook, lpTemplateName;
647 } CHOOSECOLOR_FID_CACHE;
648 
649 CHOOSECOLOR_FID_CACHE CHOOSECOLORFc;
650 
cacheCHOOSECOLORFields(JNIEnv * env,jobject lpObject)651 void cacheCHOOSECOLORFields(JNIEnv *env, jobject lpObject)
652 {
653 	if (CHOOSECOLORFc.cached) return;
654 	CHOOSECOLORFc.clazz = (*env)->GetObjectClass(env, lpObject);
655 	CHOOSECOLORFc.lStructSize = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lStructSize", "I");
656 	CHOOSECOLORFc.hwndOwner = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hwndOwner", "J");
657 	CHOOSECOLORFc.hInstance = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hInstance", "J");
658 	CHOOSECOLORFc.rgbResult = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "rgbResult", "I");
659 	CHOOSECOLORFc.lpCustColors = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpCustColors", "J");
660 	CHOOSECOLORFc.Flags = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "Flags", "I");
661 	CHOOSECOLORFc.lCustData = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lCustData", "J");
662 	CHOOSECOLORFc.lpfnHook = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpfnHook", "J");
663 	CHOOSECOLORFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpTemplateName", "J");
664 	CHOOSECOLORFc.cached = 1;
665 }
666 
getCHOOSECOLORFields(JNIEnv * env,jobject lpObject,CHOOSECOLOR * lpStruct)667 CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)
668 {
669 	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);
670 	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lStructSize);
671 	lpStruct->hwndOwner = (HWND)(*env)->GetLongField(env, lpObject, CHOOSECOLORFc.hwndOwner);
672 	lpStruct->hInstance = (HANDLE)(*env)->GetLongField(env, lpObject, CHOOSECOLORFc.hInstance);
673 	lpStruct->rgbResult = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.rgbResult);
674 	lpStruct->lpCustColors = (COLORREF *)(*env)->GetLongField(env, lpObject, CHOOSECOLORFc.lpCustColors);
675 	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.Flags);
676 	lpStruct->lCustData = (*env)->GetLongField(env, lpObject, CHOOSECOLORFc.lCustData);
677 	lpStruct->lpfnHook = (LPCCHOOKPROC)(*env)->GetLongField(env, lpObject, CHOOSECOLORFc.lpfnHook);
678 	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetLongField(env, lpObject, CHOOSECOLORFc.lpTemplateName);
679 	return lpStruct;
680 }
681 
setCHOOSECOLORFields(JNIEnv * env,jobject lpObject,CHOOSECOLOR * lpStruct)682 void setCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)
683 {
684 	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);
685 	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lStructSize, (jint)lpStruct->lStructSize);
686 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.hwndOwner, (jlong)lpStruct->hwndOwner);
687 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.hInstance, (jlong)lpStruct->hInstance);
688 	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.rgbResult, (jint)lpStruct->rgbResult);
689 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.lpCustColors, (jlong)lpStruct->lpCustColors);
690 	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.Flags, (jint)lpStruct->Flags);
691 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.lCustData, (jlong)lpStruct->lCustData);
692 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.lpfnHook, (jlong)lpStruct->lpfnHook);
693 	(*env)->SetLongField(env, lpObject, CHOOSECOLORFc.lpTemplateName, (jlong)lpStruct->lpTemplateName);
694 }
695 #endif
696 
697 #ifndef NO_CHOOSEFONT
698 typedef struct CHOOSEFONT_FID_CACHE {
699 	int cached;
700 	jclass clazz;
701 	jfieldID lStructSize, hwndOwner, hDC, lpLogFont, iPointSize, Flags, rgbColors, lCustData, lpfnHook, lpTemplateName, hInstance, lpszStyle, nFontType, nSizeMin, nSizeMax;
702 } CHOOSEFONT_FID_CACHE;
703 
704 CHOOSEFONT_FID_CACHE CHOOSEFONTFc;
705 
cacheCHOOSEFONTFields(JNIEnv * env,jobject lpObject)706 void cacheCHOOSEFONTFields(JNIEnv *env, jobject lpObject)
707 {
708 	if (CHOOSEFONTFc.cached) return;
709 	CHOOSEFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);
710 	CHOOSEFONTFc.lStructSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lStructSize", "I");
711 	CHOOSEFONTFc.hwndOwner = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hwndOwner", "J");
712 	CHOOSEFONTFc.hDC = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hDC", "J");
713 	CHOOSEFONTFc.lpLogFont = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpLogFont", "J");
714 	CHOOSEFONTFc.iPointSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "iPointSize", "I");
715 	CHOOSEFONTFc.Flags = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "Flags", "I");
716 	CHOOSEFONTFc.rgbColors = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "rgbColors", "I");
717 	CHOOSEFONTFc.lCustData = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lCustData", "J");
718 	CHOOSEFONTFc.lpfnHook = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpfnHook", "J");
719 	CHOOSEFONTFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpTemplateName", "J");
720 	CHOOSEFONTFc.hInstance = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hInstance", "J");
721 	CHOOSEFONTFc.lpszStyle = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpszStyle", "J");
722 	CHOOSEFONTFc.nFontType = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nFontType", "S");
723 	CHOOSEFONTFc.nSizeMin = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMin", "I");
724 	CHOOSEFONTFc.nSizeMax = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMax", "I");
725 	CHOOSEFONTFc.cached = 1;
726 }
727 
getCHOOSEFONTFields(JNIEnv * env,jobject lpObject,CHOOSEFONT * lpStruct)728 CHOOSEFONT *getCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)
729 {
730 	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);
731 	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lStructSize);
732 	lpStruct->hwndOwner = (HWND)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.hwndOwner);
733 	lpStruct->hDC = (HDC)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.hDC);
734 	lpStruct->lpLogFont = (LPLOGFONT)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.lpLogFont);
735 	lpStruct->iPointSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.iPointSize);
736 	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.Flags);
737 	lpStruct->rgbColors = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.rgbColors);
738 	lpStruct->lCustData = (*env)->GetLongField(env, lpObject, CHOOSEFONTFc.lCustData);
739 	lpStruct->lpfnHook = (LPCFHOOKPROC)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.lpfnHook);
740 	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.lpTemplateName);
741 	lpStruct->hInstance = (HINSTANCE)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.hInstance);
742 	lpStruct->lpszStyle = (LPTSTR)(*env)->GetLongField(env, lpObject, CHOOSEFONTFc.lpszStyle);
743 	lpStruct->nFontType = (*env)->GetShortField(env, lpObject, CHOOSEFONTFc.nFontType);
744 	lpStruct->nSizeMin = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin);
745 	lpStruct->nSizeMax = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax);
746 	return lpStruct;
747 }
748 
setCHOOSEFONTFields(JNIEnv * env,jobject lpObject,CHOOSEFONT * lpStruct)749 void setCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)
750 {
751 	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);
752 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lStructSize, (jint)lpStruct->lStructSize);
753 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.hwndOwner, (jlong)lpStruct->hwndOwner);
754 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.hDC, (jlong)lpStruct->hDC);
755 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.lpLogFont, (jlong)lpStruct->lpLogFont);
756 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.iPointSize, (jint)lpStruct->iPointSize);
757 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.Flags, (jint)lpStruct->Flags);
758 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.rgbColors, (jint)lpStruct->rgbColors);
759 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.lCustData, (jlong)lpStruct->lCustData);
760 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.lpfnHook, (jlong)lpStruct->lpfnHook);
761 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.lpTemplateName, (jlong)lpStruct->lpTemplateName);
762 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.hInstance, (jlong)lpStruct->hInstance);
763 	(*env)->SetLongField(env, lpObject, CHOOSEFONTFc.lpszStyle, (jlong)lpStruct->lpszStyle);
764 	(*env)->SetShortField(env, lpObject, CHOOSEFONTFc.nFontType, (jshort)lpStruct->nFontType);
765 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin, (jint)lpStruct->nSizeMin);
766 	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax, (jint)lpStruct->nSizeMax);
767 }
768 #endif
769 
770 #ifndef NO_CIDA
771 typedef struct CIDA_FID_CACHE {
772 	int cached;
773 	jclass clazz;
774 	jfieldID cidl, aoffset;
775 } CIDA_FID_CACHE;
776 
777 CIDA_FID_CACHE CIDAFc;
778 
cacheCIDAFields(JNIEnv * env,jobject lpObject)779 void cacheCIDAFields(JNIEnv *env, jobject lpObject)
780 {
781 	if (CIDAFc.cached) return;
782 	CIDAFc.clazz = (*env)->GetObjectClass(env, lpObject);
783 	CIDAFc.cidl = (*env)->GetFieldID(env, CIDAFc.clazz, "cidl", "I");
784 	CIDAFc.aoffset = (*env)->GetFieldID(env, CIDAFc.clazz, "aoffset", "I");
785 	CIDAFc.cached = 1;
786 }
787 
getCIDAFields(JNIEnv * env,jobject lpObject,CIDA * lpStruct)788 CIDA *getCIDAFields(JNIEnv *env, jobject lpObject, CIDA *lpStruct)
789 {
790 	if (!CIDAFc.cached) cacheCIDAFields(env, lpObject);
791 	lpStruct->cidl = (*env)->GetIntField(env, lpObject, CIDAFc.cidl);
792 	lpStruct->aoffset[0] = (*env)->GetIntField(env, lpObject, CIDAFc.aoffset);
793 	return lpStruct;
794 }
795 
setCIDAFields(JNIEnv * env,jobject lpObject,CIDA * lpStruct)796 void setCIDAFields(JNIEnv *env, jobject lpObject, CIDA *lpStruct)
797 {
798 	if (!CIDAFc.cached) cacheCIDAFields(env, lpObject);
799 	(*env)->SetIntField(env, lpObject, CIDAFc.cidl, (jint)lpStruct->cidl);
800 	(*env)->SetIntField(env, lpObject, CIDAFc.aoffset, (jint)lpStruct->aoffset[0]);
801 }
802 #endif
803 
804 #ifndef NO_COMBOBOXINFO
805 typedef struct COMBOBOXINFO_FID_CACHE {
806 	int cached;
807 	jclass clazz;
808 	jfieldID cbSize, itemLeft, itemTop, itemRight, itemBottom, buttonLeft, buttonTop, buttonRight, buttonBottom, stateButton, hwndCombo, hwndItem, hwndList;
809 } COMBOBOXINFO_FID_CACHE;
810 
811 COMBOBOXINFO_FID_CACHE COMBOBOXINFOFc;
812 
cacheCOMBOBOXINFOFields(JNIEnv * env,jobject lpObject)813 void cacheCOMBOBOXINFOFields(JNIEnv *env, jobject lpObject)
814 {
815 	if (COMBOBOXINFOFc.cached) return;
816 	COMBOBOXINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
817 	COMBOBOXINFOFc.cbSize = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "cbSize", "I");
818 	COMBOBOXINFOFc.itemLeft = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "itemLeft", "I");
819 	COMBOBOXINFOFc.itemTop = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "itemTop", "I");
820 	COMBOBOXINFOFc.itemRight = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "itemRight", "I");
821 	COMBOBOXINFOFc.itemBottom = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "itemBottom", "I");
822 	COMBOBOXINFOFc.buttonLeft = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "buttonLeft", "I");
823 	COMBOBOXINFOFc.buttonTop = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "buttonTop", "I");
824 	COMBOBOXINFOFc.buttonRight = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "buttonRight", "I");
825 	COMBOBOXINFOFc.buttonBottom = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "buttonBottom", "I");
826 	COMBOBOXINFOFc.stateButton = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "stateButton", "I");
827 	COMBOBOXINFOFc.hwndCombo = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "hwndCombo", "J");
828 	COMBOBOXINFOFc.hwndItem = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "hwndItem", "J");
829 	COMBOBOXINFOFc.hwndList = (*env)->GetFieldID(env, COMBOBOXINFOFc.clazz, "hwndList", "J");
830 	COMBOBOXINFOFc.cached = 1;
831 }
832 
getCOMBOBOXINFOFields(JNIEnv * env,jobject lpObject,COMBOBOXINFO * lpStruct)833 COMBOBOXINFO *getCOMBOBOXINFOFields(JNIEnv *env, jobject lpObject, COMBOBOXINFO *lpStruct)
834 {
835 	if (!COMBOBOXINFOFc.cached) cacheCOMBOBOXINFOFields(env, lpObject);
836 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.cbSize);
837 	lpStruct->rcItem.left = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.itemLeft);
838 	lpStruct->rcItem.top = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.itemTop);
839 	lpStruct->rcItem.right = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.itemRight);
840 	lpStruct->rcItem.bottom = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.itemBottom);
841 	lpStruct->rcButton.left = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.buttonLeft);
842 	lpStruct->rcButton.top = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.buttonTop);
843 	lpStruct->rcButton.right = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.buttonRight);
844 	lpStruct->rcButton.bottom = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.buttonBottom);
845 	lpStruct->stateButton = (*env)->GetIntField(env, lpObject, COMBOBOXINFOFc.stateButton);
846 	lpStruct->hwndCombo = (HWND)(*env)->GetLongField(env, lpObject, COMBOBOXINFOFc.hwndCombo);
847 	lpStruct->hwndItem = (HWND)(*env)->GetLongField(env, lpObject, COMBOBOXINFOFc.hwndItem);
848 	lpStruct->hwndList = (HWND)(*env)->GetLongField(env, lpObject, COMBOBOXINFOFc.hwndList);
849 	return lpStruct;
850 }
851 
setCOMBOBOXINFOFields(JNIEnv * env,jobject lpObject,COMBOBOXINFO * lpStruct)852 void setCOMBOBOXINFOFields(JNIEnv *env, jobject lpObject, COMBOBOXINFO *lpStruct)
853 {
854 	if (!COMBOBOXINFOFc.cached) cacheCOMBOBOXINFOFields(env, lpObject);
855 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.cbSize, (jint)lpStruct->cbSize);
856 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.itemLeft, (jint)lpStruct->rcItem.left);
857 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.itemTop, (jint)lpStruct->rcItem.top);
858 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.itemRight, (jint)lpStruct->rcItem.right);
859 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.itemBottom, (jint)lpStruct->rcItem.bottom);
860 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.buttonLeft, (jint)lpStruct->rcButton.left);
861 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.buttonTop, (jint)lpStruct->rcButton.top);
862 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.buttonRight, (jint)lpStruct->rcButton.right);
863 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.buttonBottom, (jint)lpStruct->rcButton.bottom);
864 	(*env)->SetIntField(env, lpObject, COMBOBOXINFOFc.stateButton, (jint)lpStruct->stateButton);
865 	(*env)->SetLongField(env, lpObject, COMBOBOXINFOFc.hwndCombo, (jlong)lpStruct->hwndCombo);
866 	(*env)->SetLongField(env, lpObject, COMBOBOXINFOFc.hwndItem, (jlong)lpStruct->hwndItem);
867 	(*env)->SetLongField(env, lpObject, COMBOBOXINFOFc.hwndList, (jlong)lpStruct->hwndList);
868 }
869 #endif
870 
871 #ifndef NO_COMPOSITIONFORM
872 typedef struct COMPOSITIONFORM_FID_CACHE {
873 	int cached;
874 	jclass clazz;
875 	jfieldID dwStyle, x, y, left, top, right, bottom;
876 } COMPOSITIONFORM_FID_CACHE;
877 
878 COMPOSITIONFORM_FID_CACHE COMPOSITIONFORMFc;
879 
cacheCOMPOSITIONFORMFields(JNIEnv * env,jobject lpObject)880 void cacheCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject)
881 {
882 	if (COMPOSITIONFORMFc.cached) return;
883 	COMPOSITIONFORMFc.clazz = (*env)->GetObjectClass(env, lpObject);
884 	COMPOSITIONFORMFc.dwStyle = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "dwStyle", "I");
885 	COMPOSITIONFORMFc.x = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "x", "I");
886 	COMPOSITIONFORMFc.y = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "y", "I");
887 	COMPOSITIONFORMFc.left = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "left", "I");
888 	COMPOSITIONFORMFc.top = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "top", "I");
889 	COMPOSITIONFORMFc.right = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "right", "I");
890 	COMPOSITIONFORMFc.bottom = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "bottom", "I");
891 	COMPOSITIONFORMFc.cached = 1;
892 }
893 
getCOMPOSITIONFORMFields(JNIEnv * env,jobject lpObject,COMPOSITIONFORM * lpStruct)894 COMPOSITIONFORM *getCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)
895 {
896 	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);
897 	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle);
898 	lpStruct->ptCurrentPos.x = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.x);
899 	lpStruct->ptCurrentPos.y = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.y);
900 	lpStruct->rcArea.left = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.left);
901 	lpStruct->rcArea.top = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.top);
902 	lpStruct->rcArea.right = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.right);
903 	lpStruct->rcArea.bottom = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.bottom);
904 	return lpStruct;
905 }
906 
setCOMPOSITIONFORMFields(JNIEnv * env,jobject lpObject,COMPOSITIONFORM * lpStruct)907 void setCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)
908 {
909 	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);
910 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle, (jint)lpStruct->dwStyle);
911 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.x, (jint)lpStruct->ptCurrentPos.x);
912 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.y, (jint)lpStruct->ptCurrentPos.y);
913 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.left, (jint)lpStruct->rcArea.left);
914 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.top, (jint)lpStruct->rcArea.top);
915 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.right, (jint)lpStruct->rcArea.right);
916 	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.bottom, (jint)lpStruct->rcArea.bottom);
917 }
918 #endif
919 
920 #ifndef NO_CREATESTRUCT
921 typedef struct CREATESTRUCT_FID_CACHE {
922 	int cached;
923 	jclass clazz;
924 	jfieldID lpCreateParams, hInstance, hMenu, hwndParent, cy, cx, y, x, style, lpszName, lpszClass, dwExStyle;
925 } CREATESTRUCT_FID_CACHE;
926 
927 CREATESTRUCT_FID_CACHE CREATESTRUCTFc;
928 
cacheCREATESTRUCTFields(JNIEnv * env,jobject lpObject)929 void cacheCREATESTRUCTFields(JNIEnv *env, jobject lpObject)
930 {
931 	if (CREATESTRUCTFc.cached) return;
932 	CREATESTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
933 	CREATESTRUCTFc.lpCreateParams = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpCreateParams", "J");
934 	CREATESTRUCTFc.hInstance = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hInstance", "J");
935 	CREATESTRUCTFc.hMenu = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hMenu", "J");
936 	CREATESTRUCTFc.hwndParent = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hwndParent", "J");
937 	CREATESTRUCTFc.cy = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cy", "I");
938 	CREATESTRUCTFc.cx = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cx", "I");
939 	CREATESTRUCTFc.y = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "y", "I");
940 	CREATESTRUCTFc.x = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "x", "I");
941 	CREATESTRUCTFc.style = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "style", "I");
942 	CREATESTRUCTFc.lpszName = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszName", "J");
943 	CREATESTRUCTFc.lpszClass = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszClass", "J");
944 	CREATESTRUCTFc.dwExStyle = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "dwExStyle", "I");
945 	CREATESTRUCTFc.cached = 1;
946 }
947 
getCREATESTRUCTFields(JNIEnv * env,jobject lpObject,CREATESTRUCT * lpStruct)948 CREATESTRUCT *getCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)
949 {
950 	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);
951 	lpStruct->lpCreateParams = (LPVOID)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.lpCreateParams);
952 	lpStruct->hInstance = (HINSTANCE)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.hInstance);
953 	lpStruct->hMenu = (HMENU)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.hMenu);
954 	lpStruct->hwndParent = (HWND)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.hwndParent);
955 	lpStruct->cy = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cy);
956 	lpStruct->cx = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cx);
957 	lpStruct->y = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.y);
958 	lpStruct->x = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.x);
959 	lpStruct->style = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.style);
960 	lpStruct->lpszName = (LPCTSTR)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.lpszName);
961 	lpStruct->lpszClass = (LPCTSTR)(*env)->GetLongField(env, lpObject, CREATESTRUCTFc.lpszClass);
962 	lpStruct->dwExStyle = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle);
963 	return lpStruct;
964 }
965 
setCREATESTRUCTFields(JNIEnv * env,jobject lpObject,CREATESTRUCT * lpStruct)966 void setCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)
967 {
968 	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);
969 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.lpCreateParams, (jlong)lpStruct->lpCreateParams);
970 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.hInstance, (jlong)lpStruct->hInstance);
971 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.hMenu, (jlong)lpStruct->hMenu);
972 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.hwndParent, (jlong)lpStruct->hwndParent);
973 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cy, (jint)lpStruct->cy);
974 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cx, (jint)lpStruct->cx);
975 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.y, (jint)lpStruct->y);
976 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.x, (jint)lpStruct->x);
977 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.style, (jint)lpStruct->style);
978 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.lpszName, (jlong)lpStruct->lpszName);
979 	(*env)->SetLongField(env, lpObject, CREATESTRUCTFc.lpszClass, (jlong)lpStruct->lpszClass);
980 	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle, (jint)lpStruct->dwExStyle);
981 }
982 #endif
983 
984 #ifndef NO_CRYPT_ALGORITHM_IDENTIFIER
985 typedef struct CRYPT_ALGORITHM_IDENTIFIER_FID_CACHE {
986 	int cached;
987 	jclass clazz;
988 	jfieldID pszObjId, Parameters;
989 } CRYPT_ALGORITHM_IDENTIFIER_FID_CACHE;
990 
991 CRYPT_ALGORITHM_IDENTIFIER_FID_CACHE CRYPT_ALGORITHM_IDENTIFIERFc;
992 
cacheCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv * env,jobject lpObject)993 void cacheCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv *env, jobject lpObject)
994 {
995 	if (CRYPT_ALGORITHM_IDENTIFIERFc.cached) return;
996 	CRYPT_ALGORITHM_IDENTIFIERFc.clazz = (*env)->GetObjectClass(env, lpObject);
997 	CRYPT_ALGORITHM_IDENTIFIERFc.pszObjId = (*env)->GetFieldID(env, CRYPT_ALGORITHM_IDENTIFIERFc.clazz, "pszObjId", "J");
998 	CRYPT_ALGORITHM_IDENTIFIERFc.Parameters = (*env)->GetFieldID(env, CRYPT_ALGORITHM_IDENTIFIERFc.clazz, "Parameters", "Lorg/eclipse/swt/internal/win32/CRYPT_OBJID_BLOB;");
999 	CRYPT_ALGORITHM_IDENTIFIERFc.cached = 1;
1000 }
1001 
getCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv * env,jobject lpObject,CRYPT_ALGORITHM_IDENTIFIER * lpStruct)1002 CRYPT_ALGORITHM_IDENTIFIER *getCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv *env, jobject lpObject, CRYPT_ALGORITHM_IDENTIFIER *lpStruct)
1003 {
1004 	if (!CRYPT_ALGORITHM_IDENTIFIERFc.cached) cacheCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject);
1005 	lpStruct->pszObjId = (LPSTR)(*env)->GetLongField(env, lpObject, CRYPT_ALGORITHM_IDENTIFIERFc.pszObjId);
1006 	{
1007 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CRYPT_ALGORITHM_IDENTIFIERFc.Parameters);
1008 	if (lpObject1 != NULL) getCRYPT_OBJID_BLOBFields(env, lpObject1, &lpStruct->Parameters);
1009 	}
1010 	return lpStruct;
1011 }
1012 
setCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv * env,jobject lpObject,CRYPT_ALGORITHM_IDENTIFIER * lpStruct)1013 void setCRYPT_ALGORITHM_IDENTIFIERFields(JNIEnv *env, jobject lpObject, CRYPT_ALGORITHM_IDENTIFIER *lpStruct)
1014 {
1015 	if (!CRYPT_ALGORITHM_IDENTIFIERFc.cached) cacheCRYPT_ALGORITHM_IDENTIFIERFields(env, lpObject);
1016 	(*env)->SetLongField(env, lpObject, CRYPT_ALGORITHM_IDENTIFIERFc.pszObjId, (jlong)lpStruct->pszObjId);
1017 	{
1018 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, CRYPT_ALGORITHM_IDENTIFIERFc.Parameters);
1019 	if (lpObject1 != NULL) setCRYPT_OBJID_BLOBFields(env, lpObject1, &lpStruct->Parameters);
1020 	}
1021 }
1022 #endif
1023 
1024 #ifndef NO_CRYPT_BIT_BLOB
1025 typedef struct CRYPT_BIT_BLOB_FID_CACHE {
1026 	int cached;
1027 	jclass clazz;
1028 	jfieldID cbData, pbData, cUnusedBits;
1029 } CRYPT_BIT_BLOB_FID_CACHE;
1030 
1031 CRYPT_BIT_BLOB_FID_CACHE CRYPT_BIT_BLOBFc;
1032 
cacheCRYPT_BIT_BLOBFields(JNIEnv * env,jobject lpObject)1033 void cacheCRYPT_BIT_BLOBFields(JNIEnv *env, jobject lpObject)
1034 {
1035 	if (CRYPT_BIT_BLOBFc.cached) return;
1036 	CRYPT_BIT_BLOBFc.clazz = (*env)->GetObjectClass(env, lpObject);
1037 	CRYPT_BIT_BLOBFc.cbData = (*env)->GetFieldID(env, CRYPT_BIT_BLOBFc.clazz, "cbData", "I");
1038 	CRYPT_BIT_BLOBFc.pbData = (*env)->GetFieldID(env, CRYPT_BIT_BLOBFc.clazz, "pbData", "J");
1039 	CRYPT_BIT_BLOBFc.cUnusedBits = (*env)->GetFieldID(env, CRYPT_BIT_BLOBFc.clazz, "cUnusedBits", "I");
1040 	CRYPT_BIT_BLOBFc.cached = 1;
1041 }
1042 
getCRYPT_BIT_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_BIT_BLOB * lpStruct)1043 CRYPT_BIT_BLOB *getCRYPT_BIT_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_BIT_BLOB *lpStruct)
1044 {
1045 	if (!CRYPT_BIT_BLOBFc.cached) cacheCRYPT_BIT_BLOBFields(env, lpObject);
1046 	lpStruct->cbData = (*env)->GetIntField(env, lpObject, CRYPT_BIT_BLOBFc.cbData);
1047 	lpStruct->pbData = (BYTE *)(*env)->GetLongField(env, lpObject, CRYPT_BIT_BLOBFc.pbData);
1048 	lpStruct->cUnusedBits = (*env)->GetIntField(env, lpObject, CRYPT_BIT_BLOBFc.cUnusedBits);
1049 	return lpStruct;
1050 }
1051 
setCRYPT_BIT_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_BIT_BLOB * lpStruct)1052 void setCRYPT_BIT_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_BIT_BLOB *lpStruct)
1053 {
1054 	if (!CRYPT_BIT_BLOBFc.cached) cacheCRYPT_BIT_BLOBFields(env, lpObject);
1055 	(*env)->SetIntField(env, lpObject, CRYPT_BIT_BLOBFc.cbData, (jint)lpStruct->cbData);
1056 	(*env)->SetLongField(env, lpObject, CRYPT_BIT_BLOBFc.pbData, (jlong)lpStruct->pbData);
1057 	(*env)->SetIntField(env, lpObject, CRYPT_BIT_BLOBFc.cUnusedBits, (jint)lpStruct->cUnusedBits);
1058 }
1059 #endif
1060 
1061 #ifndef NO_CRYPT_INTEGER_BLOB
1062 typedef struct CRYPT_INTEGER_BLOB_FID_CACHE {
1063 	int cached;
1064 	jclass clazz;
1065 	jfieldID cbData, pbData;
1066 } CRYPT_INTEGER_BLOB_FID_CACHE;
1067 
1068 CRYPT_INTEGER_BLOB_FID_CACHE CRYPT_INTEGER_BLOBFc;
1069 
cacheCRYPT_INTEGER_BLOBFields(JNIEnv * env,jobject lpObject)1070 void cacheCRYPT_INTEGER_BLOBFields(JNIEnv *env, jobject lpObject)
1071 {
1072 	if (CRYPT_INTEGER_BLOBFc.cached) return;
1073 	CRYPT_INTEGER_BLOBFc.clazz = (*env)->GetObjectClass(env, lpObject);
1074 	CRYPT_INTEGER_BLOBFc.cbData = (*env)->GetFieldID(env, CRYPT_INTEGER_BLOBFc.clazz, "cbData", "I");
1075 	CRYPT_INTEGER_BLOBFc.pbData = (*env)->GetFieldID(env, CRYPT_INTEGER_BLOBFc.clazz, "pbData", "J");
1076 	CRYPT_INTEGER_BLOBFc.cached = 1;
1077 }
1078 
getCRYPT_INTEGER_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_INTEGER_BLOB * lpStruct)1079 CRYPT_INTEGER_BLOB *getCRYPT_INTEGER_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_INTEGER_BLOB *lpStruct)
1080 {
1081 	if (!CRYPT_INTEGER_BLOBFc.cached) cacheCRYPT_INTEGER_BLOBFields(env, lpObject);
1082 	lpStruct->cbData = (*env)->GetIntField(env, lpObject, CRYPT_INTEGER_BLOBFc.cbData);
1083 	lpStruct->pbData = (BYTE *)(*env)->GetLongField(env, lpObject, CRYPT_INTEGER_BLOBFc.pbData);
1084 	return lpStruct;
1085 }
1086 
setCRYPT_INTEGER_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_INTEGER_BLOB * lpStruct)1087 void setCRYPT_INTEGER_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_INTEGER_BLOB *lpStruct)
1088 {
1089 	if (!CRYPT_INTEGER_BLOBFc.cached) cacheCRYPT_INTEGER_BLOBFields(env, lpObject);
1090 	(*env)->SetIntField(env, lpObject, CRYPT_INTEGER_BLOBFc.cbData, (jint)lpStruct->cbData);
1091 	(*env)->SetLongField(env, lpObject, CRYPT_INTEGER_BLOBFc.pbData, (jlong)lpStruct->pbData);
1092 }
1093 #endif
1094 
1095 #ifndef NO_CRYPT_OBJID_BLOB
1096 typedef struct CRYPT_OBJID_BLOB_FID_CACHE {
1097 	int cached;
1098 	jclass clazz;
1099 	jfieldID cbData, pbData;
1100 } CRYPT_OBJID_BLOB_FID_CACHE;
1101 
1102 CRYPT_OBJID_BLOB_FID_CACHE CRYPT_OBJID_BLOBFc;
1103 
cacheCRYPT_OBJID_BLOBFields(JNIEnv * env,jobject lpObject)1104 void cacheCRYPT_OBJID_BLOBFields(JNIEnv *env, jobject lpObject)
1105 {
1106 	if (CRYPT_OBJID_BLOBFc.cached) return;
1107 	CRYPT_OBJID_BLOBFc.clazz = (*env)->GetObjectClass(env, lpObject);
1108 	CRYPT_OBJID_BLOBFc.cbData = (*env)->GetFieldID(env, CRYPT_OBJID_BLOBFc.clazz, "cbData", "I");
1109 	CRYPT_OBJID_BLOBFc.pbData = (*env)->GetFieldID(env, CRYPT_OBJID_BLOBFc.clazz, "pbData", "J");
1110 	CRYPT_OBJID_BLOBFc.cached = 1;
1111 }
1112 
getCRYPT_OBJID_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_OBJID_BLOB * lpStruct)1113 CRYPT_OBJID_BLOB *getCRYPT_OBJID_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_OBJID_BLOB *lpStruct)
1114 {
1115 	if (!CRYPT_OBJID_BLOBFc.cached) cacheCRYPT_OBJID_BLOBFields(env, lpObject);
1116 	lpStruct->cbData = (*env)->GetIntField(env, lpObject, CRYPT_OBJID_BLOBFc.cbData);
1117 	lpStruct->pbData = (BYTE *)(*env)->GetLongField(env, lpObject, CRYPT_OBJID_BLOBFc.pbData);
1118 	return lpStruct;
1119 }
1120 
setCRYPT_OBJID_BLOBFields(JNIEnv * env,jobject lpObject,CRYPT_OBJID_BLOB * lpStruct)1121 void setCRYPT_OBJID_BLOBFields(JNIEnv *env, jobject lpObject, CRYPT_OBJID_BLOB *lpStruct)
1122 {
1123 	if (!CRYPT_OBJID_BLOBFc.cached) cacheCRYPT_OBJID_BLOBFields(env, lpObject);
1124 	(*env)->SetIntField(env, lpObject, CRYPT_OBJID_BLOBFc.cbData, (jint)lpStruct->cbData);
1125 	(*env)->SetLongField(env, lpObject, CRYPT_OBJID_BLOBFc.pbData, (jlong)lpStruct->pbData);
1126 }
1127 #endif
1128 
1129 #ifndef NO_DEVMODE
1130 typedef struct DEVMODE_FID_CACHE {
1131 	int cached;
1132 	jclass clazz;
1133 	jfieldID dmDeviceName, dmSpecVersion, dmDriverVersion, dmSize, dmDriverExtra, dmFields, dmOrientation, dmPaperSize, dmPaperLength, dmPaperWidth, dmScale, dmCopies, dmDefaultSource, dmPrintQuality, dmColor, dmDuplex, dmYResolution, dmTTOption, dmCollate, dmFormName, dmLogPixels, dmBitsPerPel, dmPelsWidth, dmPelsHeight, dmNup, dmDisplayFrequency, dmICMMethod, dmICMIntent, dmMediaType, dmDitherType, dmReserved1, dmReserved2, dmPanningWidth, dmPanningHeight;
1134 } DEVMODE_FID_CACHE;
1135 
1136 DEVMODE_FID_CACHE DEVMODEFc;
1137 
cacheDEVMODEFields(JNIEnv * env,jobject lpObject)1138 void cacheDEVMODEFields(JNIEnv *env, jobject lpObject)
1139 {
1140 	if (DEVMODEFc.cached) return;
1141 	DEVMODEFc.clazz = (*env)->GetObjectClass(env, lpObject);
1142 	DEVMODEFc.dmDeviceName = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDeviceName", "[C");
1143 	DEVMODEFc.dmSpecVersion = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmSpecVersion", "S");
1144 	DEVMODEFc.dmDriverVersion = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDriverVersion", "S");
1145 	DEVMODEFc.dmSize = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmSize", "S");
1146 	DEVMODEFc.dmDriverExtra = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDriverExtra", "S");
1147 	DEVMODEFc.dmFields = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmFields", "I");
1148 	DEVMODEFc.dmOrientation = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmOrientation", "S");
1149 	DEVMODEFc.dmPaperSize = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPaperSize", "S");
1150 	DEVMODEFc.dmPaperLength = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPaperLength", "S");
1151 	DEVMODEFc.dmPaperWidth = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPaperWidth", "S");
1152 	DEVMODEFc.dmScale = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmScale", "S");
1153 	DEVMODEFc.dmCopies = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmCopies", "S");
1154 	DEVMODEFc.dmDefaultSource = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDefaultSource", "S");
1155 	DEVMODEFc.dmPrintQuality = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPrintQuality", "S");
1156 	DEVMODEFc.dmColor = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmColor", "S");
1157 	DEVMODEFc.dmDuplex = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDuplex", "S");
1158 	DEVMODEFc.dmYResolution = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmYResolution", "S");
1159 	DEVMODEFc.dmTTOption = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmTTOption", "S");
1160 	DEVMODEFc.dmCollate = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmCollate", "S");
1161 	DEVMODEFc.dmFormName = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmFormName", "[C");
1162 	DEVMODEFc.dmLogPixels = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmLogPixels", "S");
1163 	DEVMODEFc.dmBitsPerPel = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmBitsPerPel", "I");
1164 	DEVMODEFc.dmPelsWidth = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPelsWidth", "I");
1165 	DEVMODEFc.dmPelsHeight = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPelsHeight", "I");
1166 	DEVMODEFc.dmNup = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmNup", "I");
1167 	DEVMODEFc.dmDisplayFrequency = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDisplayFrequency", "I");
1168 	DEVMODEFc.dmICMMethod = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmICMMethod", "I");
1169 	DEVMODEFc.dmICMIntent = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmICMIntent", "I");
1170 	DEVMODEFc.dmMediaType = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmMediaType", "I");
1171 	DEVMODEFc.dmDitherType = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmDitherType", "I");
1172 	DEVMODEFc.dmReserved1 = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmReserved1", "I");
1173 	DEVMODEFc.dmReserved2 = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmReserved2", "I");
1174 	DEVMODEFc.dmPanningWidth = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPanningWidth", "I");
1175 	DEVMODEFc.dmPanningHeight = (*env)->GetFieldID(env, DEVMODEFc.clazz, "dmPanningHeight", "I");
1176 	DEVMODEFc.cached = 1;
1177 }
1178 
getDEVMODEFields(JNIEnv * env,jobject lpObject,DEVMODE * lpStruct)1179 DEVMODE *getDEVMODEFields(JNIEnv *env, jobject lpObject, DEVMODE *lpStruct)
1180 {
1181 	if (!DEVMODEFc.cached) cacheDEVMODEFields(env, lpObject);
1182 	{
1183 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, DEVMODEFc.dmDeviceName);
1184 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->dmDeviceName) / sizeof(jchar), (jchar *)lpStruct->dmDeviceName);
1185 	}
1186 	lpStruct->dmSpecVersion = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmSpecVersion);
1187 	lpStruct->dmDriverVersion = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmDriverVersion);
1188 	lpStruct->dmSize = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmSize);
1189 	lpStruct->dmDriverExtra = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmDriverExtra);
1190 	lpStruct->dmFields = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmFields);
1191 	lpStruct->dmOrientation = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmOrientation);
1192 	lpStruct->dmPaperSize = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmPaperSize);
1193 	lpStruct->dmPaperLength = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmPaperLength);
1194 	lpStruct->dmPaperWidth = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmPaperWidth);
1195 	lpStruct->dmScale = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmScale);
1196 	lpStruct->dmCopies = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmCopies);
1197 	lpStruct->dmDefaultSource = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmDefaultSource);
1198 	lpStruct->dmPrintQuality = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmPrintQuality);
1199 	lpStruct->dmColor = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmColor);
1200 	lpStruct->dmDuplex = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmDuplex);
1201 	lpStruct->dmYResolution = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmYResolution);
1202 	lpStruct->dmTTOption = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmTTOption);
1203 	lpStruct->dmCollate = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmCollate);
1204 	{
1205 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, DEVMODEFc.dmFormName);
1206 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->dmFormName) / sizeof(jchar), (jchar *)lpStruct->dmFormName);
1207 	}
1208 	lpStruct->dmLogPixels = (*env)->GetShortField(env, lpObject, DEVMODEFc.dmLogPixels);
1209 	lpStruct->dmBitsPerPel = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmBitsPerPel);
1210 	lpStruct->dmPelsWidth = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmPelsWidth);
1211 	lpStruct->dmPelsHeight = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmPelsHeight);
1212 	lpStruct->dmNup = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmNup);
1213 	lpStruct->dmDisplayFrequency = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmDisplayFrequency);
1214 	lpStruct->dmICMMethod = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmICMMethod);
1215 	lpStruct->dmICMIntent = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmICMIntent);
1216 	lpStruct->dmMediaType = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmMediaType);
1217 	lpStruct->dmDitherType = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmDitherType);
1218 	lpStruct->dmReserved1 = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmReserved1);
1219 	lpStruct->dmReserved2 = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmReserved2);
1220 	lpStruct->dmPanningWidth = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmPanningWidth);
1221 	lpStruct->dmPanningHeight = (*env)->GetIntField(env, lpObject, DEVMODEFc.dmPanningHeight);
1222 	return lpStruct;
1223 }
1224 
setDEVMODEFields(JNIEnv * env,jobject lpObject,DEVMODE * lpStruct)1225 void setDEVMODEFields(JNIEnv *env, jobject lpObject, DEVMODE *lpStruct)
1226 {
1227 	if (!DEVMODEFc.cached) cacheDEVMODEFields(env, lpObject);
1228 	{
1229 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, DEVMODEFc.dmDeviceName);
1230 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->dmDeviceName) / sizeof(jchar), (jchar *)lpStruct->dmDeviceName);
1231 	}
1232 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmSpecVersion, (jshort)lpStruct->dmSpecVersion);
1233 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmDriverVersion, (jshort)lpStruct->dmDriverVersion);
1234 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmSize, (jshort)lpStruct->dmSize);
1235 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmDriverExtra, (jshort)lpStruct->dmDriverExtra);
1236 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmFields, (jint)lpStruct->dmFields);
1237 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmOrientation, (jshort)lpStruct->dmOrientation);
1238 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmPaperSize, (jshort)lpStruct->dmPaperSize);
1239 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmPaperLength, (jshort)lpStruct->dmPaperLength);
1240 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmPaperWidth, (jshort)lpStruct->dmPaperWidth);
1241 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmScale, (jshort)lpStruct->dmScale);
1242 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmCopies, (jshort)lpStruct->dmCopies);
1243 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmDefaultSource, (jshort)lpStruct->dmDefaultSource);
1244 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmPrintQuality, (jshort)lpStruct->dmPrintQuality);
1245 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmColor, (jshort)lpStruct->dmColor);
1246 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmDuplex, (jshort)lpStruct->dmDuplex);
1247 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmYResolution, (jshort)lpStruct->dmYResolution);
1248 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmTTOption, (jshort)lpStruct->dmTTOption);
1249 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmCollate, (jshort)lpStruct->dmCollate);
1250 	{
1251 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, DEVMODEFc.dmFormName);
1252 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->dmFormName) / sizeof(jchar), (jchar *)lpStruct->dmFormName);
1253 	}
1254 	(*env)->SetShortField(env, lpObject, DEVMODEFc.dmLogPixels, (jshort)lpStruct->dmLogPixels);
1255 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmBitsPerPel, (jint)lpStruct->dmBitsPerPel);
1256 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmPelsWidth, (jint)lpStruct->dmPelsWidth);
1257 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmPelsHeight, (jint)lpStruct->dmPelsHeight);
1258 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmNup, (jint)lpStruct->dmNup);
1259 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmDisplayFrequency, (jint)lpStruct->dmDisplayFrequency);
1260 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmICMMethod, (jint)lpStruct->dmICMMethod);
1261 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmICMIntent, (jint)lpStruct->dmICMIntent);
1262 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmMediaType, (jint)lpStruct->dmMediaType);
1263 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmDitherType, (jint)lpStruct->dmDitherType);
1264 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmReserved1, (jint)lpStruct->dmReserved1);
1265 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmReserved2, (jint)lpStruct->dmReserved2);
1266 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmPanningWidth, (jint)lpStruct->dmPanningWidth);
1267 	(*env)->SetIntField(env, lpObject, DEVMODEFc.dmPanningHeight, (jint)lpStruct->dmPanningHeight);
1268 }
1269 #endif
1270 
1271 #ifndef NO_DIBSECTION
1272 typedef struct DIBSECTION_FID_CACHE {
1273 	int cached;
1274 	jclass clazz;
1275 	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant, dsBitfields0, dsBitfields1, dsBitfields2, dshSection, dsOffset;
1276 } DIBSECTION_FID_CACHE;
1277 
1278 DIBSECTION_FID_CACHE DIBSECTIONFc;
1279 
cacheDIBSECTIONFields(JNIEnv * env,jobject lpObject)1280 void cacheDIBSECTIONFields(JNIEnv *env, jobject lpObject)
1281 {
1282 	if (DIBSECTIONFc.cached) return;
1283 	cacheBITMAPFields(env, lpObject);
1284 	DIBSECTIONFc.clazz = (*env)->GetObjectClass(env, lpObject);
1285 	DIBSECTIONFc.biSize = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSize", "I");
1286 	DIBSECTIONFc.biWidth = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biWidth", "I");
1287 	DIBSECTIONFc.biHeight = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biHeight", "I");
1288 	DIBSECTIONFc.biPlanes = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biPlanes", "S");
1289 	DIBSECTIONFc.biBitCount = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biBitCount", "S");
1290 	DIBSECTIONFc.biCompression = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biCompression", "I");
1291 	DIBSECTIONFc.biSizeImage = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSizeImage", "I");
1292 	DIBSECTIONFc.biXPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biXPelsPerMeter", "I");
1293 	DIBSECTIONFc.biYPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biYPelsPerMeter", "I");
1294 	DIBSECTIONFc.biClrUsed = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrUsed", "I");
1295 	DIBSECTIONFc.biClrImportant = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrImportant", "I");
1296 	DIBSECTIONFc.dsBitfields0 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields0", "I");
1297 	DIBSECTIONFc.dsBitfields1 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields1", "I");
1298 	DIBSECTIONFc.dsBitfields2 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields2", "I");
1299 	DIBSECTIONFc.dshSection = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dshSection", "J");
1300 	DIBSECTIONFc.dsOffset = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsOffset", "I");
1301 	DIBSECTIONFc.cached = 1;
1302 }
1303 
getDIBSECTIONFields(JNIEnv * env,jobject lpObject,DIBSECTION * lpStruct)1304 DIBSECTION *getDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)
1305 {
1306 	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);
1307 	getBITMAPFields(env, lpObject, (BITMAP *)lpStruct);
1308 	lpStruct->dsBmih.biSize = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSize);
1309 	lpStruct->dsBmih.biWidth = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biWidth);
1310 	lpStruct->dsBmih.biHeight = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biHeight);
1311 	lpStruct->dsBmih.biPlanes = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biPlanes);
1312 	lpStruct->dsBmih.biBitCount = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biBitCount);
1313 	lpStruct->dsBmih.biCompression = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biCompression);
1314 	lpStruct->dsBmih.biSizeImage = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSizeImage);
1315 	lpStruct->dsBmih.biXPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter);
1316 	lpStruct->dsBmih.biYPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter);
1317 	lpStruct->dsBmih.biClrUsed = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrUsed);
1318 	lpStruct->dsBmih.biClrImportant = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrImportant);
1319 	lpStruct->dsBitfields[0] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0);
1320 	lpStruct->dsBitfields[1] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1);
1321 	lpStruct->dsBitfields[2] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2);
1322 	lpStruct->dshSection = (HANDLE)(*env)->GetLongField(env, lpObject, DIBSECTIONFc.dshSection);
1323 	lpStruct->dsOffset = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsOffset);
1324 	return lpStruct;
1325 }
1326 
setDIBSECTIONFields(JNIEnv * env,jobject lpObject,DIBSECTION * lpStruct)1327 void setDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)
1328 {
1329 	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);
1330 	setBITMAPFields(env, lpObject, (BITMAP *)lpStruct);
1331 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSize, (jint)lpStruct->dsBmih.biSize);
1332 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biWidth, (jint)lpStruct->dsBmih.biWidth);
1333 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biHeight, (jint)lpStruct->dsBmih.biHeight);
1334 	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biPlanes, (jshort)lpStruct->dsBmih.biPlanes);
1335 	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biBitCount, (jshort)lpStruct->dsBmih.biBitCount);
1336 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biCompression, (jint)lpStruct->dsBmih.biCompression);
1337 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSizeImage, (jint)lpStruct->dsBmih.biSizeImage);
1338 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter, (jint)lpStruct->dsBmih.biXPelsPerMeter);
1339 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter, (jint)lpStruct->dsBmih.biYPelsPerMeter);
1340 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrUsed, (jint)lpStruct->dsBmih.biClrUsed);
1341 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrImportant, (jint)lpStruct->dsBmih.biClrImportant);
1342 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0, (jint)lpStruct->dsBitfields[0]);
1343 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1, (jint)lpStruct->dsBitfields[1]);
1344 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2, (jint)lpStruct->dsBitfields[2]);
1345 	(*env)->SetLongField(env, lpObject, DIBSECTIONFc.dshSection, (jlong)lpStruct->dshSection);
1346 	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsOffset, (jint)lpStruct->dsOffset);
1347 }
1348 #endif
1349 
1350 #ifndef NO_DOCHOSTUIINFO
1351 typedef struct DOCHOSTUIINFO_FID_CACHE {
1352 	int cached;
1353 	jclass clazz;
1354 	jfieldID cbSize, dwFlags, dwDoubleClick, pchHostCss, pchHostNS;
1355 } DOCHOSTUIINFO_FID_CACHE;
1356 
1357 DOCHOSTUIINFO_FID_CACHE DOCHOSTUIINFOFc;
1358 
cacheDOCHOSTUIINFOFields(JNIEnv * env,jobject lpObject)1359 void cacheDOCHOSTUIINFOFields(JNIEnv *env, jobject lpObject)
1360 {
1361 	if (DOCHOSTUIINFOFc.cached) return;
1362 	DOCHOSTUIINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
1363 	DOCHOSTUIINFOFc.cbSize = (*env)->GetFieldID(env, DOCHOSTUIINFOFc.clazz, "cbSize", "I");
1364 	DOCHOSTUIINFOFc.dwFlags = (*env)->GetFieldID(env, DOCHOSTUIINFOFc.clazz, "dwFlags", "I");
1365 	DOCHOSTUIINFOFc.dwDoubleClick = (*env)->GetFieldID(env, DOCHOSTUIINFOFc.clazz, "dwDoubleClick", "I");
1366 	DOCHOSTUIINFOFc.pchHostCss = (*env)->GetFieldID(env, DOCHOSTUIINFOFc.clazz, "pchHostCss", "J");
1367 	DOCHOSTUIINFOFc.pchHostNS = (*env)->GetFieldID(env, DOCHOSTUIINFOFc.clazz, "pchHostNS", "J");
1368 	DOCHOSTUIINFOFc.cached = 1;
1369 }
1370 
getDOCHOSTUIINFOFields(JNIEnv * env,jobject lpObject,DOCHOSTUIINFO * lpStruct)1371 DOCHOSTUIINFO *getDOCHOSTUIINFOFields(JNIEnv *env, jobject lpObject, DOCHOSTUIINFO *lpStruct)
1372 {
1373 	if (!DOCHOSTUIINFOFc.cached) cacheDOCHOSTUIINFOFields(env, lpObject);
1374 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DOCHOSTUIINFOFc.cbSize);
1375 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, DOCHOSTUIINFOFc.dwFlags);
1376 	lpStruct->dwDoubleClick = (*env)->GetIntField(env, lpObject, DOCHOSTUIINFOFc.dwDoubleClick);
1377 	lpStruct->pchHostCss = (OLECHAR *)(*env)->GetLongField(env, lpObject, DOCHOSTUIINFOFc.pchHostCss);
1378 	lpStruct->pchHostNS = (OLECHAR *)(*env)->GetLongField(env, lpObject, DOCHOSTUIINFOFc.pchHostNS);
1379 	return lpStruct;
1380 }
1381 
setDOCHOSTUIINFOFields(JNIEnv * env,jobject lpObject,DOCHOSTUIINFO * lpStruct)1382 void setDOCHOSTUIINFOFields(JNIEnv *env, jobject lpObject, DOCHOSTUIINFO *lpStruct)
1383 {
1384 	if (!DOCHOSTUIINFOFc.cached) cacheDOCHOSTUIINFOFields(env, lpObject);
1385 	(*env)->SetIntField(env, lpObject, DOCHOSTUIINFOFc.cbSize, (jint)lpStruct->cbSize);
1386 	(*env)->SetIntField(env, lpObject, DOCHOSTUIINFOFc.dwFlags, (jint)lpStruct->dwFlags);
1387 	(*env)->SetIntField(env, lpObject, DOCHOSTUIINFOFc.dwDoubleClick, (jint)lpStruct->dwDoubleClick);
1388 	(*env)->SetLongField(env, lpObject, DOCHOSTUIINFOFc.pchHostCss, (jlong)lpStruct->pchHostCss);
1389 	(*env)->SetLongField(env, lpObject, DOCHOSTUIINFOFc.pchHostNS, (jlong)lpStruct->pchHostNS);
1390 }
1391 #endif
1392 
1393 #ifndef NO_DOCINFO
1394 typedef struct DOCINFO_FID_CACHE {
1395 	int cached;
1396 	jclass clazz;
1397 	jfieldID cbSize, lpszDocName, lpszOutput, lpszDatatype, fwType;
1398 } DOCINFO_FID_CACHE;
1399 
1400 DOCINFO_FID_CACHE DOCINFOFc;
1401 
cacheDOCINFOFields(JNIEnv * env,jobject lpObject)1402 void cacheDOCINFOFields(JNIEnv *env, jobject lpObject)
1403 {
1404 	if (DOCINFOFc.cached) return;
1405 	DOCINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
1406 	DOCINFOFc.cbSize = (*env)->GetFieldID(env, DOCINFOFc.clazz, "cbSize", "I");
1407 	DOCINFOFc.lpszDocName = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDocName", "J");
1408 	DOCINFOFc.lpszOutput = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszOutput", "J");
1409 	DOCINFOFc.lpszDatatype = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDatatype", "J");
1410 	DOCINFOFc.fwType = (*env)->GetFieldID(env, DOCINFOFc.clazz, "fwType", "I");
1411 	DOCINFOFc.cached = 1;
1412 }
1413 
getDOCINFOFields(JNIEnv * env,jobject lpObject,DOCINFO * lpStruct)1414 DOCINFO *getDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)
1415 {
1416 	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);
1417 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DOCINFOFc.cbSize);
1418 	lpStruct->lpszDocName = (LPCTSTR)(*env)->GetLongField(env, lpObject, DOCINFOFc.lpszDocName);
1419 	lpStruct->lpszOutput = (LPCTSTR)(*env)->GetLongField(env, lpObject, DOCINFOFc.lpszOutput);
1420 	lpStruct->lpszDatatype = (LPCTSTR)(*env)->GetLongField(env, lpObject, DOCINFOFc.lpszDatatype);
1421 	lpStruct->fwType = (*env)->GetIntField(env, lpObject, DOCINFOFc.fwType);
1422 	return lpStruct;
1423 }
1424 
setDOCINFOFields(JNIEnv * env,jobject lpObject,DOCINFO * lpStruct)1425 void setDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)
1426 {
1427 	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);
1428 	(*env)->SetIntField(env, lpObject, DOCINFOFc.cbSize, (jint)lpStruct->cbSize);
1429 	(*env)->SetLongField(env, lpObject, DOCINFOFc.lpszDocName, (jlong)lpStruct->lpszDocName);
1430 	(*env)->SetLongField(env, lpObject, DOCINFOFc.lpszOutput, (jlong)lpStruct->lpszOutput);
1431 	(*env)->SetLongField(env, lpObject, DOCINFOFc.lpszDatatype, (jlong)lpStruct->lpszDatatype);
1432 	(*env)->SetIntField(env, lpObject, DOCINFOFc.fwType, (jint)lpStruct->fwType);
1433 }
1434 #endif
1435 
1436 #ifndef NO_DRAWITEMSTRUCT
1437 typedef struct DRAWITEMSTRUCT_FID_CACHE {
1438 	int cached;
1439 	jclass clazz;
1440 	jfieldID CtlType, CtlID, itemID, itemAction, itemState, hwndItem, hDC, left, top, bottom, right, itemData;
1441 } DRAWITEMSTRUCT_FID_CACHE;
1442 
1443 DRAWITEMSTRUCT_FID_CACHE DRAWITEMSTRUCTFc;
1444 
cacheDRAWITEMSTRUCTFields(JNIEnv * env,jobject lpObject)1445 void cacheDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject)
1446 {
1447 	if (DRAWITEMSTRUCTFc.cached) return;
1448 	DRAWITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
1449 	DRAWITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlType", "I");
1450 	DRAWITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlID", "I");
1451 	DRAWITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemID", "I");
1452 	DRAWITEMSTRUCTFc.itemAction = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemAction", "I");
1453 	DRAWITEMSTRUCTFc.itemState = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemState", "I");
1454 	DRAWITEMSTRUCTFc.hwndItem = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hwndItem", "J");
1455 	DRAWITEMSTRUCTFc.hDC = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hDC", "J");
1456 	DRAWITEMSTRUCTFc.left = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "left", "I");
1457 	DRAWITEMSTRUCTFc.top = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "top", "I");
1458 	DRAWITEMSTRUCTFc.bottom = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "bottom", "I");
1459 	DRAWITEMSTRUCTFc.right = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "right", "I");
1460 	DRAWITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemData", "J");
1461 	DRAWITEMSTRUCTFc.cached = 1;
1462 }
1463 
getDRAWITEMSTRUCTFields(JNIEnv * env,jobject lpObject,DRAWITEMSTRUCT * lpStruct)1464 DRAWITEMSTRUCT *getDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)
1465 {
1466 	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);
1467 	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType);
1468 	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID);
1469 	lpStruct->itemID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID);
1470 	lpStruct->itemAction = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction);
1471 	lpStruct->itemState = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState);
1472 	lpStruct->hwndItem = (HWND)(*env)->GetLongField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem);
1473 	lpStruct->hDC = (HDC)(*env)->GetLongField(env, lpObject, DRAWITEMSTRUCTFc.hDC);
1474 	lpStruct->rcItem.left = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.left);
1475 	lpStruct->rcItem.top = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.top);
1476 	lpStruct->rcItem.bottom = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom);
1477 	lpStruct->rcItem.right = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.right);
1478 	lpStruct->itemData = (*env)->GetLongField(env, lpObject, DRAWITEMSTRUCTFc.itemData);
1479 	return lpStruct;
1480 }
1481 
setDRAWITEMSTRUCTFields(JNIEnv * env,jobject lpObject,DRAWITEMSTRUCT * lpStruct)1482 void setDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)
1483 {
1484 	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);
1485 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);
1486 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);
1487 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);
1488 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction, (jint)lpStruct->itemAction);
1489 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState, (jint)lpStruct->itemState);
1490 	(*env)->SetLongField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem, (jlong)lpStruct->hwndItem);
1491 	(*env)->SetLongField(env, lpObject, DRAWITEMSTRUCTFc.hDC, (jlong)lpStruct->hDC);
1492 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.left, (jint)lpStruct->rcItem.left);
1493 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.top, (jint)lpStruct->rcItem.top);
1494 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom, (jint)lpStruct->rcItem.bottom);
1495 	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.right, (jint)lpStruct->rcItem.right);
1496 	(*env)->SetLongField(env, lpObject, DRAWITEMSTRUCTFc.itemData, (jlong)lpStruct->itemData);
1497 }
1498 #endif
1499 
1500 #ifndef NO_DROPFILES
1501 typedef struct DROPFILES_FID_CACHE {
1502 	int cached;
1503 	jclass clazz;
1504 	jfieldID pFiles, pt_x, pt_y, fNC, fWide;
1505 } DROPFILES_FID_CACHE;
1506 
1507 DROPFILES_FID_CACHE DROPFILESFc;
1508 
cacheDROPFILESFields(JNIEnv * env,jobject lpObject)1509 void cacheDROPFILESFields(JNIEnv *env, jobject lpObject)
1510 {
1511 	if (DROPFILESFc.cached) return;
1512 	DROPFILESFc.clazz = (*env)->GetObjectClass(env, lpObject);
1513 	DROPFILESFc.pFiles = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pFiles", "I");
1514 	DROPFILESFc.pt_x = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_x", "I");
1515 	DROPFILESFc.pt_y = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_y", "I");
1516 	DROPFILESFc.fNC = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fNC", "I");
1517 	DROPFILESFc.fWide = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fWide", "I");
1518 	DROPFILESFc.cached = 1;
1519 }
1520 
getDROPFILESFields(JNIEnv * env,jobject lpObject,DROPFILES * lpStruct)1521 DROPFILES *getDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)
1522 {
1523 	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);
1524 	lpStruct->pFiles = (*env)->GetIntField(env, lpObject, DROPFILESFc.pFiles);
1525 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_x);
1526 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_y);
1527 	lpStruct->fNC = (*env)->GetIntField(env, lpObject, DROPFILESFc.fNC);
1528 	lpStruct->fWide = (*env)->GetIntField(env, lpObject, DROPFILESFc.fWide);
1529 	return lpStruct;
1530 }
1531 
setDROPFILESFields(JNIEnv * env,jobject lpObject,DROPFILES * lpStruct)1532 void setDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)
1533 {
1534 	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);
1535 	(*env)->SetIntField(env, lpObject, DROPFILESFc.pFiles, (jint)lpStruct->pFiles);
1536 	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_x, (jint)lpStruct->pt.x);
1537 	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_y, (jint)lpStruct->pt.y);
1538 	(*env)->SetIntField(env, lpObject, DROPFILESFc.fNC, (jint)lpStruct->fNC);
1539 	(*env)->SetIntField(env, lpObject, DROPFILESFc.fWide, (jint)lpStruct->fWide);
1540 }
1541 #endif
1542 
1543 #ifndef NO_DTTOPTS
1544 typedef struct DTTOPTS_FID_CACHE {
1545 	int cached;
1546 	jclass clazz;
1547 	jfieldID dwSize, dwFlags, crText, crBorder, crShadow, iTextShadowType, ptShadowOffset, iBorderSize, iFontPropId, iColorPropId, iStateId, fApplyOverlay, iGlowSize, pfnDrawTextCallback, lParam;
1548 } DTTOPTS_FID_CACHE;
1549 
1550 DTTOPTS_FID_CACHE DTTOPTSFc;
1551 
cacheDTTOPTSFields(JNIEnv * env,jobject lpObject)1552 void cacheDTTOPTSFields(JNIEnv *env, jobject lpObject)
1553 {
1554 	if (DTTOPTSFc.cached) return;
1555 	DTTOPTSFc.clazz = (*env)->GetObjectClass(env, lpObject);
1556 	DTTOPTSFc.dwSize = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "dwSize", "I");
1557 	DTTOPTSFc.dwFlags = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "dwFlags", "I");
1558 	DTTOPTSFc.crText = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "crText", "I");
1559 	DTTOPTSFc.crBorder = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "crBorder", "I");
1560 	DTTOPTSFc.crShadow = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "crShadow", "I");
1561 	DTTOPTSFc.iTextShadowType = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iTextShadowType", "I");
1562 	DTTOPTSFc.ptShadowOffset = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "ptShadowOffset", "Lorg/eclipse/swt/internal/win32/POINT;");
1563 	DTTOPTSFc.iBorderSize = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iBorderSize", "I");
1564 	DTTOPTSFc.iFontPropId = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iFontPropId", "I");
1565 	DTTOPTSFc.iColorPropId = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iColorPropId", "I");
1566 	DTTOPTSFc.iStateId = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iStateId", "I");
1567 	DTTOPTSFc.fApplyOverlay = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "fApplyOverlay", "Z");
1568 	DTTOPTSFc.iGlowSize = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "iGlowSize", "I");
1569 	DTTOPTSFc.pfnDrawTextCallback = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "pfnDrawTextCallback", "J");
1570 	DTTOPTSFc.lParam = (*env)->GetFieldID(env, DTTOPTSFc.clazz, "lParam", "J");
1571 	DTTOPTSFc.cached = 1;
1572 }
1573 
getDTTOPTSFields(JNIEnv * env,jobject lpObject,DTTOPTS * lpStruct)1574 DTTOPTS *getDTTOPTSFields(JNIEnv *env, jobject lpObject, DTTOPTS *lpStruct)
1575 {
1576 	if (!DTTOPTSFc.cached) cacheDTTOPTSFields(env, lpObject);
1577 	lpStruct->dwSize = (*env)->GetIntField(env, lpObject, DTTOPTSFc.dwSize);
1578 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, DTTOPTSFc.dwFlags);
1579 	lpStruct->crText = (*env)->GetIntField(env, lpObject, DTTOPTSFc.crText);
1580 	lpStruct->crBorder = (*env)->GetIntField(env, lpObject, DTTOPTSFc.crBorder);
1581 	lpStruct->crShadow = (*env)->GetIntField(env, lpObject, DTTOPTSFc.crShadow);
1582 	lpStruct->iTextShadowType = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iTextShadowType);
1583 	{
1584 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, DTTOPTSFc.ptShadowOffset);
1585 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->ptShadowOffset);
1586 	}
1587 	lpStruct->iBorderSize = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iBorderSize);
1588 	lpStruct->iFontPropId = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iFontPropId);
1589 	lpStruct->iColorPropId = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iColorPropId);
1590 	lpStruct->iStateId = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iStateId);
1591 	lpStruct->fApplyOverlay = (*env)->GetBooleanField(env, lpObject, DTTOPTSFc.fApplyOverlay);
1592 	lpStruct->iGlowSize = (*env)->GetIntField(env, lpObject, DTTOPTSFc.iGlowSize);
1593 	lpStruct->pfnDrawTextCallback = (DTT_CALLBACK_PROC)(*env)->GetLongField(env, lpObject, DTTOPTSFc.pfnDrawTextCallback);
1594 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, DTTOPTSFc.lParam);
1595 	return lpStruct;
1596 }
1597 
setDTTOPTSFields(JNIEnv * env,jobject lpObject,DTTOPTS * lpStruct)1598 void setDTTOPTSFields(JNIEnv *env, jobject lpObject, DTTOPTS *lpStruct)
1599 {
1600 	if (!DTTOPTSFc.cached) cacheDTTOPTSFields(env, lpObject);
1601 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.dwSize, (jint)lpStruct->dwSize);
1602 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.dwFlags, (jint)lpStruct->dwFlags);
1603 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.crText, (jint)lpStruct->crText);
1604 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.crBorder, (jint)lpStruct->crBorder);
1605 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.crShadow, (jint)lpStruct->crShadow);
1606 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iTextShadowType, (jint)lpStruct->iTextShadowType);
1607 	{
1608 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, DTTOPTSFc.ptShadowOffset);
1609 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->ptShadowOffset);
1610 	}
1611 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iBorderSize, (jint)lpStruct->iBorderSize);
1612 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iFontPropId, (jint)lpStruct->iFontPropId);
1613 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iColorPropId, (jint)lpStruct->iColorPropId);
1614 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iStateId, (jint)lpStruct->iStateId);
1615 	(*env)->SetBooleanField(env, lpObject, DTTOPTSFc.fApplyOverlay, (jboolean)lpStruct->fApplyOverlay);
1616 	(*env)->SetIntField(env, lpObject, DTTOPTSFc.iGlowSize, (jint)lpStruct->iGlowSize);
1617 	(*env)->SetLongField(env, lpObject, DTTOPTSFc.pfnDrawTextCallback, (jlong)lpStruct->pfnDrawTextCallback);
1618 	(*env)->SetLongField(env, lpObject, DTTOPTSFc.lParam, (jlong)lpStruct->lParam);
1619 }
1620 #endif
1621 
1622 #ifndef NO_EMR
1623 typedef struct EMR_FID_CACHE {
1624 	int cached;
1625 	jclass clazz;
1626 	jfieldID iType, nSize;
1627 } EMR_FID_CACHE;
1628 
1629 EMR_FID_CACHE EMRFc;
1630 
cacheEMRFields(JNIEnv * env,jobject lpObject)1631 void cacheEMRFields(JNIEnv *env, jobject lpObject)
1632 {
1633 	if (EMRFc.cached) return;
1634 	EMRFc.clazz = (*env)->GetObjectClass(env, lpObject);
1635 	EMRFc.iType = (*env)->GetFieldID(env, EMRFc.clazz, "iType", "I");
1636 	EMRFc.nSize = (*env)->GetFieldID(env, EMRFc.clazz, "nSize", "I");
1637 	EMRFc.cached = 1;
1638 }
1639 
getEMRFields(JNIEnv * env,jobject lpObject,EMR * lpStruct)1640 EMR *getEMRFields(JNIEnv *env, jobject lpObject, EMR *lpStruct)
1641 {
1642 	if (!EMRFc.cached) cacheEMRFields(env, lpObject);
1643 	lpStruct->iType = (*env)->GetIntField(env, lpObject, EMRFc.iType);
1644 	lpStruct->nSize = (*env)->GetIntField(env, lpObject, EMRFc.nSize);
1645 	return lpStruct;
1646 }
1647 
setEMRFields(JNIEnv * env,jobject lpObject,EMR * lpStruct)1648 void setEMRFields(JNIEnv *env, jobject lpObject, EMR *lpStruct)
1649 {
1650 	if (!EMRFc.cached) cacheEMRFields(env, lpObject);
1651 	(*env)->SetIntField(env, lpObject, EMRFc.iType, (jint)lpStruct->iType);
1652 	(*env)->SetIntField(env, lpObject, EMRFc.nSize, (jint)lpStruct->nSize);
1653 }
1654 #endif
1655 
1656 #ifndef NO_EMREXTCREATEFONTINDIRECTW
1657 typedef struct EMREXTCREATEFONTINDIRECTW_FID_CACHE {
1658 	int cached;
1659 	jclass clazz;
1660 	jfieldID emr, ihFont, elfw;
1661 } EMREXTCREATEFONTINDIRECTW_FID_CACHE;
1662 
1663 EMREXTCREATEFONTINDIRECTW_FID_CACHE EMREXTCREATEFONTINDIRECTWFc;
1664 
cacheEMREXTCREATEFONTINDIRECTWFields(JNIEnv * env,jobject lpObject)1665 void cacheEMREXTCREATEFONTINDIRECTWFields(JNIEnv *env, jobject lpObject)
1666 {
1667 	if (EMREXTCREATEFONTINDIRECTWFc.cached) return;
1668 	EMREXTCREATEFONTINDIRECTWFc.clazz = (*env)->GetObjectClass(env, lpObject);
1669 	EMREXTCREATEFONTINDIRECTWFc.emr = (*env)->GetFieldID(env, EMREXTCREATEFONTINDIRECTWFc.clazz, "emr", "Lorg/eclipse/swt/internal/win32/EMR;");
1670 	EMREXTCREATEFONTINDIRECTWFc.ihFont = (*env)->GetFieldID(env, EMREXTCREATEFONTINDIRECTWFc.clazz, "ihFont", "I");
1671 	EMREXTCREATEFONTINDIRECTWFc.elfw = (*env)->GetFieldID(env, EMREXTCREATEFONTINDIRECTWFc.clazz, "elfw", "Lorg/eclipse/swt/internal/win32/EXTLOGFONTW;");
1672 	EMREXTCREATEFONTINDIRECTWFc.cached = 1;
1673 }
1674 
getEMREXTCREATEFONTINDIRECTWFields(JNIEnv * env,jobject lpObject,EMREXTCREATEFONTINDIRECTW * lpStruct)1675 EMREXTCREATEFONTINDIRECTW *getEMREXTCREATEFONTINDIRECTWFields(JNIEnv *env, jobject lpObject, EMREXTCREATEFONTINDIRECTW *lpStruct)
1676 {
1677 	if (!EMREXTCREATEFONTINDIRECTWFc.cached) cacheEMREXTCREATEFONTINDIRECTWFields(env, lpObject);
1678 	{
1679 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.emr);
1680 	if (lpObject1 != NULL) getEMRFields(env, lpObject1, &lpStruct->emr);
1681 	}
1682 	lpStruct->ihFont = (*env)->GetIntField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.ihFont);
1683 	{
1684 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.elfw);
1685 	if (lpObject1 != NULL) getEXTLOGFONTWFields(env, lpObject1, &lpStruct->elfw);
1686 	}
1687 	return lpStruct;
1688 }
1689 
setEMREXTCREATEFONTINDIRECTWFields(JNIEnv * env,jobject lpObject,EMREXTCREATEFONTINDIRECTW * lpStruct)1690 void setEMREXTCREATEFONTINDIRECTWFields(JNIEnv *env, jobject lpObject, EMREXTCREATEFONTINDIRECTW *lpStruct)
1691 {
1692 	if (!EMREXTCREATEFONTINDIRECTWFc.cached) cacheEMREXTCREATEFONTINDIRECTWFields(env, lpObject);
1693 	{
1694 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.emr);
1695 	if (lpObject1 != NULL) setEMRFields(env, lpObject1, &lpStruct->emr);
1696 	}
1697 	(*env)->SetIntField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.ihFont, (jint)lpStruct->ihFont);
1698 	{
1699 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EMREXTCREATEFONTINDIRECTWFc.elfw);
1700 	if (lpObject1 != NULL) setEXTLOGFONTWFields(env, lpObject1, &lpStruct->elfw);
1701 	}
1702 }
1703 #endif
1704 
1705 #ifndef NO_EXTLOGFONTW
1706 typedef struct EXTLOGFONTW_FID_CACHE {
1707 	int cached;
1708 	jclass clazz;
1709 	jfieldID elfLogFont, elfFullName, elfStyle, elfVersion, elfStyleSize, elfMatch, elfReserved, elfVendorId, elfCulture, elfPanose;
1710 } EXTLOGFONTW_FID_CACHE;
1711 
1712 EXTLOGFONTW_FID_CACHE EXTLOGFONTWFc;
1713 
cacheEXTLOGFONTWFields(JNIEnv * env,jobject lpObject)1714 void cacheEXTLOGFONTWFields(JNIEnv *env, jobject lpObject)
1715 {
1716 	if (EXTLOGFONTWFc.cached) return;
1717 	EXTLOGFONTWFc.clazz = (*env)->GetObjectClass(env, lpObject);
1718 	EXTLOGFONTWFc.elfLogFont = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfLogFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
1719 	EXTLOGFONTWFc.elfFullName = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfFullName", "[C");
1720 	EXTLOGFONTWFc.elfStyle = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfStyle", "[C");
1721 	EXTLOGFONTWFc.elfVersion = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfVersion", "I");
1722 	EXTLOGFONTWFc.elfStyleSize = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfStyleSize", "I");
1723 	EXTLOGFONTWFc.elfMatch = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfMatch", "I");
1724 	EXTLOGFONTWFc.elfReserved = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfReserved", "I");
1725 	EXTLOGFONTWFc.elfVendorId = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfVendorId", "[B");
1726 	EXTLOGFONTWFc.elfCulture = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfCulture", "I");
1727 	EXTLOGFONTWFc.elfPanose = (*env)->GetFieldID(env, EXTLOGFONTWFc.clazz, "elfPanose", "Lorg/eclipse/swt/internal/win32/PANOSE;");
1728 	EXTLOGFONTWFc.cached = 1;
1729 }
1730 
getEXTLOGFONTWFields(JNIEnv * env,jobject lpObject,EXTLOGFONTW * lpStruct)1731 EXTLOGFONTW *getEXTLOGFONTWFields(JNIEnv *env, jobject lpObject, EXTLOGFONTW *lpStruct)
1732 {
1733 	if (!EXTLOGFONTWFc.cached) cacheEXTLOGFONTWFields(env, lpObject);
1734 	{
1735 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfLogFont);
1736 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->elfLogFont);
1737 	}
1738 	{
1739 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfFullName);
1740 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfFullName) / sizeof(jchar), (jchar *)lpStruct->elfFullName);
1741 	}
1742 	{
1743 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfStyle);
1744 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfStyle) / sizeof(jchar), (jchar *)lpStruct->elfStyle);
1745 	}
1746 	lpStruct->elfVersion = (*env)->GetIntField(env, lpObject, EXTLOGFONTWFc.elfVersion);
1747 	lpStruct->elfStyleSize = (*env)->GetIntField(env, lpObject, EXTLOGFONTWFc.elfStyleSize);
1748 	lpStruct->elfMatch = (*env)->GetIntField(env, lpObject, EXTLOGFONTWFc.elfMatch);
1749 	lpStruct->elfReserved = (*env)->GetIntField(env, lpObject, EXTLOGFONTWFc.elfReserved);
1750 	{
1751 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfVendorId);
1752 	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfVendorId), (jbyte *)lpStruct->elfVendorId);
1753 	}
1754 	lpStruct->elfCulture = (*env)->GetIntField(env, lpObject, EXTLOGFONTWFc.elfCulture);
1755 	{
1756 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfPanose);
1757 	if (lpObject1 != NULL) getPANOSEFields(env, lpObject1, &lpStruct->elfPanose);
1758 	}
1759 	return lpStruct;
1760 }
1761 
setEXTLOGFONTWFields(JNIEnv * env,jobject lpObject,EXTLOGFONTW * lpStruct)1762 void setEXTLOGFONTWFields(JNIEnv *env, jobject lpObject, EXTLOGFONTW *lpStruct)
1763 {
1764 	if (!EXTLOGFONTWFc.cached) cacheEXTLOGFONTWFields(env, lpObject);
1765 	{
1766 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfLogFont);
1767 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->elfLogFont);
1768 	}
1769 	{
1770 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfFullName);
1771 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfFullName) / sizeof(jchar), (jchar *)lpStruct->elfFullName);
1772 	}
1773 	{
1774 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfStyle);
1775 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfStyle) / sizeof(jchar), (jchar *)lpStruct->elfStyle);
1776 	}
1777 	(*env)->SetIntField(env, lpObject, EXTLOGFONTWFc.elfVersion, (jint)lpStruct->elfVersion);
1778 	(*env)->SetIntField(env, lpObject, EXTLOGFONTWFc.elfStyleSize, (jint)lpStruct->elfStyleSize);
1779 	(*env)->SetIntField(env, lpObject, EXTLOGFONTWFc.elfMatch, (jint)lpStruct->elfMatch);
1780 	(*env)->SetIntField(env, lpObject, EXTLOGFONTWFc.elfReserved, (jint)lpStruct->elfReserved);
1781 	{
1782 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfVendorId);
1783 	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->elfVendorId), (jbyte *)lpStruct->elfVendorId);
1784 	}
1785 	(*env)->SetIntField(env, lpObject, EXTLOGFONTWFc.elfCulture, (jint)lpStruct->elfCulture);
1786 	{
1787 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, EXTLOGFONTWFc.elfPanose);
1788 	if (lpObject1 != NULL) setPANOSEFields(env, lpObject1, &lpStruct->elfPanose);
1789 	}
1790 }
1791 #endif
1792 
1793 #ifndef NO_FILETIME
1794 typedef struct FILETIME_FID_CACHE {
1795 	int cached;
1796 	jclass clazz;
1797 	jfieldID dwLowDateTime, dwHighDateTime;
1798 } FILETIME_FID_CACHE;
1799 
1800 FILETIME_FID_CACHE FILETIMEFc;
1801 
cacheFILETIMEFields(JNIEnv * env,jobject lpObject)1802 void cacheFILETIMEFields(JNIEnv *env, jobject lpObject)
1803 {
1804 	if (FILETIMEFc.cached) return;
1805 	FILETIMEFc.clazz = (*env)->GetObjectClass(env, lpObject);
1806 	FILETIMEFc.dwLowDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwLowDateTime", "I");
1807 	FILETIMEFc.dwHighDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwHighDateTime", "I");
1808 	FILETIMEFc.cached = 1;
1809 }
1810 
getFILETIMEFields(JNIEnv * env,jobject lpObject,FILETIME * lpStruct)1811 FILETIME *getFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)
1812 {
1813 	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);
1814 	lpStruct->dwLowDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwLowDateTime);
1815 	lpStruct->dwHighDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwHighDateTime);
1816 	return lpStruct;
1817 }
1818 
setFILETIMEFields(JNIEnv * env,jobject lpObject,FILETIME * lpStruct)1819 void setFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)
1820 {
1821 	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);
1822 	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwLowDateTime, (jint)lpStruct->dwLowDateTime);
1823 	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwHighDateTime, (jint)lpStruct->dwHighDateTime);
1824 }
1825 #endif
1826 
1827 #ifndef NO_FLICK_DATA
1828 typedef struct FLICK_DATA_FID_CACHE {
1829 	int cached;
1830 	jclass clazz;
1831 	jfieldID iFlickActionCommandCode, iFlickDirection, fControlModifier, fMenuModifier, fAltGRModifier, fWinModifier, fShiftModifier, iReserved, fOnInkingSurface, iActionArgument;
1832 } FLICK_DATA_FID_CACHE;
1833 
1834 FLICK_DATA_FID_CACHE FLICK_DATAFc;
1835 
cacheFLICK_DATAFields(JNIEnv * env,jobject lpObject)1836 void cacheFLICK_DATAFields(JNIEnv *env, jobject lpObject)
1837 {
1838 	if (FLICK_DATAFc.cached) return;
1839 	FLICK_DATAFc.clazz = (*env)->GetObjectClass(env, lpObject);
1840 	FLICK_DATAFc.iFlickActionCommandCode = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iFlickActionCommandCode", "I");
1841 	FLICK_DATAFc.iFlickDirection = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iFlickDirection", "B");
1842 	FLICK_DATAFc.fControlModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fControlModifier", "Z");
1843 	FLICK_DATAFc.fMenuModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fMenuModifier", "Z");
1844 	FLICK_DATAFc.fAltGRModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fAltGRModifier", "Z");
1845 	FLICK_DATAFc.fWinModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fWinModifier", "Z");
1846 	FLICK_DATAFc.fShiftModifier = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fShiftModifier", "Z");
1847 	FLICK_DATAFc.iReserved = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iReserved", "I");
1848 	FLICK_DATAFc.fOnInkingSurface = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "fOnInkingSurface", "Z");
1849 	FLICK_DATAFc.iActionArgument = (*env)->GetFieldID(env, FLICK_DATAFc.clazz, "iActionArgument", "I");
1850 	FLICK_DATAFc.cached = 1;
1851 }
1852 
getFLICK_DATAFields(JNIEnv * env,jobject lpObject,FLICK_DATA * lpStruct)1853 FLICK_DATA *getFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct)
1854 {
1855 	if (!FLICK_DATAFc.cached) cacheFLICK_DATAFields(env, lpObject);
1856 	lpStruct->iFlickActionCommandCode = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iFlickActionCommandCode);
1857 	lpStruct->iFlickDirection = (*env)->GetByteField(env, lpObject, FLICK_DATAFc.iFlickDirection);
1858 	lpStruct->fControlModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fControlModifier);
1859 	lpStruct->fMenuModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fMenuModifier);
1860 	lpStruct->fAltGRModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fAltGRModifier);
1861 	lpStruct->fWinModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fWinModifier);
1862 	lpStruct->fShiftModifier = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fShiftModifier);
1863 	lpStruct->iReserved = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iReserved);
1864 	lpStruct->fOnInkingSurface = (*env)->GetBooleanField(env, lpObject, FLICK_DATAFc.fOnInkingSurface);
1865 	lpStruct->iActionArgument = (*env)->GetIntField(env, lpObject, FLICK_DATAFc.iActionArgument);
1866 	return lpStruct;
1867 }
1868 
setFLICK_DATAFields(JNIEnv * env,jobject lpObject,FLICK_DATA * lpStruct)1869 void setFLICK_DATAFields(JNIEnv *env, jobject lpObject, FLICK_DATA *lpStruct)
1870 {
1871 	if (!FLICK_DATAFc.cached) cacheFLICK_DATAFields(env, lpObject);
1872 	(*env)->SetIntField(env, lpObject, FLICK_DATAFc.iFlickActionCommandCode, (jint)lpStruct->iFlickActionCommandCode);
1873 	(*env)->SetByteField(env, lpObject, FLICK_DATAFc.iFlickDirection, (jbyte)lpStruct->iFlickDirection);
1874 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fControlModifier, (jboolean)lpStruct->fControlModifier);
1875 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fMenuModifier, (jboolean)lpStruct->fMenuModifier);
1876 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fAltGRModifier, (jboolean)lpStruct->fAltGRModifier);
1877 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fWinModifier, (jboolean)lpStruct->fWinModifier);
1878 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fShiftModifier, (jboolean)lpStruct->fShiftModifier);
1879 	(*env)->SetIntField(env, lpObject, FLICK_DATAFc.iReserved, (jint)lpStruct->iReserved);
1880 	(*env)->SetBooleanField(env, lpObject, FLICK_DATAFc.fOnInkingSurface, (jboolean)lpStruct->fOnInkingSurface);
1881 	(*env)->SetIntField(env, lpObject, FLICK_DATAFc.iActionArgument, (jint)lpStruct->iActionArgument);
1882 }
1883 #endif
1884 
1885 #ifndef NO_FLICK_POINT
1886 typedef struct FLICK_POINT_FID_CACHE {
1887 	int cached;
1888 	jclass clazz;
1889 	jfieldID x, y;
1890 } FLICK_POINT_FID_CACHE;
1891 
1892 FLICK_POINT_FID_CACHE FLICK_POINTFc;
1893 
cacheFLICK_POINTFields(JNIEnv * env,jobject lpObject)1894 void cacheFLICK_POINTFields(JNIEnv *env, jobject lpObject)
1895 {
1896 	if (FLICK_POINTFc.cached) return;
1897 	FLICK_POINTFc.clazz = (*env)->GetObjectClass(env, lpObject);
1898 	FLICK_POINTFc.x = (*env)->GetFieldID(env, FLICK_POINTFc.clazz, "x", "I");
1899 	FLICK_POINTFc.y = (*env)->GetFieldID(env, FLICK_POINTFc.clazz, "y", "I");
1900 	FLICK_POINTFc.cached = 1;
1901 }
1902 
getFLICK_POINTFields(JNIEnv * env,jobject lpObject,FLICK_POINT * lpStruct)1903 FLICK_POINT *getFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct)
1904 {
1905 	if (!FLICK_POINTFc.cached) cacheFLICK_POINTFields(env, lpObject);
1906 	lpStruct->x = (*env)->GetIntField(env, lpObject, FLICK_POINTFc.x);
1907 	lpStruct->y = (*env)->GetIntField(env, lpObject, FLICK_POINTFc.y);
1908 	return lpStruct;
1909 }
1910 
setFLICK_POINTFields(JNIEnv * env,jobject lpObject,FLICK_POINT * lpStruct)1911 void setFLICK_POINTFields(JNIEnv *env, jobject lpObject, FLICK_POINT *lpStruct)
1912 {
1913 	if (!FLICK_POINTFc.cached) cacheFLICK_POINTFields(env, lpObject);
1914 	(*env)->SetIntField(env, lpObject, FLICK_POINTFc.x, (jint)lpStruct->x);
1915 	(*env)->SetIntField(env, lpObject, FLICK_POINTFc.y, (jint)lpStruct->y);
1916 }
1917 #endif
1918 
1919 #ifndef NO_GCP_RESULTS
1920 typedef struct GCP_RESULTS_FID_CACHE {
1921 	int cached;
1922 	jclass clazz;
1923 	jfieldID lStructSize, lpOutString, lpOrder, lpDx, lpCaretPos, lpClass, lpGlyphs, nGlyphs, nMaxFit;
1924 } GCP_RESULTS_FID_CACHE;
1925 
1926 GCP_RESULTS_FID_CACHE GCP_RESULTSFc;
1927 
cacheGCP_RESULTSFields(JNIEnv * env,jobject lpObject)1928 void cacheGCP_RESULTSFields(JNIEnv *env, jobject lpObject)
1929 {
1930 	if (GCP_RESULTSFc.cached) return;
1931 	GCP_RESULTSFc.clazz = (*env)->GetObjectClass(env, lpObject);
1932 	GCP_RESULTSFc.lStructSize = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lStructSize", "I");
1933 	GCP_RESULTSFc.lpOutString = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOutString", "J");
1934 	GCP_RESULTSFc.lpOrder = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOrder", "J");
1935 	GCP_RESULTSFc.lpDx = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpDx", "J");
1936 	GCP_RESULTSFc.lpCaretPos = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpCaretPos", "J");
1937 	GCP_RESULTSFc.lpClass = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpClass", "J");
1938 	GCP_RESULTSFc.lpGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpGlyphs", "J");
1939 	GCP_RESULTSFc.nGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nGlyphs", "I");
1940 	GCP_RESULTSFc.nMaxFit = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nMaxFit", "I");
1941 	GCP_RESULTSFc.cached = 1;
1942 }
1943 
getGCP_RESULTSFields(JNIEnv * env,jobject lpObject,GCP_RESULTS * lpStruct)1944 GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)
1945 {
1946 	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);
1947 	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lStructSize);
1948 	lpStruct->lpOutString = (LPTSTR)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpOutString);
1949 	lpStruct->lpOrder = (UINT  *)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpOrder);
1950 	lpStruct->lpDx = (int  *)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpDx);
1951 	lpStruct->lpCaretPos = (int  *)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpCaretPos);
1952 	lpStruct->lpClass = (LPSTR)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpClass);
1953 	lpStruct->lpGlyphs = (LPWSTR)(*env)->GetLongField(env, lpObject, GCP_RESULTSFc.lpGlyphs);
1954 	lpStruct->nGlyphs = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs);
1955 	lpStruct->nMaxFit = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit);
1956 	return lpStruct;
1957 }
1958 
setGCP_RESULTSFields(JNIEnv * env,jobject lpObject,GCP_RESULTS * lpStruct)1959 void setGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)
1960 {
1961 	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);
1962 	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lStructSize, (jint)lpStruct->lStructSize);
1963 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpOutString, (jlong)lpStruct->lpOutString);
1964 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpOrder, (jlong)lpStruct->lpOrder);
1965 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpDx, (jlong)lpStruct->lpDx);
1966 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpCaretPos, (jlong)lpStruct->lpCaretPos);
1967 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpClass, (jlong)lpStruct->lpClass);
1968 	(*env)->SetLongField(env, lpObject, GCP_RESULTSFc.lpGlyphs, (jlong)lpStruct->lpGlyphs);
1969 	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs, (jint)lpStruct->nGlyphs);
1970 	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit, (jint)lpStruct->nMaxFit);
1971 }
1972 #endif
1973 
1974 #ifndef NO_GESTURECONFIG
1975 typedef struct GESTURECONFIG_FID_CACHE {
1976 	int cached;
1977 	jclass clazz;
1978 	jfieldID dwID, dwWant, dwBlock;
1979 } GESTURECONFIG_FID_CACHE;
1980 
1981 GESTURECONFIG_FID_CACHE GESTURECONFIGFc;
1982 
cacheGESTURECONFIGFields(JNIEnv * env,jobject lpObject)1983 void cacheGESTURECONFIGFields(JNIEnv *env, jobject lpObject)
1984 {
1985 	if (GESTURECONFIGFc.cached) return;
1986 	GESTURECONFIGFc.clazz = (*env)->GetObjectClass(env, lpObject);
1987 	GESTURECONFIGFc.dwID = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwID", "I");
1988 	GESTURECONFIGFc.dwWant = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwWant", "I");
1989 	GESTURECONFIGFc.dwBlock = (*env)->GetFieldID(env, GESTURECONFIGFc.clazz, "dwBlock", "I");
1990 	GESTURECONFIGFc.cached = 1;
1991 }
1992 
getGESTURECONFIGFields(JNIEnv * env,jobject lpObject,GESTURECONFIG * lpStruct)1993 GESTURECONFIG *getGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct)
1994 {
1995 	if (!GESTURECONFIGFc.cached) cacheGESTURECONFIGFields(env, lpObject);
1996 	lpStruct->dwID = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwID);
1997 	lpStruct->dwWant = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwWant);
1998 	lpStruct->dwBlock = (*env)->GetIntField(env, lpObject, GESTURECONFIGFc.dwBlock);
1999 	return lpStruct;
2000 }
2001 
setGESTURECONFIGFields(JNIEnv * env,jobject lpObject,GESTURECONFIG * lpStruct)2002 void setGESTURECONFIGFields(JNIEnv *env, jobject lpObject, GESTURECONFIG *lpStruct)
2003 {
2004 	if (!GESTURECONFIGFc.cached) cacheGESTURECONFIGFields(env, lpObject);
2005 	(*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwID, (jint)lpStruct->dwID);
2006 	(*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwWant, (jint)lpStruct->dwWant);
2007 	(*env)->SetIntField(env, lpObject, GESTURECONFIGFc.dwBlock, (jint)lpStruct->dwBlock);
2008 }
2009 #endif
2010 
2011 #ifndef NO_GESTUREINFO
2012 typedef struct GESTUREINFO_FID_CACHE {
2013 	int cached;
2014 	jclass clazz;
2015 	jfieldID cbSize, dwFlags, dwID, hwndTarget, x, y, dwInstanceID, dwSequenceID, ullArguments, cbExtraArgs;
2016 } GESTUREINFO_FID_CACHE;
2017 
2018 GESTUREINFO_FID_CACHE GESTUREINFOFc;
2019 
cacheGESTUREINFOFields(JNIEnv * env,jobject lpObject)2020 void cacheGESTUREINFOFields(JNIEnv *env, jobject lpObject)
2021 {
2022 	if (GESTUREINFOFc.cached) return;
2023 	GESTUREINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2024 	GESTUREINFOFc.cbSize = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "cbSize", "I");
2025 	GESTUREINFOFc.dwFlags = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwFlags", "I");
2026 	GESTUREINFOFc.dwID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwID", "I");
2027 	GESTUREINFOFc.hwndTarget = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "hwndTarget", "J");
2028 	GESTUREINFOFc.x = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "x", "S");
2029 	GESTUREINFOFc.y = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "y", "S");
2030 	GESTUREINFOFc.dwInstanceID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwInstanceID", "I");
2031 	GESTUREINFOFc.dwSequenceID = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "dwSequenceID", "I");
2032 	GESTUREINFOFc.ullArguments = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "ullArguments", "J");
2033 	GESTUREINFOFc.cbExtraArgs = (*env)->GetFieldID(env, GESTUREINFOFc.clazz, "cbExtraArgs", "I");
2034 	GESTUREINFOFc.cached = 1;
2035 }
2036 
getGESTUREINFOFields(JNIEnv * env,jobject lpObject,GESTUREINFO * lpStruct)2037 GESTUREINFO *getGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct)
2038 {
2039 	if (!GESTUREINFOFc.cached) cacheGESTUREINFOFields(env, lpObject);
2040 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.cbSize);
2041 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwFlags);
2042 	lpStruct->dwID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwID);
2043 	lpStruct->hwndTarget = (HWND)(*env)->GetLongField(env, lpObject, GESTUREINFOFc.hwndTarget);
2044 	lpStruct->ptsLocation.x = (*env)->GetShortField(env, lpObject, GESTUREINFOFc.x);
2045 	lpStruct->ptsLocation.y = (*env)->GetShortField(env, lpObject, GESTUREINFOFc.y);
2046 	lpStruct->dwInstanceID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwInstanceID);
2047 	lpStruct->dwSequenceID = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.dwSequenceID);
2048 	lpStruct->ullArguments = (*env)->GetLongField(env, lpObject, GESTUREINFOFc.ullArguments);
2049 	lpStruct->cbExtraArgs = (*env)->GetIntField(env, lpObject, GESTUREINFOFc.cbExtraArgs);
2050 	return lpStruct;
2051 }
2052 
setGESTUREINFOFields(JNIEnv * env,jobject lpObject,GESTUREINFO * lpStruct)2053 void setGESTUREINFOFields(JNIEnv *env, jobject lpObject, GESTUREINFO *lpStruct)
2054 {
2055 	if (!GESTUREINFOFc.cached) cacheGESTUREINFOFields(env, lpObject);
2056 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.cbSize, (jint)lpStruct->cbSize);
2057 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwFlags, (jint)lpStruct->dwFlags);
2058 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwID, (jint)lpStruct->dwID);
2059 	(*env)->SetLongField(env, lpObject, GESTUREINFOFc.hwndTarget, (jlong)lpStruct->hwndTarget);
2060 	(*env)->SetShortField(env, lpObject, GESTUREINFOFc.x, (jshort)lpStruct->ptsLocation.x);
2061 	(*env)->SetShortField(env, lpObject, GESTUREINFOFc.y, (jshort)lpStruct->ptsLocation.y);
2062 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwInstanceID, (jint)lpStruct->dwInstanceID);
2063 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.dwSequenceID, (jint)lpStruct->dwSequenceID);
2064 	(*env)->SetLongField(env, lpObject, GESTUREINFOFc.ullArguments, (jlong)lpStruct->ullArguments);
2065 	(*env)->SetIntField(env, lpObject, GESTUREINFOFc.cbExtraArgs, (jint)lpStruct->cbExtraArgs);
2066 }
2067 #endif
2068 
2069 #ifndef NO_GRADIENT_RECT
2070 typedef struct GRADIENT_RECT_FID_CACHE {
2071 	int cached;
2072 	jclass clazz;
2073 	jfieldID UpperLeft, LowerRight;
2074 } GRADIENT_RECT_FID_CACHE;
2075 
2076 GRADIENT_RECT_FID_CACHE GRADIENT_RECTFc;
2077 
cacheGRADIENT_RECTFields(JNIEnv * env,jobject lpObject)2078 void cacheGRADIENT_RECTFields(JNIEnv *env, jobject lpObject)
2079 {
2080 	if (GRADIENT_RECTFc.cached) return;
2081 	GRADIENT_RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2082 	GRADIENT_RECTFc.UpperLeft = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "UpperLeft", "I");
2083 	GRADIENT_RECTFc.LowerRight = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "LowerRight", "I");
2084 	GRADIENT_RECTFc.cached = 1;
2085 }
2086 
getGRADIENT_RECTFields(JNIEnv * env,jobject lpObject,GRADIENT_RECT * lpStruct)2087 GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)
2088 {
2089 	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);
2090 	lpStruct->UpperLeft = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft);
2091 	lpStruct->LowerRight = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight);
2092 	return lpStruct;
2093 }
2094 
setGRADIENT_RECTFields(JNIEnv * env,jobject lpObject,GRADIENT_RECT * lpStruct)2095 void setGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)
2096 {
2097 	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);
2098 	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft, (jint)lpStruct->UpperLeft);
2099 	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight, (jint)lpStruct->LowerRight);
2100 }
2101 #endif
2102 
2103 #ifndef NO_GUITHREADINFO
2104 typedef struct GUITHREADINFO_FID_CACHE {
2105 	int cached;
2106 	jclass clazz;
2107 	jfieldID cbSize, flags, hwndActive, hwndFocus, hwndCapture, hwndMenuOwner, hwndMoveSize, hwndCaret, left, top, right, bottom;
2108 } GUITHREADINFO_FID_CACHE;
2109 
2110 GUITHREADINFO_FID_CACHE GUITHREADINFOFc;
2111 
cacheGUITHREADINFOFields(JNIEnv * env,jobject lpObject)2112 void cacheGUITHREADINFOFields(JNIEnv *env, jobject lpObject)
2113 {
2114 	if (GUITHREADINFOFc.cached) return;
2115 	GUITHREADINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2116 	GUITHREADINFOFc.cbSize = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "cbSize", "I");
2117 	GUITHREADINFOFc.flags = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "flags", "I");
2118 	GUITHREADINFOFc.hwndActive = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndActive", "J");
2119 	GUITHREADINFOFc.hwndFocus = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndFocus", "J");
2120 	GUITHREADINFOFc.hwndCapture = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndCapture", "J");
2121 	GUITHREADINFOFc.hwndMenuOwner = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndMenuOwner", "J");
2122 	GUITHREADINFOFc.hwndMoveSize = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndMoveSize", "J");
2123 	GUITHREADINFOFc.hwndCaret = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "hwndCaret", "J");
2124 	GUITHREADINFOFc.left = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "left", "I");
2125 	GUITHREADINFOFc.top = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "top", "I");
2126 	GUITHREADINFOFc.right = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "right", "I");
2127 	GUITHREADINFOFc.bottom = (*env)->GetFieldID(env, GUITHREADINFOFc.clazz, "bottom", "I");
2128 	GUITHREADINFOFc.cached = 1;
2129 }
2130 
getGUITHREADINFOFields(JNIEnv * env,jobject lpObject,GUITHREADINFO * lpStruct)2131 GUITHREADINFO *getGUITHREADINFOFields(JNIEnv *env, jobject lpObject, GUITHREADINFO *lpStruct)
2132 {
2133 	if (!GUITHREADINFOFc.cached) cacheGUITHREADINFOFields(env, lpObject);
2134 	lpStruct->cbSize = (DWORD)(*env)->GetIntField(env, lpObject, GUITHREADINFOFc.cbSize);
2135 	lpStruct->flags = (DWORD)(*env)->GetIntField(env, lpObject, GUITHREADINFOFc.flags);
2136 	lpStruct->hwndActive = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndActive);
2137 	lpStruct->hwndFocus = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndFocus);
2138 	lpStruct->hwndCapture = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndCapture);
2139 	lpStruct->hwndMenuOwner = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndMenuOwner);
2140 	lpStruct->hwndMoveSize = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndMoveSize);
2141 	lpStruct->hwndCaret = (HWND)(*env)->GetLongField(env, lpObject, GUITHREADINFOFc.hwndCaret);
2142 	lpStruct->rcCaret.left = (*env)->GetIntField(env, lpObject, GUITHREADINFOFc.left);
2143 	lpStruct->rcCaret.top = (*env)->GetIntField(env, lpObject, GUITHREADINFOFc.top);
2144 	lpStruct->rcCaret.right = (*env)->GetIntField(env, lpObject, GUITHREADINFOFc.right);
2145 	lpStruct->rcCaret.bottom = (*env)->GetIntField(env, lpObject, GUITHREADINFOFc.bottom);
2146 	return lpStruct;
2147 }
2148 
setGUITHREADINFOFields(JNIEnv * env,jobject lpObject,GUITHREADINFO * lpStruct)2149 void setGUITHREADINFOFields(JNIEnv *env, jobject lpObject, GUITHREADINFO *lpStruct)
2150 {
2151 	if (!GUITHREADINFOFc.cached) cacheGUITHREADINFOFields(env, lpObject);
2152 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.cbSize, (jint)lpStruct->cbSize);
2153 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.flags, (jint)lpStruct->flags);
2154 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndActive, (jlong)lpStruct->hwndActive);
2155 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndFocus, (jlong)lpStruct->hwndFocus);
2156 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndCapture, (jlong)lpStruct->hwndCapture);
2157 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndMenuOwner, (jlong)lpStruct->hwndMenuOwner);
2158 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndMoveSize, (jlong)lpStruct->hwndMoveSize);
2159 	(*env)->SetLongField(env, lpObject, GUITHREADINFOFc.hwndCaret, (jlong)lpStruct->hwndCaret);
2160 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.left, (jint)lpStruct->rcCaret.left);
2161 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.top, (jint)lpStruct->rcCaret.top);
2162 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.right, (jint)lpStruct->rcCaret.right);
2163 	(*env)->SetIntField(env, lpObject, GUITHREADINFOFc.bottom, (jint)lpStruct->rcCaret.bottom);
2164 }
2165 #endif
2166 
2167 #ifndef NO_HDHITTESTINFO
2168 typedef struct HDHITTESTINFO_FID_CACHE {
2169 	int cached;
2170 	jclass clazz;
2171 	jfieldID x, y, flags, iItem;
2172 } HDHITTESTINFO_FID_CACHE;
2173 
2174 HDHITTESTINFO_FID_CACHE HDHITTESTINFOFc;
2175 
cacheHDHITTESTINFOFields(JNIEnv * env,jobject lpObject)2176 void cacheHDHITTESTINFOFields(JNIEnv *env, jobject lpObject)
2177 {
2178 	if (HDHITTESTINFOFc.cached) return;
2179 	HDHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2180 	HDHITTESTINFOFc.x = (*env)->GetFieldID(env, HDHITTESTINFOFc.clazz, "x", "I");
2181 	HDHITTESTINFOFc.y = (*env)->GetFieldID(env, HDHITTESTINFOFc.clazz, "y", "I");
2182 	HDHITTESTINFOFc.flags = (*env)->GetFieldID(env, HDHITTESTINFOFc.clazz, "flags", "I");
2183 	HDHITTESTINFOFc.iItem = (*env)->GetFieldID(env, HDHITTESTINFOFc.clazz, "iItem", "I");
2184 	HDHITTESTINFOFc.cached = 1;
2185 }
2186 
getHDHITTESTINFOFields(JNIEnv * env,jobject lpObject,HDHITTESTINFO * lpStruct)2187 HDHITTESTINFO *getHDHITTESTINFOFields(JNIEnv *env, jobject lpObject, HDHITTESTINFO *lpStruct)
2188 {
2189 	if (!HDHITTESTINFOFc.cached) cacheHDHITTESTINFOFields(env, lpObject);
2190 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, HDHITTESTINFOFc.x);
2191 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, HDHITTESTINFOFc.y);
2192 	lpStruct->flags = (*env)->GetIntField(env, lpObject, HDHITTESTINFOFc.flags);
2193 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, HDHITTESTINFOFc.iItem);
2194 	return lpStruct;
2195 }
2196 
setHDHITTESTINFOFields(JNIEnv * env,jobject lpObject,HDHITTESTINFO * lpStruct)2197 void setHDHITTESTINFOFields(JNIEnv *env, jobject lpObject, HDHITTESTINFO *lpStruct)
2198 {
2199 	if (!HDHITTESTINFOFc.cached) cacheHDHITTESTINFOFields(env, lpObject);
2200 	(*env)->SetIntField(env, lpObject, HDHITTESTINFOFc.x, (jint)lpStruct->pt.x);
2201 	(*env)->SetIntField(env, lpObject, HDHITTESTINFOFc.y, (jint)lpStruct->pt.y);
2202 	(*env)->SetIntField(env, lpObject, HDHITTESTINFOFc.flags, (jint)lpStruct->flags);
2203 	(*env)->SetIntField(env, lpObject, HDHITTESTINFOFc.iItem, (jint)lpStruct->iItem);
2204 }
2205 #endif
2206 
2207 #ifndef NO_HDITEM
2208 typedef struct HDITEM_FID_CACHE {
2209 	int cached;
2210 	jclass clazz;
2211 	jfieldID mask, cxy, pszText, hbm, cchTextMax, fmt, lParam, iImage, iOrder, type, pvFilter;
2212 } HDITEM_FID_CACHE;
2213 
2214 HDITEM_FID_CACHE HDITEMFc;
2215 
cacheHDITEMFields(JNIEnv * env,jobject lpObject)2216 void cacheHDITEMFields(JNIEnv *env, jobject lpObject)
2217 {
2218 	if (HDITEMFc.cached) return;
2219 	HDITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
2220 	HDITEMFc.mask = (*env)->GetFieldID(env, HDITEMFc.clazz, "mask", "I");
2221 	HDITEMFc.cxy = (*env)->GetFieldID(env, HDITEMFc.clazz, "cxy", "I");
2222 	HDITEMFc.pszText = (*env)->GetFieldID(env, HDITEMFc.clazz, "pszText", "J");
2223 	HDITEMFc.hbm = (*env)->GetFieldID(env, HDITEMFc.clazz, "hbm", "J");
2224 	HDITEMFc.cchTextMax = (*env)->GetFieldID(env, HDITEMFc.clazz, "cchTextMax", "I");
2225 	HDITEMFc.fmt = (*env)->GetFieldID(env, HDITEMFc.clazz, "fmt", "I");
2226 	HDITEMFc.lParam = (*env)->GetFieldID(env, HDITEMFc.clazz, "lParam", "J");
2227 	HDITEMFc.iImage = (*env)->GetFieldID(env, HDITEMFc.clazz, "iImage", "I");
2228 	HDITEMFc.iOrder = (*env)->GetFieldID(env, HDITEMFc.clazz, "iOrder", "I");
2229 	HDITEMFc.type = (*env)->GetFieldID(env, HDITEMFc.clazz, "type", "I");
2230 	HDITEMFc.pvFilter = (*env)->GetFieldID(env, HDITEMFc.clazz, "pvFilter", "J");
2231 	HDITEMFc.cached = 1;
2232 }
2233 
getHDITEMFields(JNIEnv * env,jobject lpObject,HDITEM * lpStruct)2234 HDITEM *getHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)
2235 {
2236 	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);
2237 	lpStruct->mask = (*env)->GetIntField(env, lpObject, HDITEMFc.mask);
2238 	lpStruct->cxy = (*env)->GetIntField(env, lpObject, HDITEMFc.cxy);
2239 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, HDITEMFc.pszText);
2240 	lpStruct->hbm = (HBITMAP)(*env)->GetLongField(env, lpObject, HDITEMFc.hbm);
2241 	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, HDITEMFc.cchTextMax);
2242 	lpStruct->fmt = (*env)->GetIntField(env, lpObject, HDITEMFc.fmt);
2243 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, HDITEMFc.lParam);
2244 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, HDITEMFc.iImage);
2245 	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, HDITEMFc.iOrder);
2246 	lpStruct->type = (*env)->GetIntField(env, lpObject, HDITEMFc.type);
2247 	lpStruct->pvFilter = (void *)(*env)->GetLongField(env, lpObject, HDITEMFc.pvFilter);
2248 	return lpStruct;
2249 }
2250 
setHDITEMFields(JNIEnv * env,jobject lpObject,HDITEM * lpStruct)2251 void setHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)
2252 {
2253 	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);
2254 	(*env)->SetIntField(env, lpObject, HDITEMFc.mask, (jint)lpStruct->mask);
2255 	(*env)->SetIntField(env, lpObject, HDITEMFc.cxy, (jint)lpStruct->cxy);
2256 	(*env)->SetLongField(env, lpObject, HDITEMFc.pszText, (jlong)lpStruct->pszText);
2257 	(*env)->SetLongField(env, lpObject, HDITEMFc.hbm, (jlong)lpStruct->hbm);
2258 	(*env)->SetIntField(env, lpObject, HDITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
2259 	(*env)->SetIntField(env, lpObject, HDITEMFc.fmt, (jint)lpStruct->fmt);
2260 	(*env)->SetLongField(env, lpObject, HDITEMFc.lParam, (jlong)lpStruct->lParam);
2261 	(*env)->SetIntField(env, lpObject, HDITEMFc.iImage, (jint)lpStruct->iImage);
2262 	(*env)->SetIntField(env, lpObject, HDITEMFc.iOrder, (jint)lpStruct->iOrder);
2263 	(*env)->SetIntField(env, lpObject, HDITEMFc.type, (jint)lpStruct->type);
2264 	(*env)->SetLongField(env, lpObject, HDITEMFc.pvFilter, (jlong)lpStruct->pvFilter);
2265 }
2266 #endif
2267 
2268 #ifndef NO_HDLAYOUT
2269 typedef struct HDLAYOUT_FID_CACHE {
2270 	int cached;
2271 	jclass clazz;
2272 	jfieldID prc, pwpos;
2273 } HDLAYOUT_FID_CACHE;
2274 
2275 HDLAYOUT_FID_CACHE HDLAYOUTFc;
2276 
cacheHDLAYOUTFields(JNIEnv * env,jobject lpObject)2277 void cacheHDLAYOUTFields(JNIEnv *env, jobject lpObject)
2278 {
2279 	if (HDLAYOUTFc.cached) return;
2280 	HDLAYOUTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2281 	HDLAYOUTFc.prc = (*env)->GetFieldID(env, HDLAYOUTFc.clazz, "prc", "J");
2282 	HDLAYOUTFc.pwpos = (*env)->GetFieldID(env, HDLAYOUTFc.clazz, "pwpos", "J");
2283 	HDLAYOUTFc.cached = 1;
2284 }
2285 
getHDLAYOUTFields(JNIEnv * env,jobject lpObject,HDLAYOUT * lpStruct)2286 HDLAYOUT *getHDLAYOUTFields(JNIEnv *env, jobject lpObject, HDLAYOUT *lpStruct)
2287 {
2288 	if (!HDLAYOUTFc.cached) cacheHDLAYOUTFields(env, lpObject);
2289 	lpStruct->prc = (RECT *)(*env)->GetLongField(env, lpObject, HDLAYOUTFc.prc);
2290 	lpStruct->pwpos = (WINDOWPOS *)(*env)->GetLongField(env, lpObject, HDLAYOUTFc.pwpos);
2291 	return lpStruct;
2292 }
2293 
setHDLAYOUTFields(JNIEnv * env,jobject lpObject,HDLAYOUT * lpStruct)2294 void setHDLAYOUTFields(JNIEnv *env, jobject lpObject, HDLAYOUT *lpStruct)
2295 {
2296 	if (!HDLAYOUTFc.cached) cacheHDLAYOUTFields(env, lpObject);
2297 	(*env)->SetLongField(env, lpObject, HDLAYOUTFc.prc, (jlong)lpStruct->prc);
2298 	(*env)->SetLongField(env, lpObject, HDLAYOUTFc.pwpos, (jlong)lpStruct->pwpos);
2299 }
2300 #endif
2301 
2302 #ifndef NO_HELPINFO
2303 typedef struct HELPINFO_FID_CACHE {
2304 	int cached;
2305 	jclass clazz;
2306 	jfieldID cbSize, iContextType, iCtrlId, hItemHandle, dwContextId, x, y;
2307 } HELPINFO_FID_CACHE;
2308 
2309 HELPINFO_FID_CACHE HELPINFOFc;
2310 
cacheHELPINFOFields(JNIEnv * env,jobject lpObject)2311 void cacheHELPINFOFields(JNIEnv *env, jobject lpObject)
2312 {
2313 	if (HELPINFOFc.cached) return;
2314 	HELPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2315 	HELPINFOFc.cbSize = (*env)->GetFieldID(env, HELPINFOFc.clazz, "cbSize", "I");
2316 	HELPINFOFc.iContextType = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iContextType", "I");
2317 	HELPINFOFc.iCtrlId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iCtrlId", "I");
2318 	HELPINFOFc.hItemHandle = (*env)->GetFieldID(env, HELPINFOFc.clazz, "hItemHandle", "J");
2319 	HELPINFOFc.dwContextId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "dwContextId", "I");
2320 	HELPINFOFc.x = (*env)->GetFieldID(env, HELPINFOFc.clazz, "x", "I");
2321 	HELPINFOFc.y = (*env)->GetFieldID(env, HELPINFOFc.clazz, "y", "I");
2322 	HELPINFOFc.cached = 1;
2323 }
2324 
getHELPINFOFields(JNIEnv * env,jobject lpObject,HELPINFO * lpStruct)2325 HELPINFO *getHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)
2326 {
2327 	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);
2328 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, HELPINFOFc.cbSize);
2329 	lpStruct->iContextType = (*env)->GetIntField(env, lpObject, HELPINFOFc.iContextType);
2330 	lpStruct->iCtrlId = (*env)->GetIntField(env, lpObject, HELPINFOFc.iCtrlId);
2331 	lpStruct->hItemHandle = (HANDLE)(*env)->GetLongField(env, lpObject, HELPINFOFc.hItemHandle);
2332 	lpStruct->dwContextId = (*env)->GetIntField(env, lpObject, HELPINFOFc.dwContextId);
2333 	lpStruct->MousePos.x = (*env)->GetIntField(env, lpObject, HELPINFOFc.x);
2334 	lpStruct->MousePos.y = (*env)->GetIntField(env, lpObject, HELPINFOFc.y);
2335 	return lpStruct;
2336 }
2337 
setHELPINFOFields(JNIEnv * env,jobject lpObject,HELPINFO * lpStruct)2338 void setHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)
2339 {
2340 	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);
2341 	(*env)->SetIntField(env, lpObject, HELPINFOFc.cbSize, (jint)lpStruct->cbSize);
2342 	(*env)->SetIntField(env, lpObject, HELPINFOFc.iContextType, (jint)lpStruct->iContextType);
2343 	(*env)->SetIntField(env, lpObject, HELPINFOFc.iCtrlId, (jint)lpStruct->iCtrlId);
2344 	(*env)->SetLongField(env, lpObject, HELPINFOFc.hItemHandle, (jlong)lpStruct->hItemHandle);
2345 	(*env)->SetIntField(env, lpObject, HELPINFOFc.dwContextId, (jint)lpStruct->dwContextId);
2346 	(*env)->SetIntField(env, lpObject, HELPINFOFc.x, (jint)lpStruct->MousePos.x);
2347 	(*env)->SetIntField(env, lpObject, HELPINFOFc.y, (jint)lpStruct->MousePos.y);
2348 }
2349 #endif
2350 
2351 #ifndef NO_HIGHCONTRAST
2352 typedef struct HIGHCONTRAST_FID_CACHE {
2353 	int cached;
2354 	jclass clazz;
2355 	jfieldID cbSize, dwFlags, lpszDefaultScheme;
2356 } HIGHCONTRAST_FID_CACHE;
2357 
2358 HIGHCONTRAST_FID_CACHE HIGHCONTRASTFc;
2359 
cacheHIGHCONTRASTFields(JNIEnv * env,jobject lpObject)2360 void cacheHIGHCONTRASTFields(JNIEnv *env, jobject lpObject)
2361 {
2362 	if (HIGHCONTRASTFc.cached) return;
2363 	HIGHCONTRASTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2364 	HIGHCONTRASTFc.cbSize = (*env)->GetFieldID(env, HIGHCONTRASTFc.clazz, "cbSize", "I");
2365 	HIGHCONTRASTFc.dwFlags = (*env)->GetFieldID(env, HIGHCONTRASTFc.clazz, "dwFlags", "I");
2366 	HIGHCONTRASTFc.lpszDefaultScheme = (*env)->GetFieldID(env, HIGHCONTRASTFc.clazz, "lpszDefaultScheme", "J");
2367 	HIGHCONTRASTFc.cached = 1;
2368 }
2369 
getHIGHCONTRASTFields(JNIEnv * env,jobject lpObject,HIGHCONTRAST * lpStruct)2370 HIGHCONTRAST *getHIGHCONTRASTFields(JNIEnv *env, jobject lpObject, HIGHCONTRAST *lpStruct)
2371 {
2372 	if (!HIGHCONTRASTFc.cached) cacheHIGHCONTRASTFields(env, lpObject);
2373 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, HIGHCONTRASTFc.cbSize);
2374 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, HIGHCONTRASTFc.dwFlags);
2375 	lpStruct->lpszDefaultScheme = (LPTSTR)(*env)->GetLongField(env, lpObject, HIGHCONTRASTFc.lpszDefaultScheme);
2376 	return lpStruct;
2377 }
2378 
setHIGHCONTRASTFields(JNIEnv * env,jobject lpObject,HIGHCONTRAST * lpStruct)2379 void setHIGHCONTRASTFields(JNIEnv *env, jobject lpObject, HIGHCONTRAST *lpStruct)
2380 {
2381 	if (!HIGHCONTRASTFc.cached) cacheHIGHCONTRASTFields(env, lpObject);
2382 	(*env)->SetIntField(env, lpObject, HIGHCONTRASTFc.cbSize, (jint)lpStruct->cbSize);
2383 	(*env)->SetIntField(env, lpObject, HIGHCONTRASTFc.dwFlags, (jint)lpStruct->dwFlags);
2384 	(*env)->SetLongField(env, lpObject, HIGHCONTRASTFc.lpszDefaultScheme, (jlong)lpStruct->lpszDefaultScheme);
2385 }
2386 #endif
2387 
2388 #ifndef NO_ICONINFO
2389 typedef struct ICONINFO_FID_CACHE {
2390 	int cached;
2391 	jclass clazz;
2392 	jfieldID fIcon, xHotspot, yHotspot, hbmMask, hbmColor;
2393 } ICONINFO_FID_CACHE;
2394 
2395 ICONINFO_FID_CACHE ICONINFOFc;
2396 
cacheICONINFOFields(JNIEnv * env,jobject lpObject)2397 void cacheICONINFOFields(JNIEnv *env, jobject lpObject)
2398 {
2399 	if (ICONINFOFc.cached) return;
2400 	ICONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2401 	ICONINFOFc.fIcon = (*env)->GetFieldID(env, ICONINFOFc.clazz, "fIcon", "Z");
2402 	ICONINFOFc.xHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "xHotspot", "I");
2403 	ICONINFOFc.yHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "yHotspot", "I");
2404 	ICONINFOFc.hbmMask = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmMask", "J");
2405 	ICONINFOFc.hbmColor = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmColor", "J");
2406 	ICONINFOFc.cached = 1;
2407 }
2408 
getICONINFOFields(JNIEnv * env,jobject lpObject,ICONINFO * lpStruct)2409 ICONINFO *getICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)
2410 {
2411 	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);
2412 	lpStruct->fIcon = (*env)->GetBooleanField(env, lpObject, ICONINFOFc.fIcon);
2413 	lpStruct->xHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.xHotspot);
2414 	lpStruct->yHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.yHotspot);
2415 	lpStruct->hbmMask = (HBITMAP)(*env)->GetLongField(env, lpObject, ICONINFOFc.hbmMask);
2416 	lpStruct->hbmColor = (HBITMAP)(*env)->GetLongField(env, lpObject, ICONINFOFc.hbmColor);
2417 	return lpStruct;
2418 }
2419 
setICONINFOFields(JNIEnv * env,jobject lpObject,ICONINFO * lpStruct)2420 void setICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)
2421 {
2422 	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);
2423 	(*env)->SetBooleanField(env, lpObject, ICONINFOFc.fIcon, (jboolean)lpStruct->fIcon);
2424 	(*env)->SetIntField(env, lpObject, ICONINFOFc.xHotspot, (jint)lpStruct->xHotspot);
2425 	(*env)->SetIntField(env, lpObject, ICONINFOFc.yHotspot, (jint)lpStruct->yHotspot);
2426 	(*env)->SetLongField(env, lpObject, ICONINFOFc.hbmMask, (jlong)lpStruct->hbmMask);
2427 	(*env)->SetLongField(env, lpObject, ICONINFOFc.hbmColor, (jlong)lpStruct->hbmColor);
2428 }
2429 #endif
2430 
2431 #ifndef NO_INITCOMMONCONTROLSEX
2432 typedef struct INITCOMMONCONTROLSEX_FID_CACHE {
2433 	int cached;
2434 	jclass clazz;
2435 	jfieldID dwSize, dwICC;
2436 } INITCOMMONCONTROLSEX_FID_CACHE;
2437 
2438 INITCOMMONCONTROLSEX_FID_CACHE INITCOMMONCONTROLSEXFc;
2439 
cacheINITCOMMONCONTROLSEXFields(JNIEnv * env,jobject lpObject)2440 void cacheINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject)
2441 {
2442 	if (INITCOMMONCONTROLSEXFc.cached) return;
2443 	INITCOMMONCONTROLSEXFc.clazz = (*env)->GetObjectClass(env, lpObject);
2444 	INITCOMMONCONTROLSEXFc.dwSize = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwSize", "I");
2445 	INITCOMMONCONTROLSEXFc.dwICC = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwICC", "I");
2446 	INITCOMMONCONTROLSEXFc.cached = 1;
2447 }
2448 
getINITCOMMONCONTROLSEXFields(JNIEnv * env,jobject lpObject,INITCOMMONCONTROLSEX * lpStruct)2449 INITCOMMONCONTROLSEX *getINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)
2450 {
2451 	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);
2452 	lpStruct->dwSize = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize);
2453 	lpStruct->dwICC = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC);
2454 	return lpStruct;
2455 }
2456 
setINITCOMMONCONTROLSEXFields(JNIEnv * env,jobject lpObject,INITCOMMONCONTROLSEX * lpStruct)2457 void setINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)
2458 {
2459 	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);
2460 	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize, (jint)lpStruct->dwSize);
2461 	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC, (jint)lpStruct->dwICC);
2462 }
2463 #endif
2464 
2465 #ifndef NO_INPUT
2466 typedef struct INPUT_FID_CACHE {
2467 	int cached;
2468 	jclass clazz;
2469 	jfieldID type;
2470 } INPUT_FID_CACHE;
2471 
2472 INPUT_FID_CACHE INPUTFc;
2473 
cacheINPUTFields(JNIEnv * env,jobject lpObject)2474 void cacheINPUTFields(JNIEnv *env, jobject lpObject)
2475 {
2476 	if (INPUTFc.cached) return;
2477 	INPUTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2478 	INPUTFc.type = (*env)->GetFieldID(env, INPUTFc.clazz, "type", "I");
2479 	INPUTFc.cached = 1;
2480 }
2481 
getINPUTFields(JNIEnv * env,jobject lpObject,INPUT * lpStruct)2482 INPUT *getINPUTFields(JNIEnv *env, jobject lpObject, INPUT *lpStruct)
2483 {
2484 	if (!INPUTFc.cached) cacheINPUTFields(env, lpObject);
2485 	lpStruct->type = (*env)->GetIntField(env, lpObject, INPUTFc.type);
2486 	return lpStruct;
2487 }
2488 
setINPUTFields(JNIEnv * env,jobject lpObject,INPUT * lpStruct)2489 void setINPUTFields(JNIEnv *env, jobject lpObject, INPUT *lpStruct)
2490 {
2491 	if (!INPUTFc.cached) cacheINPUTFields(env, lpObject);
2492 	(*env)->SetIntField(env, lpObject, INPUTFc.type, (jint)lpStruct->type);
2493 }
2494 #endif
2495 
2496 #ifndef NO_KEYBDINPUT
2497 typedef struct KEYBDINPUT_FID_CACHE {
2498 	int cached;
2499 	jclass clazz;
2500 	jfieldID wVk, wScan, dwFlags, time, dwExtraInfo;
2501 } KEYBDINPUT_FID_CACHE;
2502 
2503 KEYBDINPUT_FID_CACHE KEYBDINPUTFc;
2504 
cacheKEYBDINPUTFields(JNIEnv * env,jobject lpObject)2505 void cacheKEYBDINPUTFields(JNIEnv *env, jobject lpObject)
2506 {
2507 	if (KEYBDINPUTFc.cached) return;
2508 	KEYBDINPUTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2509 	KEYBDINPUTFc.wVk = (*env)->GetFieldID(env, KEYBDINPUTFc.clazz, "wVk", "S");
2510 	KEYBDINPUTFc.wScan = (*env)->GetFieldID(env, KEYBDINPUTFc.clazz, "wScan", "S");
2511 	KEYBDINPUTFc.dwFlags = (*env)->GetFieldID(env, KEYBDINPUTFc.clazz, "dwFlags", "I");
2512 	KEYBDINPUTFc.time = (*env)->GetFieldID(env, KEYBDINPUTFc.clazz, "time", "I");
2513 	KEYBDINPUTFc.dwExtraInfo = (*env)->GetFieldID(env, KEYBDINPUTFc.clazz, "dwExtraInfo", "J");
2514 	KEYBDINPUTFc.cached = 1;
2515 }
2516 
getKEYBDINPUTFields(JNIEnv * env,jobject lpObject,KEYBDINPUT * lpStruct)2517 KEYBDINPUT *getKEYBDINPUTFields(JNIEnv *env, jobject lpObject, KEYBDINPUT *lpStruct)
2518 {
2519 	if (!KEYBDINPUTFc.cached) cacheKEYBDINPUTFields(env, lpObject);
2520 	lpStruct->wVk = (*env)->GetShortField(env, lpObject, KEYBDINPUTFc.wVk);
2521 	lpStruct->wScan = (*env)->GetShortField(env, lpObject, KEYBDINPUTFc.wScan);
2522 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, KEYBDINPUTFc.dwFlags);
2523 	lpStruct->time = (*env)->GetIntField(env, lpObject, KEYBDINPUTFc.time);
2524 	lpStruct->dwExtraInfo = (*env)->GetLongField(env, lpObject, KEYBDINPUTFc.dwExtraInfo);
2525 	return lpStruct;
2526 }
2527 
setKEYBDINPUTFields(JNIEnv * env,jobject lpObject,KEYBDINPUT * lpStruct)2528 void setKEYBDINPUTFields(JNIEnv *env, jobject lpObject, KEYBDINPUT *lpStruct)
2529 {
2530 	if (!KEYBDINPUTFc.cached) cacheKEYBDINPUTFields(env, lpObject);
2531 	(*env)->SetShortField(env, lpObject, KEYBDINPUTFc.wVk, (jshort)lpStruct->wVk);
2532 	(*env)->SetShortField(env, lpObject, KEYBDINPUTFc.wScan, (jshort)lpStruct->wScan);
2533 	(*env)->SetIntField(env, lpObject, KEYBDINPUTFc.dwFlags, (jint)lpStruct->dwFlags);
2534 	(*env)->SetIntField(env, lpObject, KEYBDINPUTFc.time, (jint)lpStruct->time);
2535 	(*env)->SetLongField(env, lpObject, KEYBDINPUTFc.dwExtraInfo, (jlong)lpStruct->dwExtraInfo);
2536 }
2537 #endif
2538 
2539 #ifndef NO_LITEM
2540 typedef struct LITEM_FID_CACHE {
2541 	int cached;
2542 	jclass clazz;
2543 	jfieldID mask, iLink, state, stateMask, szID, szUrl;
2544 } LITEM_FID_CACHE;
2545 
2546 LITEM_FID_CACHE LITEMFc;
2547 
cacheLITEMFields(JNIEnv * env,jobject lpObject)2548 void cacheLITEMFields(JNIEnv *env, jobject lpObject)
2549 {
2550 	if (LITEMFc.cached) return;
2551 	LITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
2552 	LITEMFc.mask = (*env)->GetFieldID(env, LITEMFc.clazz, "mask", "I");
2553 	LITEMFc.iLink = (*env)->GetFieldID(env, LITEMFc.clazz, "iLink", "I");
2554 	LITEMFc.state = (*env)->GetFieldID(env, LITEMFc.clazz, "state", "I");
2555 	LITEMFc.stateMask = (*env)->GetFieldID(env, LITEMFc.clazz, "stateMask", "I");
2556 	LITEMFc.szID = (*env)->GetFieldID(env, LITEMFc.clazz, "szID", "[C");
2557 	LITEMFc.szUrl = (*env)->GetFieldID(env, LITEMFc.clazz, "szUrl", "[C");
2558 	LITEMFc.cached = 1;
2559 }
2560 
getLITEMFields(JNIEnv * env,jobject lpObject,LITEM * lpStruct)2561 LITEM *getLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct)
2562 {
2563 	if (!LITEMFc.cached) cacheLITEMFields(env, lpObject);
2564 	lpStruct->mask = (*env)->GetIntField(env, lpObject, LITEMFc.mask);
2565 	lpStruct->iLink = (*env)->GetIntField(env, lpObject, LITEMFc.iLink);
2566 	lpStruct->state = (*env)->GetIntField(env, lpObject, LITEMFc.state);
2567 	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, LITEMFc.stateMask);
2568 	{
2569 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szID);
2570 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szID) / sizeof(jchar), (jchar *)lpStruct->szID);
2571 	}
2572 	{
2573 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szUrl);
2574 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szUrl) / sizeof(jchar), (jchar *)lpStruct->szUrl);
2575 	}
2576 	return lpStruct;
2577 }
2578 
setLITEMFields(JNIEnv * env,jobject lpObject,LITEM * lpStruct)2579 void setLITEMFields(JNIEnv *env, jobject lpObject, LITEM *lpStruct)
2580 {
2581 	if (!LITEMFc.cached) cacheLITEMFields(env, lpObject);
2582 	(*env)->SetIntField(env, lpObject, LITEMFc.mask, (jint)lpStruct->mask);
2583 	(*env)->SetIntField(env, lpObject, LITEMFc.iLink, (jint)lpStruct->iLink);
2584 	(*env)->SetIntField(env, lpObject, LITEMFc.state, (jint)lpStruct->state);
2585 	(*env)->SetIntField(env, lpObject, LITEMFc.stateMask, (jint)lpStruct->stateMask);
2586 	{
2587 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szID);
2588 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szID) / sizeof(jchar), (jchar *)lpStruct->szID);
2589 	}
2590 	{
2591 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LITEMFc.szUrl);
2592 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szUrl) / sizeof(jchar), (jchar *)lpStruct->szUrl);
2593 	}
2594 }
2595 #endif
2596 
2597 #ifndef NO_LOGBRUSH
2598 typedef struct LOGBRUSH_FID_CACHE {
2599 	int cached;
2600 	jclass clazz;
2601 	jfieldID lbStyle, lbColor, lbHatch;
2602 } LOGBRUSH_FID_CACHE;
2603 
2604 LOGBRUSH_FID_CACHE LOGBRUSHFc;
2605 
cacheLOGBRUSHFields(JNIEnv * env,jobject lpObject)2606 void cacheLOGBRUSHFields(JNIEnv *env, jobject lpObject)
2607 {
2608 	if (LOGBRUSHFc.cached) return;
2609 	LOGBRUSHFc.clazz = (*env)->GetObjectClass(env, lpObject);
2610 	LOGBRUSHFc.lbStyle = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbStyle", "I");
2611 	LOGBRUSHFc.lbColor = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbColor", "I");
2612 	LOGBRUSHFc.lbHatch = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbHatch", "J");
2613 	LOGBRUSHFc.cached = 1;
2614 }
2615 
getLOGBRUSHFields(JNIEnv * env,jobject lpObject,LOGBRUSH * lpStruct)2616 LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)
2617 {
2618 	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);
2619 	lpStruct->lbStyle = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbStyle);
2620 	lpStruct->lbColor = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbColor);
2621 	lpStruct->lbHatch = (*env)->GetLongField(env, lpObject, LOGBRUSHFc.lbHatch);
2622 	return lpStruct;
2623 }
2624 
setLOGBRUSHFields(JNIEnv * env,jobject lpObject,LOGBRUSH * lpStruct)2625 void setLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)
2626 {
2627 	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);
2628 	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbStyle, (jint)lpStruct->lbStyle);
2629 	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbColor, (jint)lpStruct->lbColor);
2630 	(*env)->SetLongField(env, lpObject, LOGBRUSHFc.lbHatch, (jlong)lpStruct->lbHatch);
2631 }
2632 #endif
2633 
2634 #ifndef NO_LOGFONT
2635 typedef struct LOGFONT_FID_CACHE {
2636 	int cached;
2637 	jclass clazz;
2638 	jfieldID lfHeight, lfWidth, lfEscapement, lfOrientation, lfWeight, lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily, lfFaceName;
2639 } LOGFONT_FID_CACHE;
2640 
2641 LOGFONT_FID_CACHE LOGFONTFc;
2642 
cacheLOGFONTFields(JNIEnv * env,jobject lpObject)2643 void cacheLOGFONTFields(JNIEnv *env, jobject lpObject)
2644 {
2645 	if (LOGFONTFc.cached) return;
2646 	LOGFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);
2647 	LOGFONTFc.lfHeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfHeight", "I");
2648 	LOGFONTFc.lfWidth = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWidth", "I");
2649 	LOGFONTFc.lfEscapement = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfEscapement", "I");
2650 	LOGFONTFc.lfOrientation = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOrientation", "I");
2651 	LOGFONTFc.lfWeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWeight", "I");
2652 	LOGFONTFc.lfItalic = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfItalic", "B");
2653 	LOGFONTFc.lfUnderline = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfUnderline", "B");
2654 	LOGFONTFc.lfStrikeOut = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfStrikeOut", "B");
2655 	LOGFONTFc.lfCharSet = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfCharSet", "B");
2656 	LOGFONTFc.lfOutPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOutPrecision", "B");
2657 	LOGFONTFc.lfClipPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfClipPrecision", "B");
2658 	LOGFONTFc.lfQuality = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfQuality", "B");
2659 	LOGFONTFc.lfPitchAndFamily = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfPitchAndFamily", "B");
2660 	LOGFONTFc.lfFaceName = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfFaceName", "[C");
2661 	LOGFONTFc.cached = 1;
2662 }
2663 
getLOGFONTFields(JNIEnv * env,jobject lpObject,LOGFONT * lpStruct)2664 LOGFONT *getLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)
2665 {
2666 	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);
2667 	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);
2668 	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);
2669 	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);
2670 	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);
2671 	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);
2672 	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);
2673 	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);
2674 	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);
2675 	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);
2676 	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);
2677 	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);
2678 	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);
2679 	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);
2680 	{
2681 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LOGFONTFc.lfFaceName);
2682 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / sizeof(jchar), (jchar *)lpStruct->lfFaceName);
2683 	}
2684 	return lpStruct;
2685 }
2686 
setLOGFONTFields(JNIEnv * env,jobject lpObject,LOGFONT * lpStruct)2687 void setLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)
2688 {
2689 	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);
2690 	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);
2691 	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);
2692 	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);
2693 	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);
2694 	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);
2695 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);
2696 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);
2697 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);
2698 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);
2699 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);
2700 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);
2701 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);
2702 	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);
2703 	{
2704 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, LOGFONTFc.lfFaceName);
2705 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / sizeof(jchar), (jchar *)lpStruct->lfFaceName);
2706 	}
2707 }
2708 #endif
2709 
2710 #ifndef NO_LOGPEN
2711 typedef struct LOGPEN_FID_CACHE {
2712 	int cached;
2713 	jclass clazz;
2714 	jfieldID lopnStyle, x, y, lopnColor;
2715 } LOGPEN_FID_CACHE;
2716 
2717 LOGPEN_FID_CACHE LOGPENFc;
2718 
cacheLOGPENFields(JNIEnv * env,jobject lpObject)2719 void cacheLOGPENFields(JNIEnv *env, jobject lpObject)
2720 {
2721 	if (LOGPENFc.cached) return;
2722 	LOGPENFc.clazz = (*env)->GetObjectClass(env, lpObject);
2723 	LOGPENFc.lopnStyle = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnStyle", "I");
2724 	LOGPENFc.x = (*env)->GetFieldID(env, LOGPENFc.clazz, "x", "I");
2725 	LOGPENFc.y = (*env)->GetFieldID(env, LOGPENFc.clazz, "y", "I");
2726 	LOGPENFc.lopnColor = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnColor", "I");
2727 	LOGPENFc.cached = 1;
2728 }
2729 
getLOGPENFields(JNIEnv * env,jobject lpObject,LOGPEN * lpStruct)2730 LOGPEN *getLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)
2731 {
2732 	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);
2733 	lpStruct->lopnStyle = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnStyle);
2734 	lpStruct->lopnWidth.x = (*env)->GetIntField(env, lpObject, LOGPENFc.x);
2735 	lpStruct->lopnWidth.y = (*env)->GetIntField(env, lpObject, LOGPENFc.y);
2736 	lpStruct->lopnColor = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnColor);
2737 	return lpStruct;
2738 }
2739 
setLOGPENFields(JNIEnv * env,jobject lpObject,LOGPEN * lpStruct)2740 void setLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)
2741 {
2742 	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);
2743 	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnStyle, (jint)lpStruct->lopnStyle);
2744 	(*env)->SetIntField(env, lpObject, LOGPENFc.x, (jint)lpStruct->lopnWidth.x);
2745 	(*env)->SetIntField(env, lpObject, LOGPENFc.y, (jint)lpStruct->lopnWidth.y);
2746 	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnColor, (jint)lpStruct->lopnColor);
2747 }
2748 #endif
2749 
2750 #ifndef NO_LVCOLUMN
2751 typedef struct LVCOLUMN_FID_CACHE {
2752 	int cached;
2753 	jclass clazz;
2754 	jfieldID mask, fmt, cx, pszText, cchTextMax, iSubItem, iImage, iOrder;
2755 } LVCOLUMN_FID_CACHE;
2756 
2757 LVCOLUMN_FID_CACHE LVCOLUMNFc;
2758 
cacheLVCOLUMNFields(JNIEnv * env,jobject lpObject)2759 void cacheLVCOLUMNFields(JNIEnv *env, jobject lpObject)
2760 {
2761 	if (LVCOLUMNFc.cached) return;
2762 	LVCOLUMNFc.clazz = (*env)->GetObjectClass(env, lpObject);
2763 	LVCOLUMNFc.mask = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "mask", "I");
2764 	LVCOLUMNFc.fmt = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "fmt", "I");
2765 	LVCOLUMNFc.cx = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cx", "I");
2766 	LVCOLUMNFc.pszText = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "pszText", "J");
2767 	LVCOLUMNFc.cchTextMax = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cchTextMax", "I");
2768 	LVCOLUMNFc.iSubItem = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iSubItem", "I");
2769 	LVCOLUMNFc.iImage = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iImage", "I");
2770 	LVCOLUMNFc.iOrder = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iOrder", "I");
2771 	LVCOLUMNFc.cached = 1;
2772 }
2773 
getLVCOLUMNFields(JNIEnv * env,jobject lpObject,LVCOLUMN * lpStruct)2774 LVCOLUMN *getLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)
2775 {
2776 	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);
2777 	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.mask);
2778 	lpStruct->fmt = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.fmt);
2779 	lpStruct->cx = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cx);
2780 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, LVCOLUMNFc.pszText);
2781 	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cchTextMax);
2782 	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iSubItem);
2783 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iImage);
2784 	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iOrder);
2785 	return lpStruct;
2786 }
2787 
setLVCOLUMNFields(JNIEnv * env,jobject lpObject,LVCOLUMN * lpStruct)2788 void setLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)
2789 {
2790 	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);
2791 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.mask, (jint)lpStruct->mask);
2792 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.fmt, (jint)lpStruct->fmt);
2793 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cx, (jint)lpStruct->cx);
2794 	(*env)->SetLongField(env, lpObject, LVCOLUMNFc.pszText, (jlong)lpStruct->pszText);
2795 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cchTextMax, (jint)lpStruct->cchTextMax);
2796 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iSubItem, (jint)lpStruct->iSubItem);
2797 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iImage, (jint)lpStruct->iImage);
2798 	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iOrder, (jint)lpStruct->iOrder);
2799 }
2800 #endif
2801 
2802 #ifndef NO_LVHITTESTINFO
2803 typedef struct LVHITTESTINFO_FID_CACHE {
2804 	int cached;
2805 	jclass clazz;
2806 	jfieldID x, y, flags, iItem, iSubItem;
2807 } LVHITTESTINFO_FID_CACHE;
2808 
2809 LVHITTESTINFO_FID_CACHE LVHITTESTINFOFc;
2810 
cacheLVHITTESTINFOFields(JNIEnv * env,jobject lpObject)2811 void cacheLVHITTESTINFOFields(JNIEnv *env, jobject lpObject)
2812 {
2813 	if (LVHITTESTINFOFc.cached) return;
2814 	LVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
2815 	LVHITTESTINFOFc.x = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "x", "I");
2816 	LVHITTESTINFOFc.y = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "y", "I");
2817 	LVHITTESTINFOFc.flags = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "flags", "I");
2818 	LVHITTESTINFOFc.iItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iItem", "I");
2819 	LVHITTESTINFOFc.iSubItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iSubItem", "I");
2820 	LVHITTESTINFOFc.cached = 1;
2821 }
2822 
getLVHITTESTINFOFields(JNIEnv * env,jobject lpObject,LVHITTESTINFO * lpStruct)2823 LVHITTESTINFO *getLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)
2824 {
2825 	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);
2826 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.x);
2827 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.y);
2828 	lpStruct->flags = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.flags);
2829 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iItem);
2830 	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem);
2831 	return lpStruct;
2832 }
2833 
setLVHITTESTINFOFields(JNIEnv * env,jobject lpObject,LVHITTESTINFO * lpStruct)2834 void setLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)
2835 {
2836 	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);
2837 	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.x, (jint)lpStruct->pt.x);
2838 	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.y, (jint)lpStruct->pt.y);
2839 	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.flags, (jint)lpStruct->flags);
2840 	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iItem, (jint)lpStruct->iItem);
2841 	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem, (jint)lpStruct->iSubItem);
2842 }
2843 #endif
2844 
2845 #ifndef NO_LVINSERTMARK
2846 typedef struct LVINSERTMARK_FID_CACHE {
2847 	int cached;
2848 	jclass clazz;
2849 	jfieldID cbSize, dwFlags, iItem, dwReserved;
2850 } LVINSERTMARK_FID_CACHE;
2851 
2852 LVINSERTMARK_FID_CACHE LVINSERTMARKFc;
2853 
cacheLVINSERTMARKFields(JNIEnv * env,jobject lpObject)2854 void cacheLVINSERTMARKFields(JNIEnv *env, jobject lpObject)
2855 {
2856 	if (LVINSERTMARKFc.cached) return;
2857 	LVINSERTMARKFc.clazz = (*env)->GetObjectClass(env, lpObject);
2858 	LVINSERTMARKFc.cbSize = (*env)->GetFieldID(env, LVINSERTMARKFc.clazz, "cbSize", "I");
2859 	LVINSERTMARKFc.dwFlags = (*env)->GetFieldID(env, LVINSERTMARKFc.clazz, "dwFlags", "I");
2860 	LVINSERTMARKFc.iItem = (*env)->GetFieldID(env, LVINSERTMARKFc.clazz, "iItem", "I");
2861 	LVINSERTMARKFc.dwReserved = (*env)->GetFieldID(env, LVINSERTMARKFc.clazz, "dwReserved", "I");
2862 	LVINSERTMARKFc.cached = 1;
2863 }
2864 
getLVINSERTMARKFields(JNIEnv * env,jobject lpObject,LVINSERTMARK * lpStruct)2865 LVINSERTMARK *getLVINSERTMARKFields(JNIEnv *env, jobject lpObject, LVINSERTMARK *lpStruct)
2866 {
2867 	if (!LVINSERTMARKFc.cached) cacheLVINSERTMARKFields(env, lpObject);
2868 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, LVINSERTMARKFc.cbSize);
2869 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, LVINSERTMARKFc.dwFlags);
2870 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVINSERTMARKFc.iItem);
2871 	lpStruct->dwReserved = (*env)->GetIntField(env, lpObject, LVINSERTMARKFc.dwReserved);
2872 	return lpStruct;
2873 }
2874 
setLVINSERTMARKFields(JNIEnv * env,jobject lpObject,LVINSERTMARK * lpStruct)2875 void setLVINSERTMARKFields(JNIEnv *env, jobject lpObject, LVINSERTMARK *lpStruct)
2876 {
2877 	if (!LVINSERTMARKFc.cached) cacheLVINSERTMARKFields(env, lpObject);
2878 	(*env)->SetIntField(env, lpObject, LVINSERTMARKFc.cbSize, (jint)lpStruct->cbSize);
2879 	(*env)->SetIntField(env, lpObject, LVINSERTMARKFc.dwFlags, (jint)lpStruct->dwFlags);
2880 	(*env)->SetIntField(env, lpObject, LVINSERTMARKFc.iItem, (jint)lpStruct->iItem);
2881 	(*env)->SetIntField(env, lpObject, LVINSERTMARKFc.dwReserved, (jint)lpStruct->dwReserved);
2882 }
2883 #endif
2884 
2885 #ifndef NO_LVITEM
2886 typedef struct LVITEM_FID_CACHE {
2887 	int cached;
2888 	jclass clazz;
2889 	jfieldID mask, iItem, iSubItem, state, stateMask, pszText, cchTextMax, iImage, lParam, iIndent, iGroupId, cColumns, puColumns;
2890 } LVITEM_FID_CACHE;
2891 
2892 LVITEM_FID_CACHE LVITEMFc;
2893 
cacheLVITEMFields(JNIEnv * env,jobject lpObject)2894 void cacheLVITEMFields(JNIEnv *env, jobject lpObject)
2895 {
2896 	if (LVITEMFc.cached) return;
2897 	LVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
2898 	LVITEMFc.mask = (*env)->GetFieldID(env, LVITEMFc.clazz, "mask", "I");
2899 	LVITEMFc.iItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iItem", "I");
2900 	LVITEMFc.iSubItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iSubItem", "I");
2901 	LVITEMFc.state = (*env)->GetFieldID(env, LVITEMFc.clazz, "state", "I");
2902 	LVITEMFc.stateMask = (*env)->GetFieldID(env, LVITEMFc.clazz, "stateMask", "I");
2903 	LVITEMFc.pszText = (*env)->GetFieldID(env, LVITEMFc.clazz, "pszText", "J");
2904 	LVITEMFc.cchTextMax = (*env)->GetFieldID(env, LVITEMFc.clazz, "cchTextMax", "I");
2905 	LVITEMFc.iImage = (*env)->GetFieldID(env, LVITEMFc.clazz, "iImage", "I");
2906 	LVITEMFc.lParam = (*env)->GetFieldID(env, LVITEMFc.clazz, "lParam", "J");
2907 	LVITEMFc.iIndent = (*env)->GetFieldID(env, LVITEMFc.clazz, "iIndent", "I");
2908 	LVITEMFc.iGroupId = (*env)->GetFieldID(env, LVITEMFc.clazz, "iGroupId", "I");
2909 	LVITEMFc.cColumns = (*env)->GetFieldID(env, LVITEMFc.clazz, "cColumns", "I");
2910 	LVITEMFc.puColumns = (*env)->GetFieldID(env, LVITEMFc.clazz, "puColumns", "J");
2911 	LVITEMFc.cached = 1;
2912 }
2913 
getLVITEMFields(JNIEnv * env,jobject lpObject,LVITEM * lpStruct)2914 LVITEM *getLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)
2915 {
2916 	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);
2917 	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVITEMFc.mask);
2918 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iItem);
2919 	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iSubItem);
2920 	lpStruct->state = (*env)->GetIntField(env, lpObject, LVITEMFc.state);
2921 	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, LVITEMFc.stateMask);
2922 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, LVITEMFc.pszText);
2923 	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVITEMFc.cchTextMax);
2924 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVITEMFc.iImage);
2925 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, LVITEMFc.lParam);
2926 	lpStruct->iIndent = (*env)->GetIntField(env, lpObject, LVITEMFc.iIndent);
2927 	lpStruct->iGroupId = (*env)->GetIntField(env, lpObject, LVITEMFc.iGroupId);
2928 	lpStruct->cColumns = (*env)->GetIntField(env, lpObject, LVITEMFc.cColumns);
2929 	lpStruct->puColumns = (PUINT)(*env)->GetLongField(env, lpObject, LVITEMFc.puColumns);
2930 	return lpStruct;
2931 }
2932 
setLVITEMFields(JNIEnv * env,jobject lpObject,LVITEM * lpStruct)2933 void setLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)
2934 {
2935 	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);
2936 	(*env)->SetIntField(env, lpObject, LVITEMFc.mask, (jint)lpStruct->mask);
2937 	(*env)->SetIntField(env, lpObject, LVITEMFc.iItem, (jint)lpStruct->iItem);
2938 	(*env)->SetIntField(env, lpObject, LVITEMFc.iSubItem, (jint)lpStruct->iSubItem);
2939 	(*env)->SetIntField(env, lpObject, LVITEMFc.state, (jint)lpStruct->state);
2940 	(*env)->SetIntField(env, lpObject, LVITEMFc.stateMask, (jint)lpStruct->stateMask);
2941 	(*env)->SetLongField(env, lpObject, LVITEMFc.pszText, (jlong)lpStruct->pszText);
2942 	(*env)->SetIntField(env, lpObject, LVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
2943 	(*env)->SetIntField(env, lpObject, LVITEMFc.iImage, (jint)lpStruct->iImage);
2944 	(*env)->SetLongField(env, lpObject, LVITEMFc.lParam, (jlong)lpStruct->lParam);
2945 	(*env)->SetIntField(env, lpObject, LVITEMFc.iIndent, (jint)lpStruct->iIndent);
2946 	(*env)->SetIntField(env, lpObject, LVITEMFc.iGroupId, (jint)lpStruct->iGroupId);
2947 	(*env)->SetIntField(env, lpObject, LVITEMFc.cColumns, (jint)lpStruct->cColumns);
2948 	(*env)->SetLongField(env, lpObject, LVITEMFc.puColumns, (jlong)lpStruct->puColumns);
2949 }
2950 #endif
2951 
2952 #ifndef NO_MARGINS
2953 typedef struct MARGINS_FID_CACHE {
2954 	int cached;
2955 	jclass clazz;
2956 	jfieldID cxLeftWidth, cxRightWidth, cyTopHeight, cyBottomHeight;
2957 } MARGINS_FID_CACHE;
2958 
2959 MARGINS_FID_CACHE MARGINSFc;
2960 
cacheMARGINSFields(JNIEnv * env,jobject lpObject)2961 void cacheMARGINSFields(JNIEnv *env, jobject lpObject)
2962 {
2963 	if (MARGINSFc.cached) return;
2964 	MARGINSFc.clazz = (*env)->GetObjectClass(env, lpObject);
2965 	MARGINSFc.cxLeftWidth = (*env)->GetFieldID(env, MARGINSFc.clazz, "cxLeftWidth", "I");
2966 	MARGINSFc.cxRightWidth = (*env)->GetFieldID(env, MARGINSFc.clazz, "cxRightWidth", "I");
2967 	MARGINSFc.cyTopHeight = (*env)->GetFieldID(env, MARGINSFc.clazz, "cyTopHeight", "I");
2968 	MARGINSFc.cyBottomHeight = (*env)->GetFieldID(env, MARGINSFc.clazz, "cyBottomHeight", "I");
2969 	MARGINSFc.cached = 1;
2970 }
2971 
getMARGINSFields(JNIEnv * env,jobject lpObject,MARGINS * lpStruct)2972 MARGINS *getMARGINSFields(JNIEnv *env, jobject lpObject, MARGINS *lpStruct)
2973 {
2974 	if (!MARGINSFc.cached) cacheMARGINSFields(env, lpObject);
2975 	lpStruct->cxLeftWidth = (*env)->GetIntField(env, lpObject, MARGINSFc.cxLeftWidth);
2976 	lpStruct->cxRightWidth = (*env)->GetIntField(env, lpObject, MARGINSFc.cxRightWidth);
2977 	lpStruct->cyTopHeight = (*env)->GetIntField(env, lpObject, MARGINSFc.cyTopHeight);
2978 	lpStruct->cyBottomHeight = (*env)->GetIntField(env, lpObject, MARGINSFc.cyBottomHeight);
2979 	return lpStruct;
2980 }
2981 
setMARGINSFields(JNIEnv * env,jobject lpObject,MARGINS * lpStruct)2982 void setMARGINSFields(JNIEnv *env, jobject lpObject, MARGINS *lpStruct)
2983 {
2984 	if (!MARGINSFc.cached) cacheMARGINSFields(env, lpObject);
2985 	(*env)->SetIntField(env, lpObject, MARGINSFc.cxLeftWidth, (jint)lpStruct->cxLeftWidth);
2986 	(*env)->SetIntField(env, lpObject, MARGINSFc.cxRightWidth, (jint)lpStruct->cxRightWidth);
2987 	(*env)->SetIntField(env, lpObject, MARGINSFc.cyTopHeight, (jint)lpStruct->cyTopHeight);
2988 	(*env)->SetIntField(env, lpObject, MARGINSFc.cyBottomHeight, (jint)lpStruct->cyBottomHeight);
2989 }
2990 #endif
2991 
2992 #ifndef NO_MCHITTESTINFO
2993 typedef struct MCHITTESTINFO_FID_CACHE {
2994 	int cached;
2995 	jclass clazz;
2996 	jfieldID cbSize, pt, uHit, st;
2997 } MCHITTESTINFO_FID_CACHE;
2998 
2999 MCHITTESTINFO_FID_CACHE MCHITTESTINFOFc;
3000 
cacheMCHITTESTINFOFields(JNIEnv * env,jobject lpObject)3001 void cacheMCHITTESTINFOFields(JNIEnv *env, jobject lpObject)
3002 {
3003 	if (MCHITTESTINFOFc.cached) return;
3004 	MCHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3005 	MCHITTESTINFOFc.cbSize = (*env)->GetFieldID(env, MCHITTESTINFOFc.clazz, "cbSize", "I");
3006 	MCHITTESTINFOFc.pt = (*env)->GetFieldID(env, MCHITTESTINFOFc.clazz, "pt", "Lorg/eclipse/swt/internal/win32/POINT;");
3007 	MCHITTESTINFOFc.uHit = (*env)->GetFieldID(env, MCHITTESTINFOFc.clazz, "uHit", "I");
3008 	MCHITTESTINFOFc.st = (*env)->GetFieldID(env, MCHITTESTINFOFc.clazz, "st", "Lorg/eclipse/swt/internal/win32/SYSTEMTIME;");
3009 	MCHITTESTINFOFc.cached = 1;
3010 }
3011 
getMCHITTESTINFOFields(JNIEnv * env,jobject lpObject,MCHITTESTINFO * lpStruct)3012 MCHITTESTINFO *getMCHITTESTINFOFields(JNIEnv *env, jobject lpObject, MCHITTESTINFO *lpStruct)
3013 {
3014 	if (!MCHITTESTINFOFc.cached) cacheMCHITTESTINFOFields(env, lpObject);
3015 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MCHITTESTINFOFc.cbSize);
3016 	{
3017 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, MCHITTESTINFOFc.pt);
3018 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->pt);
3019 	}
3020 	lpStruct->uHit = (*env)->GetIntField(env, lpObject, MCHITTESTINFOFc.uHit);
3021 	{
3022 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, MCHITTESTINFOFc.st);
3023 	if (lpObject1 != NULL) getSYSTEMTIMEFields(env, lpObject1, &lpStruct->st);
3024 	}
3025 	return lpStruct;
3026 }
3027 
setMCHITTESTINFOFields(JNIEnv * env,jobject lpObject,MCHITTESTINFO * lpStruct)3028 void setMCHITTESTINFOFields(JNIEnv *env, jobject lpObject, MCHITTESTINFO *lpStruct)
3029 {
3030 	if (!MCHITTESTINFOFc.cached) cacheMCHITTESTINFOFields(env, lpObject);
3031 	(*env)->SetIntField(env, lpObject, MCHITTESTINFOFc.cbSize, (jint)lpStruct->cbSize);
3032 	{
3033 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, MCHITTESTINFOFc.pt);
3034 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->pt);
3035 	}
3036 	(*env)->SetIntField(env, lpObject, MCHITTESTINFOFc.uHit, (jint)lpStruct->uHit);
3037 	{
3038 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, MCHITTESTINFOFc.st);
3039 	if (lpObject1 != NULL) setSYSTEMTIMEFields(env, lpObject1, &lpStruct->st);
3040 	}
3041 }
3042 #endif
3043 
3044 #ifndef NO_MEASUREITEMSTRUCT
3045 typedef struct MEASUREITEMSTRUCT_FID_CACHE {
3046 	int cached;
3047 	jclass clazz;
3048 	jfieldID CtlType, CtlID, itemID, itemWidth, itemHeight, itemData;
3049 } MEASUREITEMSTRUCT_FID_CACHE;
3050 
3051 MEASUREITEMSTRUCT_FID_CACHE MEASUREITEMSTRUCTFc;
3052 
cacheMEASUREITEMSTRUCTFields(JNIEnv * env,jobject lpObject)3053 void cacheMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject)
3054 {
3055 	if (MEASUREITEMSTRUCTFc.cached) return;
3056 	MEASUREITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
3057 	MEASUREITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlType", "I");
3058 	MEASUREITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlID", "I");
3059 	MEASUREITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemID", "I");
3060 	MEASUREITEMSTRUCTFc.itemWidth = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemWidth", "I");
3061 	MEASUREITEMSTRUCTFc.itemHeight = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemHeight", "I");
3062 	MEASUREITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemData", "J");
3063 	MEASUREITEMSTRUCTFc.cached = 1;
3064 }
3065 
getMEASUREITEMSTRUCTFields(JNIEnv * env,jobject lpObject,MEASUREITEMSTRUCT * lpStruct)3066 MEASUREITEMSTRUCT *getMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)
3067 {
3068 	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);
3069 	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType);
3070 	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID);
3071 	lpStruct->itemID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID);
3072 	lpStruct->itemWidth = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth);
3073 	lpStruct->itemHeight = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight);
3074 	lpStruct->itemData = (*env)->GetLongField(env, lpObject, MEASUREITEMSTRUCTFc.itemData);
3075 	return lpStruct;
3076 }
3077 
setMEASUREITEMSTRUCTFields(JNIEnv * env,jobject lpObject,MEASUREITEMSTRUCT * lpStruct)3078 void setMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)
3079 {
3080 	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);
3081 	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);
3082 	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);
3083 	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);
3084 	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth, (jint)lpStruct->itemWidth);
3085 	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight, (jint)lpStruct->itemHeight);
3086 	(*env)->SetLongField(env, lpObject, MEASUREITEMSTRUCTFc.itemData, (jlong)lpStruct->itemData);
3087 }
3088 #endif
3089 
3090 #ifndef NO_MENUBARINFO
3091 typedef struct MENUBARINFO_FID_CACHE {
3092 	int cached;
3093 	jclass clazz;
3094 	jfieldID cbSize, left, top, right, bottom, hMenu, hwndMenu, fBarFocused, fFocused;
3095 } MENUBARINFO_FID_CACHE;
3096 
3097 MENUBARINFO_FID_CACHE MENUBARINFOFc;
3098 
cacheMENUBARINFOFields(JNIEnv * env,jobject lpObject)3099 void cacheMENUBARINFOFields(JNIEnv *env, jobject lpObject)
3100 {
3101 	if (MENUBARINFOFc.cached) return;
3102 	MENUBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3103 	MENUBARINFOFc.cbSize = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "cbSize", "I");
3104 	MENUBARINFOFc.left = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "left", "I");
3105 	MENUBARINFOFc.top = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "top", "I");
3106 	MENUBARINFOFc.right = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "right", "I");
3107 	MENUBARINFOFc.bottom = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "bottom", "I");
3108 	MENUBARINFOFc.hMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hMenu", "J");
3109 	MENUBARINFOFc.hwndMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hwndMenu", "J");
3110 	MENUBARINFOFc.fBarFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fBarFocused", "Z");
3111 	MENUBARINFOFc.fFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fFocused", "Z");
3112 	MENUBARINFOFc.cached = 1;
3113 }
3114 
getMENUBARINFOFields(JNIEnv * env,jobject lpObject,MENUBARINFO * lpStruct)3115 MENUBARINFO *getMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
3116 {
3117 	if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
3118 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.cbSize);
3119 	lpStruct->rcBar.left = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.left);
3120 	lpStruct->rcBar.top = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.top);
3121 	lpStruct->rcBar.right = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.right);
3122 	lpStruct->rcBar.bottom = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.bottom);
3123 	lpStruct->hMenu = (HMENU)(*env)->GetLongField(env, lpObject, MENUBARINFOFc.hMenu);
3124 	lpStruct->hwndMenu = (HWND)(*env)->GetLongField(env, lpObject, MENUBARINFOFc.hwndMenu);
3125 	lpStruct->fBarFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused);
3126 	lpStruct->fFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fFocused);
3127 	return lpStruct;
3128 }
3129 
setMENUBARINFOFields(JNIEnv * env,jobject lpObject,MENUBARINFO * lpStruct)3130 void setMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
3131 {
3132 	if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
3133 	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.cbSize, (jint)lpStruct->cbSize);
3134 	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.left, (jint)lpStruct->rcBar.left);
3135 	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.top, (jint)lpStruct->rcBar.top);
3136 	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.right, (jint)lpStruct->rcBar.right);
3137 	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.bottom, (jint)lpStruct->rcBar.bottom);
3138 	(*env)->SetLongField(env, lpObject, MENUBARINFOFc.hMenu, (jlong)lpStruct->hMenu);
3139 	(*env)->SetLongField(env, lpObject, MENUBARINFOFc.hwndMenu, (jlong)lpStruct->hwndMenu);
3140 	(*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused, (jboolean)lpStruct->fBarFocused);
3141 	(*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fFocused, (jboolean)lpStruct->fFocused);
3142 }
3143 #endif
3144 
3145 #ifndef NO_MENUINFO
3146 typedef struct MENUINFO_FID_CACHE {
3147 	int cached;
3148 	jclass clazz;
3149 	jfieldID cbSize, fMask, dwStyle, cyMax, hbrBack, dwContextHelpID, dwMenuData;
3150 } MENUINFO_FID_CACHE;
3151 
3152 MENUINFO_FID_CACHE MENUINFOFc;
3153 
cacheMENUINFOFields(JNIEnv * env,jobject lpObject)3154 void cacheMENUINFOFields(JNIEnv *env, jobject lpObject)
3155 {
3156 	if (MENUINFOFc.cached) return;
3157 	MENUINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3158 	MENUINFOFc.cbSize = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cbSize", "I");
3159 	MENUINFOFc.fMask = (*env)->GetFieldID(env, MENUINFOFc.clazz, "fMask", "I");
3160 	MENUINFOFc.dwStyle = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwStyle", "I");
3161 	MENUINFOFc.cyMax = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cyMax", "I");
3162 	MENUINFOFc.hbrBack = (*env)->GetFieldID(env, MENUINFOFc.clazz, "hbrBack", "J");
3163 	MENUINFOFc.dwContextHelpID = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwContextHelpID", "I");
3164 	MENUINFOFc.dwMenuData = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwMenuData", "J");
3165 	MENUINFOFc.cached = 1;
3166 }
3167 
getMENUINFOFields(JNIEnv * env,jobject lpObject,MENUINFO * lpStruct)3168 MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)
3169 {
3170 	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);
3171 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUINFOFc.cbSize);
3172 	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUINFOFc.fMask);
3173 	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwStyle);
3174 	lpStruct->cyMax = (*env)->GetIntField(env, lpObject, MENUINFOFc.cyMax);
3175 	lpStruct->hbrBack = (HBRUSH)(*env)->GetLongField(env, lpObject, MENUINFOFc.hbrBack);
3176 	lpStruct->dwContextHelpID = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwContextHelpID);
3177 	lpStruct->dwMenuData = (*env)->GetLongField(env, lpObject, MENUINFOFc.dwMenuData);
3178 	return lpStruct;
3179 }
3180 
setMENUINFOFields(JNIEnv * env,jobject lpObject,MENUINFO * lpStruct)3181 void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)
3182 {
3183 	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);
3184 	(*env)->SetIntField(env, lpObject, MENUINFOFc.cbSize, (jint)lpStruct->cbSize);
3185 	(*env)->SetIntField(env, lpObject, MENUINFOFc.fMask, (jint)lpStruct->fMask);
3186 	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwStyle, (jint)lpStruct->dwStyle);
3187 	(*env)->SetIntField(env, lpObject, MENUINFOFc.cyMax, (jint)lpStruct->cyMax);
3188 	(*env)->SetLongField(env, lpObject, MENUINFOFc.hbrBack, (jlong)lpStruct->hbrBack);
3189 	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwContextHelpID, (jint)lpStruct->dwContextHelpID);
3190 	(*env)->SetLongField(env, lpObject, MENUINFOFc.dwMenuData, (jlong)lpStruct->dwMenuData);
3191 }
3192 #endif
3193 
3194 #ifndef NO_MENUITEMINFO
3195 typedef struct MENUITEMINFO_FID_CACHE {
3196 	int cached;
3197 	jclass clazz;
3198 	jfieldID cbSize, fMask, fType, fState, wID, hSubMenu, hbmpChecked, hbmpUnchecked, dwItemData, dwTypeData, cch, hbmpItem;
3199 } MENUITEMINFO_FID_CACHE;
3200 
3201 MENUITEMINFO_FID_CACHE MENUITEMINFOFc;
3202 
cacheMENUITEMINFOFields(JNIEnv * env,jobject lpObject)3203 void cacheMENUITEMINFOFields(JNIEnv *env, jobject lpObject)
3204 {
3205 	if (MENUITEMINFOFc.cached) return;
3206 	MENUITEMINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3207 	MENUITEMINFOFc.cbSize = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cbSize", "I");
3208 	MENUITEMINFOFc.fMask = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fMask", "I");
3209 	MENUITEMINFOFc.fType = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fType", "I");
3210 	MENUITEMINFOFc.fState = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fState", "I");
3211 	MENUITEMINFOFc.wID = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "wID", "I");
3212 	MENUITEMINFOFc.hSubMenu = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hSubMenu", "J");
3213 	MENUITEMINFOFc.hbmpChecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpChecked", "J");
3214 	MENUITEMINFOFc.hbmpUnchecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpUnchecked", "J");
3215 	MENUITEMINFOFc.dwItemData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwItemData", "J");
3216 	MENUITEMINFOFc.dwTypeData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwTypeData", "J");
3217 	MENUITEMINFOFc.cch = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cch", "I");
3218 	MENUITEMINFOFc.hbmpItem = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpItem", "J");
3219 	MENUITEMINFOFc.cached = 1;
3220 }
3221 
getMENUITEMINFOFields(JNIEnv * env,jobject lpObject,MENUITEMINFO * lpStruct)3222 MENUITEMINFO *getMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)
3223 {
3224 	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);
3225 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cbSize);
3226 	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fMask);
3227 	lpStruct->fType = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fType);
3228 	lpStruct->fState = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fState);
3229 	lpStruct->wID = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.wID);
3230 	lpStruct->hSubMenu = (HMENU)(*env)->GetLongField(env, lpObject, MENUITEMINFOFc.hSubMenu);
3231 	lpStruct->hbmpChecked = (HBITMAP)(*env)->GetLongField(env, lpObject, MENUITEMINFOFc.hbmpChecked);
3232 	lpStruct->hbmpUnchecked = (HBITMAP)(*env)->GetLongField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked);
3233 	lpStruct->dwItemData = (*env)->GetLongField(env, lpObject, MENUITEMINFOFc.dwItemData);
3234 	lpStruct->dwTypeData = (LPTSTR)(*env)->GetLongField(env, lpObject, MENUITEMINFOFc.dwTypeData);
3235 	lpStruct->cch = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cch);
3236 	lpStruct->hbmpItem = (HBITMAP)(*env)->GetLongField(env, lpObject, MENUITEMINFOFc.hbmpItem);
3237 	return lpStruct;
3238 }
3239 
setMENUITEMINFOFields(JNIEnv * env,jobject lpObject,MENUITEMINFO * lpStruct)3240 void setMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)
3241 {
3242 	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);
3243 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cbSize, (jint)lpStruct->cbSize);
3244 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fMask, (jint)lpStruct->fMask);
3245 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fType, (jint)lpStruct->fType);
3246 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fState, (jint)lpStruct->fState);
3247 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.wID, (jint)lpStruct->wID);
3248 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.hSubMenu, (jlong)lpStruct->hSubMenu);
3249 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.hbmpChecked, (jlong)lpStruct->hbmpChecked);
3250 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked, (jlong)lpStruct->hbmpUnchecked);
3251 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.dwItemData, (jlong)lpStruct->dwItemData);
3252 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.dwTypeData, (jlong)lpStruct->dwTypeData);
3253 	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cch, (jint)lpStruct->cch);
3254 	(*env)->SetLongField(env, lpObject, MENUITEMINFOFc.hbmpItem, (jlong)lpStruct->hbmpItem);
3255 }
3256 #endif
3257 
3258 #ifndef NO_MINMAXINFO
3259 typedef struct MINMAXINFO_FID_CACHE {
3260 	int cached;
3261 	jclass clazz;
3262 	jfieldID ptReserved_x, ptReserved_y, ptMaxSize_x, ptMaxSize_y, ptMaxPosition_x, ptMaxPosition_y, ptMinTrackSize_x, ptMinTrackSize_y, ptMaxTrackSize_x, ptMaxTrackSize_y;
3263 } MINMAXINFO_FID_CACHE;
3264 
3265 MINMAXINFO_FID_CACHE MINMAXINFOFc;
3266 
cacheMINMAXINFOFields(JNIEnv * env,jobject lpObject)3267 void cacheMINMAXINFOFields(JNIEnv *env, jobject lpObject)
3268 {
3269 	if (MINMAXINFOFc.cached) return;
3270 	MINMAXINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3271 	MINMAXINFOFc.ptReserved_x = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptReserved_x", "I");
3272 	MINMAXINFOFc.ptReserved_y = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptReserved_y", "I");
3273 	MINMAXINFOFc.ptMaxSize_x = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxSize_x", "I");
3274 	MINMAXINFOFc.ptMaxSize_y = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxSize_y", "I");
3275 	MINMAXINFOFc.ptMaxPosition_x = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxPosition_x", "I");
3276 	MINMAXINFOFc.ptMaxPosition_y = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxPosition_y", "I");
3277 	MINMAXINFOFc.ptMinTrackSize_x = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMinTrackSize_x", "I");
3278 	MINMAXINFOFc.ptMinTrackSize_y = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMinTrackSize_y", "I");
3279 	MINMAXINFOFc.ptMaxTrackSize_x = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxTrackSize_x", "I");
3280 	MINMAXINFOFc.ptMaxTrackSize_y = (*env)->GetFieldID(env, MINMAXINFOFc.clazz, "ptMaxTrackSize_y", "I");
3281 	MINMAXINFOFc.cached = 1;
3282 }
3283 
getMINMAXINFOFields(JNIEnv * env,jobject lpObject,MINMAXINFO * lpStruct)3284 MINMAXINFO *getMINMAXINFOFields(JNIEnv *env, jobject lpObject, MINMAXINFO *lpStruct)
3285 {
3286 	if (!MINMAXINFOFc.cached) cacheMINMAXINFOFields(env, lpObject);
3287 	lpStruct->ptReserved.x = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptReserved_x);
3288 	lpStruct->ptReserved.y = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptReserved_y);
3289 	lpStruct->ptMaxSize.x = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxSize_x);
3290 	lpStruct->ptMaxSize.y = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxSize_y);
3291 	lpStruct->ptMaxPosition.x = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxPosition_x);
3292 	lpStruct->ptMaxPosition.y = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxPosition_y);
3293 	lpStruct->ptMinTrackSize.x = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMinTrackSize_x);
3294 	lpStruct->ptMinTrackSize.y = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMinTrackSize_y);
3295 	lpStruct->ptMaxTrackSize.x = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxTrackSize_x);
3296 	lpStruct->ptMaxTrackSize.y = (*env)->GetIntField(env, lpObject, MINMAXINFOFc.ptMaxTrackSize_y);
3297 	return lpStruct;
3298 }
3299 
setMINMAXINFOFields(JNIEnv * env,jobject lpObject,MINMAXINFO * lpStruct)3300 void setMINMAXINFOFields(JNIEnv *env, jobject lpObject, MINMAXINFO *lpStruct)
3301 {
3302 	if (!MINMAXINFOFc.cached) cacheMINMAXINFOFields(env, lpObject);
3303 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptReserved_x, (jint)lpStruct->ptReserved.x);
3304 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptReserved_y, (jint)lpStruct->ptReserved.y);
3305 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxSize_x, (jint)lpStruct->ptMaxSize.x);
3306 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxSize_y, (jint)lpStruct->ptMaxSize.y);
3307 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxPosition_x, (jint)lpStruct->ptMaxPosition.x);
3308 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxPosition_y, (jint)lpStruct->ptMaxPosition.y);
3309 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMinTrackSize_x, (jint)lpStruct->ptMinTrackSize.x);
3310 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMinTrackSize_y, (jint)lpStruct->ptMinTrackSize.y);
3311 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxTrackSize_x, (jint)lpStruct->ptMaxTrackSize.x);
3312 	(*env)->SetIntField(env, lpObject, MINMAXINFOFc.ptMaxTrackSize_y, (jint)lpStruct->ptMaxTrackSize.y);
3313 }
3314 #endif
3315 
3316 #ifndef NO_MONITORINFO
3317 typedef struct MONITORINFO_FID_CACHE {
3318 	int cached;
3319 	jclass clazz;
3320 	jfieldID cbSize, rcMonitor_left, rcMonitor_top, rcMonitor_right, rcMonitor_bottom, rcWork_left, rcWork_top, rcWork_right, rcWork_bottom, dwFlags;
3321 } MONITORINFO_FID_CACHE;
3322 
3323 MONITORINFO_FID_CACHE MONITORINFOFc;
3324 
cacheMONITORINFOFields(JNIEnv * env,jobject lpObject)3325 void cacheMONITORINFOFields(JNIEnv *env, jobject lpObject)
3326 {
3327 	if (MONITORINFOFc.cached) return;
3328 	MONITORINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3329 	MONITORINFOFc.cbSize = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "cbSize", "I");
3330 	MONITORINFOFc.rcMonitor_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_left", "I");
3331 	MONITORINFOFc.rcMonitor_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_top", "I");
3332 	MONITORINFOFc.rcMonitor_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_right", "I");
3333 	MONITORINFOFc.rcMonitor_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_bottom", "I");
3334 	MONITORINFOFc.rcWork_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_left", "I");
3335 	MONITORINFOFc.rcWork_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_top", "I");
3336 	MONITORINFOFc.rcWork_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_right", "I");
3337 	MONITORINFOFc.rcWork_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_bottom", "I");
3338 	MONITORINFOFc.dwFlags = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "dwFlags", "I");
3339 	MONITORINFOFc.cached = 1;
3340 }
3341 
getMONITORINFOFields(JNIEnv * env,jobject lpObject,MONITORINFO * lpStruct)3342 MONITORINFO *getMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)
3343 {
3344 	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);
3345 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MONITORINFOFc.cbSize);
3346 	lpStruct->rcMonitor.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left);
3347 	lpStruct->rcMonitor.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top);
3348 	lpStruct->rcMonitor.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right);
3349 	lpStruct->rcMonitor.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom);
3350 	lpStruct->rcWork.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_left);
3351 	lpStruct->rcWork.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_top);
3352 	lpStruct->rcWork.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_right);
3353 	lpStruct->rcWork.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom);
3354 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, MONITORINFOFc.dwFlags);
3355 	return lpStruct;
3356 }
3357 
setMONITORINFOFields(JNIEnv * env,jobject lpObject,MONITORINFO * lpStruct)3358 void setMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)
3359 {
3360 	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);
3361 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.cbSize, (jint)lpStruct->cbSize);
3362 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left, (jint)lpStruct->rcMonitor.left);
3363 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top, (jint)lpStruct->rcMonitor.top);
3364 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right, (jint)lpStruct->rcMonitor.right);
3365 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom, (jint)lpStruct->rcMonitor.bottom);
3366 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_left, (jint)lpStruct->rcWork.left);
3367 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_top, (jint)lpStruct->rcWork.top);
3368 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_right, (jint)lpStruct->rcWork.right);
3369 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom, (jint)lpStruct->rcWork.bottom);
3370 	(*env)->SetIntField(env, lpObject, MONITORINFOFc.dwFlags, (jint)lpStruct->dwFlags);
3371 }
3372 #endif
3373 
3374 #ifndef NO_MOUSEINPUT
3375 typedef struct MOUSEINPUT_FID_CACHE {
3376 	int cached;
3377 	jclass clazz;
3378 	jfieldID dx, dy, mouseData, dwFlags, time, dwExtraInfo;
3379 } MOUSEINPUT_FID_CACHE;
3380 
3381 MOUSEINPUT_FID_CACHE MOUSEINPUTFc;
3382 
cacheMOUSEINPUTFields(JNIEnv * env,jobject lpObject)3383 void cacheMOUSEINPUTFields(JNIEnv *env, jobject lpObject)
3384 {
3385 	if (MOUSEINPUTFc.cached) return;
3386 	MOUSEINPUTFc.clazz = (*env)->GetObjectClass(env, lpObject);
3387 	MOUSEINPUTFc.dx = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "dx", "I");
3388 	MOUSEINPUTFc.dy = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "dy", "I");
3389 	MOUSEINPUTFc.mouseData = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "mouseData", "I");
3390 	MOUSEINPUTFc.dwFlags = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "dwFlags", "I");
3391 	MOUSEINPUTFc.time = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "time", "I");
3392 	MOUSEINPUTFc.dwExtraInfo = (*env)->GetFieldID(env, MOUSEINPUTFc.clazz, "dwExtraInfo", "J");
3393 	MOUSEINPUTFc.cached = 1;
3394 }
3395 
getMOUSEINPUTFields(JNIEnv * env,jobject lpObject,MOUSEINPUT * lpStruct)3396 MOUSEINPUT *getMOUSEINPUTFields(JNIEnv *env, jobject lpObject, MOUSEINPUT *lpStruct)
3397 {
3398 	if (!MOUSEINPUTFc.cached) cacheMOUSEINPUTFields(env, lpObject);
3399 	lpStruct->dx = (*env)->GetIntField(env, lpObject, MOUSEINPUTFc.dx);
3400 	lpStruct->dy = (*env)->GetIntField(env, lpObject, MOUSEINPUTFc.dy);
3401 	lpStruct->mouseData = (*env)->GetIntField(env, lpObject, MOUSEINPUTFc.mouseData);
3402 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, MOUSEINPUTFc.dwFlags);
3403 	lpStruct->time = (*env)->GetIntField(env, lpObject, MOUSEINPUTFc.time);
3404 	lpStruct->dwExtraInfo = (*env)->GetLongField(env, lpObject, MOUSEINPUTFc.dwExtraInfo);
3405 	return lpStruct;
3406 }
3407 
setMOUSEINPUTFields(JNIEnv * env,jobject lpObject,MOUSEINPUT * lpStruct)3408 void setMOUSEINPUTFields(JNIEnv *env, jobject lpObject, MOUSEINPUT *lpStruct)
3409 {
3410 	if (!MOUSEINPUTFc.cached) cacheMOUSEINPUTFields(env, lpObject);
3411 	(*env)->SetIntField(env, lpObject, MOUSEINPUTFc.dx, (jint)lpStruct->dx);
3412 	(*env)->SetIntField(env, lpObject, MOUSEINPUTFc.dy, (jint)lpStruct->dy);
3413 	(*env)->SetIntField(env, lpObject, MOUSEINPUTFc.mouseData, (jint)lpStruct->mouseData);
3414 	(*env)->SetIntField(env, lpObject, MOUSEINPUTFc.dwFlags, (jint)lpStruct->dwFlags);
3415 	(*env)->SetIntField(env, lpObject, MOUSEINPUTFc.time, (jint)lpStruct->time);
3416 	(*env)->SetLongField(env, lpObject, MOUSEINPUTFc.dwExtraInfo, (jlong)lpStruct->dwExtraInfo);
3417 }
3418 #endif
3419 
3420 #ifndef NO_MSG
3421 typedef struct MSG_FID_CACHE {
3422 	int cached;
3423 	jclass clazz;
3424 	jfieldID hwnd, message, wParam, lParam, time, x, y;
3425 } MSG_FID_CACHE;
3426 
3427 MSG_FID_CACHE MSGFc;
3428 
cacheMSGFields(JNIEnv * env,jobject lpObject)3429 void cacheMSGFields(JNIEnv *env, jobject lpObject)
3430 {
3431 	if (MSGFc.cached) return;
3432 	MSGFc.clazz = (*env)->GetObjectClass(env, lpObject);
3433 	MSGFc.hwnd = (*env)->GetFieldID(env, MSGFc.clazz, "hwnd", "J");
3434 	MSGFc.message = (*env)->GetFieldID(env, MSGFc.clazz, "message", "I");
3435 	MSGFc.wParam = (*env)->GetFieldID(env, MSGFc.clazz, "wParam", "J");
3436 	MSGFc.lParam = (*env)->GetFieldID(env, MSGFc.clazz, "lParam", "J");
3437 	MSGFc.time = (*env)->GetFieldID(env, MSGFc.clazz, "time", "I");
3438 	MSGFc.x = (*env)->GetFieldID(env, MSGFc.clazz, "x", "I");
3439 	MSGFc.y = (*env)->GetFieldID(env, MSGFc.clazz, "y", "I");
3440 	MSGFc.cached = 1;
3441 }
3442 
getMSGFields(JNIEnv * env,jobject lpObject,MSG * lpStruct)3443 MSG *getMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)
3444 {
3445 	if (!MSGFc.cached) cacheMSGFields(env, lpObject);
3446 	lpStruct->hwnd = (HWND)(*env)->GetLongField(env, lpObject, MSGFc.hwnd);
3447 	lpStruct->message = (*env)->GetIntField(env, lpObject, MSGFc.message);
3448 	lpStruct->wParam = (*env)->GetLongField(env, lpObject, MSGFc.wParam);
3449 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, MSGFc.lParam);
3450 	lpStruct->time = (*env)->GetIntField(env, lpObject, MSGFc.time);
3451 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, MSGFc.x);
3452 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, MSGFc.y);
3453 	return lpStruct;
3454 }
3455 
setMSGFields(JNIEnv * env,jobject lpObject,MSG * lpStruct)3456 void setMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)
3457 {
3458 	if (!MSGFc.cached) cacheMSGFields(env, lpObject);
3459 	(*env)->SetLongField(env, lpObject, MSGFc.hwnd, (jlong)lpStruct->hwnd);
3460 	(*env)->SetIntField(env, lpObject, MSGFc.message, (jint)lpStruct->message);
3461 	(*env)->SetLongField(env, lpObject, MSGFc.wParam, (jlong)lpStruct->wParam);
3462 	(*env)->SetLongField(env, lpObject, MSGFc.lParam, (jlong)lpStruct->lParam);
3463 	(*env)->SetIntField(env, lpObject, MSGFc.time, (jint)lpStruct->time);
3464 	(*env)->SetIntField(env, lpObject, MSGFc.x, (jint)lpStruct->pt.x);
3465 	(*env)->SetIntField(env, lpObject, MSGFc.y, (jint)lpStruct->pt.y);
3466 }
3467 #endif
3468 
3469 #ifndef NO_NMCUSTOMDRAW
3470 typedef struct NMCUSTOMDRAW_FID_CACHE {
3471 	int cached;
3472 	jclass clazz;
3473 	jfieldID dwDrawStage, hdc, left, top, right, bottom, dwItemSpec, uItemState, lItemlParam;
3474 } NMCUSTOMDRAW_FID_CACHE;
3475 
3476 NMCUSTOMDRAW_FID_CACHE NMCUSTOMDRAWFc;
3477 
cacheNMCUSTOMDRAWFields(JNIEnv * env,jobject lpObject)3478 void cacheNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
3479 {
3480 	if (NMCUSTOMDRAWFc.cached) return;
3481 	cacheNMHDRFields(env, lpObject);
3482 	NMCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
3483 	NMCUSTOMDRAWFc.dwDrawStage = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwDrawStage", "I");
3484 	NMCUSTOMDRAWFc.hdc = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "hdc", "J");
3485 	NMCUSTOMDRAWFc.left = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "left", "I");
3486 	NMCUSTOMDRAWFc.top = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "top", "I");
3487 	NMCUSTOMDRAWFc.right = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "right", "I");
3488 	NMCUSTOMDRAWFc.bottom = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "bottom", "I");
3489 	NMCUSTOMDRAWFc.dwItemSpec = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwItemSpec", "J");
3490 	NMCUSTOMDRAWFc.uItemState = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "uItemState", "I");
3491 	NMCUSTOMDRAWFc.lItemlParam = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "lItemlParam", "J");
3492 	NMCUSTOMDRAWFc.cached = 1;
3493 }
3494 
getNMCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMCUSTOMDRAW * lpStruct)3495 NMCUSTOMDRAW *getNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)
3496 {
3497 	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);
3498 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3499 	lpStruct->dwDrawStage = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage);
3500 	lpStruct->hdc = (HDC)(*env)->GetLongField(env, lpObject, NMCUSTOMDRAWFc.hdc);
3501 	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.left);
3502 	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.top);
3503 	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.right);
3504 	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom);
3505 	lpStruct->dwItemSpec = (*env)->GetLongField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec);
3506 	lpStruct->uItemState = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState);
3507 	lpStruct->lItemlParam = (*env)->GetLongField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam);
3508 	return lpStruct;
3509 }
3510 
setNMCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMCUSTOMDRAW * lpStruct)3511 void setNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)
3512 {
3513 	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);
3514 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3515 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage, (jint)lpStruct->dwDrawStage);
3516 	(*env)->SetLongField(env, lpObject, NMCUSTOMDRAWFc.hdc, (jlong)lpStruct->hdc);
3517 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.left, (jint)lpStruct->rc.left);
3518 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.top, (jint)lpStruct->rc.top);
3519 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.right, (jint)lpStruct->rc.right);
3520 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom, (jint)lpStruct->rc.bottom);
3521 	(*env)->SetLongField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec, (jlong)lpStruct->dwItemSpec);
3522 	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState, (jint)lpStruct->uItemState);
3523 	(*env)->SetLongField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam, (jlong)lpStruct->lItemlParam);
3524 }
3525 #endif
3526 
3527 #ifndef NO_NMHDR
3528 typedef struct NMHDR_FID_CACHE {
3529 	int cached;
3530 	jclass clazz;
3531 	jfieldID hwndFrom, idFrom, code;
3532 } NMHDR_FID_CACHE;
3533 
3534 NMHDR_FID_CACHE NMHDRFc;
3535 
cacheNMHDRFields(JNIEnv * env,jobject lpObject)3536 void cacheNMHDRFields(JNIEnv *env, jobject lpObject)
3537 {
3538 	if (NMHDRFc.cached) return;
3539 	NMHDRFc.clazz = (*env)->GetObjectClass(env, lpObject);
3540 	NMHDRFc.hwndFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "hwndFrom", "J");
3541 	NMHDRFc.idFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "idFrom", "J");
3542 	NMHDRFc.code = (*env)->GetFieldID(env, NMHDRFc.clazz, "code", "I");
3543 	NMHDRFc.cached = 1;
3544 }
3545 
getNMHDRFields(JNIEnv * env,jobject lpObject,NMHDR * lpStruct)3546 NMHDR *getNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)
3547 {
3548 	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);
3549 	lpStruct->hwndFrom = (HWND)(*env)->GetLongField(env, lpObject, NMHDRFc.hwndFrom);
3550 	lpStruct->idFrom = (*env)->GetLongField(env, lpObject, NMHDRFc.idFrom);
3551 	lpStruct->code = (*env)->GetIntField(env, lpObject, NMHDRFc.code);
3552 	return lpStruct;
3553 }
3554 
setNMHDRFields(JNIEnv * env,jobject lpObject,NMHDR * lpStruct)3555 void setNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)
3556 {
3557 	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);
3558 	(*env)->SetLongField(env, lpObject, NMHDRFc.hwndFrom, (jlong)lpStruct->hwndFrom);
3559 	(*env)->SetLongField(env, lpObject, NMHDRFc.idFrom, (jlong)lpStruct->idFrom);
3560 	(*env)->SetIntField(env, lpObject, NMHDRFc.code, (jint)lpStruct->code);
3561 }
3562 #endif
3563 
3564 #ifndef NO_NMHEADER
3565 typedef struct NMHEADER_FID_CACHE {
3566 	int cached;
3567 	jclass clazz;
3568 	jfieldID iItem, iButton, pitem;
3569 } NMHEADER_FID_CACHE;
3570 
3571 NMHEADER_FID_CACHE NMHEADERFc;
3572 
cacheNMHEADERFields(JNIEnv * env,jobject lpObject)3573 void cacheNMHEADERFields(JNIEnv *env, jobject lpObject)
3574 {
3575 	if (NMHEADERFc.cached) return;
3576 	cacheNMHDRFields(env, lpObject);
3577 	NMHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);
3578 	NMHEADERFc.iItem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iItem", "I");
3579 	NMHEADERFc.iButton = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iButton", "I");
3580 	NMHEADERFc.pitem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "pitem", "J");
3581 	NMHEADERFc.cached = 1;
3582 }
3583 
getNMHEADERFields(JNIEnv * env,jobject lpObject,NMHEADER * lpStruct)3584 NMHEADER *getNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)
3585 {
3586 	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);
3587 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3588 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMHEADERFc.iItem);
3589 	lpStruct->iButton = (*env)->GetIntField(env, lpObject, NMHEADERFc.iButton);
3590 	lpStruct->pitem = (HDITEM FAR *)(*env)->GetLongField(env, lpObject, NMHEADERFc.pitem);
3591 	return lpStruct;
3592 }
3593 
setNMHEADERFields(JNIEnv * env,jobject lpObject,NMHEADER * lpStruct)3594 void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)
3595 {
3596 	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);
3597 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3598 	(*env)->SetIntField(env, lpObject, NMHEADERFc.iItem, (jint)lpStruct->iItem);
3599 	(*env)->SetIntField(env, lpObject, NMHEADERFc.iButton, (jint)lpStruct->iButton);
3600 	(*env)->SetLongField(env, lpObject, NMHEADERFc.pitem, (jlong)lpStruct->pitem);
3601 }
3602 #endif
3603 
3604 #ifndef NO_NMLINK
3605 typedef struct NMLINK_FID_CACHE {
3606 	int cached;
3607 	jclass clazz;
3608 	jfieldID mask, iLink, state, stateMask, szID, szUrl;
3609 } NMLINK_FID_CACHE;
3610 
3611 NMLINK_FID_CACHE NMLINKFc;
3612 
cacheNMLINKFields(JNIEnv * env,jobject lpObject)3613 void cacheNMLINKFields(JNIEnv *env, jobject lpObject)
3614 {
3615 	if (NMLINKFc.cached) return;
3616 	cacheNMHDRFields(env, lpObject);
3617 	NMLINKFc.clazz = (*env)->GetObjectClass(env, lpObject);
3618 	NMLINKFc.mask = (*env)->GetFieldID(env, NMLINKFc.clazz, "mask", "I");
3619 	NMLINKFc.iLink = (*env)->GetFieldID(env, NMLINKFc.clazz, "iLink", "I");
3620 	NMLINKFc.state = (*env)->GetFieldID(env, NMLINKFc.clazz, "state", "I");
3621 	NMLINKFc.stateMask = (*env)->GetFieldID(env, NMLINKFc.clazz, "stateMask", "I");
3622 	NMLINKFc.szID = (*env)->GetFieldID(env, NMLINKFc.clazz, "szID", "[C");
3623 	NMLINKFc.szUrl = (*env)->GetFieldID(env, NMLINKFc.clazz, "szUrl", "[C");
3624 	NMLINKFc.cached = 1;
3625 }
3626 
getNMLINKFields(JNIEnv * env,jobject lpObject,NMLINK * lpStruct)3627 NMLINK *getNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct)
3628 {
3629 	if (!NMLINKFc.cached) cacheNMLINKFields(env, lpObject);
3630 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3631 	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, NMLINKFc.mask);
3632 	lpStruct->item.iLink = (*env)->GetIntField(env, lpObject, NMLINKFc.iLink);
3633 	lpStruct->item.state = (*env)->GetIntField(env, lpObject, NMLINKFc.state);
3634 	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, NMLINKFc.stateMask);
3635 	{
3636 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szID);
3637 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szID) / sizeof(jchar), (jchar *)lpStruct->item.szID);
3638 	}
3639 	{
3640 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szUrl);
3641 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szUrl) / sizeof(jchar), (jchar *)lpStruct->item.szUrl);
3642 	}
3643 	return lpStruct;
3644 }
3645 
setNMLINKFields(JNIEnv * env,jobject lpObject,NMLINK * lpStruct)3646 void setNMLINKFields(JNIEnv *env, jobject lpObject, NMLINK *lpStruct)
3647 {
3648 	if (!NMLINKFc.cached) cacheNMLINKFields(env, lpObject);
3649 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3650 	(*env)->SetIntField(env, lpObject, NMLINKFc.mask, (jint)lpStruct->item.mask);
3651 	(*env)->SetIntField(env, lpObject, NMLINKFc.iLink, (jint)lpStruct->item.iLink);
3652 	(*env)->SetIntField(env, lpObject, NMLINKFc.state, (jint)lpStruct->item.state);
3653 	(*env)->SetIntField(env, lpObject, NMLINKFc.stateMask, (jint)lpStruct->item.stateMask);
3654 	{
3655 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szID);
3656 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szID) / sizeof(jchar), (jchar *)lpStruct->item.szID);
3657 	}
3658 	{
3659 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMLINKFc.szUrl);
3660 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->item.szUrl) / sizeof(jchar), (jchar *)lpStruct->item.szUrl);
3661 	}
3662 }
3663 #endif
3664 
3665 #ifndef NO_NMLISTVIEW
3666 typedef struct NMLISTVIEW_FID_CACHE {
3667 	int cached;
3668 	jclass clazz;
3669 	jfieldID iItem, iSubItem, uNewState, uOldState, uChanged, x, y, lParam;
3670 } NMLISTVIEW_FID_CACHE;
3671 
3672 NMLISTVIEW_FID_CACHE NMLISTVIEWFc;
3673 
cacheNMLISTVIEWFields(JNIEnv * env,jobject lpObject)3674 void cacheNMLISTVIEWFields(JNIEnv *env, jobject lpObject)
3675 {
3676 	if (NMLISTVIEWFc.cached) return;
3677 	cacheNMHDRFields(env, lpObject);
3678 	NMLISTVIEWFc.clazz = (*env)->GetObjectClass(env, lpObject);
3679 	NMLISTVIEWFc.iItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iItem", "I");
3680 	NMLISTVIEWFc.iSubItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iSubItem", "I");
3681 	NMLISTVIEWFc.uNewState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uNewState", "I");
3682 	NMLISTVIEWFc.uOldState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uOldState", "I");
3683 	NMLISTVIEWFc.uChanged = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uChanged", "I");
3684 	NMLISTVIEWFc.x = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "x", "I");
3685 	NMLISTVIEWFc.y = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "y", "I");
3686 	NMLISTVIEWFc.lParam = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "lParam", "J");
3687 	NMLISTVIEWFc.cached = 1;
3688 }
3689 
getNMLISTVIEWFields(JNIEnv * env,jobject lpObject,NMLISTVIEW * lpStruct)3690 NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)
3691 {
3692 	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);
3693 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3694 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iItem);
3695 	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iSubItem);
3696 	lpStruct->uNewState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uNewState);
3697 	lpStruct->uOldState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uOldState);
3698 	lpStruct->uChanged = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uChanged);
3699 	lpStruct->ptAction.x = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.x);
3700 	lpStruct->ptAction.y = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.y);
3701 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, NMLISTVIEWFc.lParam);
3702 	return lpStruct;
3703 }
3704 
setNMLISTVIEWFields(JNIEnv * env,jobject lpObject,NMLISTVIEW * lpStruct)3705 void setNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)
3706 {
3707 	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);
3708 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3709 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iItem, (jint)lpStruct->iItem);
3710 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iSubItem, (jint)lpStruct->iSubItem);
3711 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uNewState, (jint)lpStruct->uNewState);
3712 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uOldState, (jint)lpStruct->uOldState);
3713 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uChanged, (jint)lpStruct->uChanged);
3714 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.x, (jint)lpStruct->ptAction.x);
3715 	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.y, (jint)lpStruct->ptAction.y);
3716 	(*env)->SetLongField(env, lpObject, NMLISTVIEWFc.lParam, (jlong)lpStruct->lParam);
3717 }
3718 #endif
3719 
3720 #ifndef NO_NMLVCUSTOMDRAW
3721 typedef struct NMLVCUSTOMDRAW_FID_CACHE {
3722 	int cached;
3723 	jclass clazz;
3724 	jfieldID clrText, clrTextBk, iSubItem, dwItemType, clrFace, iIconEffect, iIconPhase, iPartId, iStateId, rcText_left, rcText_top, rcText_right, rcText_bottom, uAlign;
3725 } NMLVCUSTOMDRAW_FID_CACHE;
3726 
3727 NMLVCUSTOMDRAW_FID_CACHE NMLVCUSTOMDRAWFc;
3728 
cacheNMLVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject)3729 void cacheNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
3730 {
3731 	if (NMLVCUSTOMDRAWFc.cached) return;
3732 	cacheNMCUSTOMDRAWFields(env, lpObject);
3733 	NMLVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
3734 	NMLVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrText", "I");
3735 	NMLVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrTextBk", "I");
3736 	NMLVCUSTOMDRAWFc.iSubItem = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iSubItem", "I");
3737 	NMLVCUSTOMDRAWFc.dwItemType = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "dwItemType", "I");
3738 	NMLVCUSTOMDRAWFc.clrFace = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrFace", "I");
3739 	NMLVCUSTOMDRAWFc.iIconEffect = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iIconEffect", "I");
3740 	NMLVCUSTOMDRAWFc.iIconPhase = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iIconPhase", "I");
3741 	NMLVCUSTOMDRAWFc.iPartId = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iPartId", "I");
3742 	NMLVCUSTOMDRAWFc.iStateId = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iStateId", "I");
3743 	NMLVCUSTOMDRAWFc.rcText_left = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "rcText_left", "I");
3744 	NMLVCUSTOMDRAWFc.rcText_top = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "rcText_top", "I");
3745 	NMLVCUSTOMDRAWFc.rcText_right = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "rcText_right", "I");
3746 	NMLVCUSTOMDRAWFc.rcText_bottom = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "rcText_bottom", "I");
3747 	NMLVCUSTOMDRAWFc.uAlign = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "uAlign", "I");
3748 	NMLVCUSTOMDRAWFc.cached = 1;
3749 }
3750 
getNMLVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMLVCUSTOMDRAW * lpStruct)3751 NMLVCUSTOMDRAW *getNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)
3752 {
3753 	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);
3754 	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
3755 	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText);
3756 	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk);
3757 	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem);
3758 	lpStruct->dwItemType = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.dwItemType);
3759 	lpStruct->clrFace = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrFace);
3760 	lpStruct->iIconEffect = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iIconEffect);
3761 	lpStruct->iIconPhase = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iIconPhase);
3762 	lpStruct->iPartId = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iPartId);
3763 	lpStruct->iStateId = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iStateId);
3764 	lpStruct->rcText.left = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_left);
3765 	lpStruct->rcText.top = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_top);
3766 	lpStruct->rcText.right = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_right);
3767 	lpStruct->rcText.bottom = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_bottom);
3768 	lpStruct->uAlign = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.uAlign);
3769 	return lpStruct;
3770 }
3771 
setNMLVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMLVCUSTOMDRAW * lpStruct)3772 void setNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)
3773 {
3774 	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);
3775 	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
3776 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);
3777 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);
3778 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem, (jint)lpStruct->iSubItem);
3779 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.dwItemType, (jint)lpStruct->dwItemType);
3780 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrFace, (jint)lpStruct->clrFace);
3781 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iIconEffect, (jint)lpStruct->iIconEffect);
3782 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iIconPhase, (jint)lpStruct->iIconPhase);
3783 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iPartId, (jint)lpStruct->iPartId);
3784 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iStateId, (jint)lpStruct->iStateId);
3785 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_left, (jint)lpStruct->rcText.left);
3786 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_top, (jint)lpStruct->rcText.top);
3787 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_right, (jint)lpStruct->rcText.right);
3788 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.rcText_bottom, (jint)lpStruct->rcText.bottom);
3789 	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.uAlign, (jint)lpStruct->uAlign);
3790 }
3791 #endif
3792 
3793 #ifndef NO_NMLVDISPINFO
3794 typedef struct NMLVDISPINFO_FID_CACHE {
3795 	int cached;
3796 	jclass clazz;
3797 	jfieldID mask, iItem, iSubItem, state, stateMask, pszText, cchTextMax, iImage, lParam, iIndent, iGroupId, cColumns, puColumns;
3798 } NMLVDISPINFO_FID_CACHE;
3799 
3800 NMLVDISPINFO_FID_CACHE NMLVDISPINFOFc;
3801 
cacheNMLVDISPINFOFields(JNIEnv * env,jobject lpObject)3802 void cacheNMLVDISPINFOFields(JNIEnv *env, jobject lpObject)
3803 {
3804 	if (NMLVDISPINFOFc.cached) return;
3805 	cacheNMHDRFields(env, lpObject);
3806 	NMLVDISPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
3807 	NMLVDISPINFOFc.mask = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "mask", "I");
3808 	NMLVDISPINFOFc.iItem = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "iItem", "I");
3809 	NMLVDISPINFOFc.iSubItem = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "iSubItem", "I");
3810 	NMLVDISPINFOFc.state = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "state", "I");
3811 	NMLVDISPINFOFc.stateMask = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "stateMask", "I");
3812 	NMLVDISPINFOFc.pszText = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "pszText", "J");
3813 	NMLVDISPINFOFc.cchTextMax = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "cchTextMax", "I");
3814 	NMLVDISPINFOFc.iImage = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "iImage", "I");
3815 	NMLVDISPINFOFc.lParam = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "lParam", "J");
3816 	NMLVDISPINFOFc.iIndent = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "iIndent", "I");
3817 	NMLVDISPINFOFc.iGroupId = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "iGroupId", "I");
3818 	NMLVDISPINFOFc.cColumns = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "cColumns", "I");
3819 	NMLVDISPINFOFc.puColumns = (*env)->GetFieldID(env, NMLVDISPINFOFc.clazz, "puColumns", "J");
3820 	NMLVDISPINFOFc.cached = 1;
3821 }
3822 
getNMLVDISPINFOFields(JNIEnv * env,jobject lpObject,NMLVDISPINFO * lpStruct)3823 NMLVDISPINFO *getNMLVDISPINFOFields(JNIEnv *env, jobject lpObject, NMLVDISPINFO *lpStruct)
3824 {
3825 	if (!NMLVDISPINFOFc.cached) cacheNMLVDISPINFOFields(env, lpObject);
3826 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3827 	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.mask);
3828 	lpStruct->item.iItem = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.iItem);
3829 	lpStruct->item.iSubItem = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.iSubItem);
3830 	lpStruct->item.state = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.state);
3831 	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.stateMask);
3832 	lpStruct->item.pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, NMLVDISPINFOFc.pszText);
3833 	lpStruct->item.cchTextMax = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.cchTextMax);
3834 	lpStruct->item.iImage = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.iImage);
3835 	lpStruct->item.lParam = (*env)->GetLongField(env, lpObject, NMLVDISPINFOFc.lParam);
3836 	lpStruct->item.iIndent = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.iIndent);
3837 	lpStruct->item.iGroupId = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.iGroupId);
3838 	lpStruct->item.cColumns = (*env)->GetIntField(env, lpObject, NMLVDISPINFOFc.cColumns);
3839 	lpStruct->item.puColumns = (PUINT)(*env)->GetLongField(env, lpObject, NMLVDISPINFOFc.puColumns);
3840 	return lpStruct;
3841 }
3842 
setNMLVDISPINFOFields(JNIEnv * env,jobject lpObject,NMLVDISPINFO * lpStruct)3843 void setNMLVDISPINFOFields(JNIEnv *env, jobject lpObject, NMLVDISPINFO *lpStruct)
3844 {
3845 	if (!NMLVDISPINFOFc.cached) cacheNMLVDISPINFOFields(env, lpObject);
3846 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3847 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.mask, (jint)lpStruct->item.mask);
3848 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.iItem, (jint)lpStruct->item.iItem);
3849 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.iSubItem, (jint)lpStruct->item.iSubItem);
3850 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.state, (jint)lpStruct->item.state);
3851 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.stateMask, (jint)lpStruct->item.stateMask);
3852 	(*env)->SetLongField(env, lpObject, NMLVDISPINFOFc.pszText, (jlong)lpStruct->item.pszText);
3853 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.cchTextMax, (jint)lpStruct->item.cchTextMax);
3854 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.iImage, (jint)lpStruct->item.iImage);
3855 	(*env)->SetLongField(env, lpObject, NMLVDISPINFOFc.lParam, (jlong)lpStruct->item.lParam);
3856 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.iIndent, (jint)lpStruct->item.iIndent);
3857 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.iGroupId, (jint)lpStruct->item.iGroupId);
3858 	(*env)->SetIntField(env, lpObject, NMLVDISPINFOFc.cColumns, (jint)lpStruct->item.cColumns);
3859 	(*env)->SetLongField(env, lpObject, NMLVDISPINFOFc.puColumns, (jlong)lpStruct->item.puColumns);
3860 }
3861 #endif
3862 
3863 #ifndef NO_NMLVFINDITEM
3864 typedef struct NMLVFINDITEM_FID_CACHE {
3865 	int cached;
3866 	jclass clazz;
3867 	jfieldID iStart, flags, psz, lParam, x, y, vkDirection;
3868 } NMLVFINDITEM_FID_CACHE;
3869 
3870 NMLVFINDITEM_FID_CACHE NMLVFINDITEMFc;
3871 
cacheNMLVFINDITEMFields(JNIEnv * env,jobject lpObject)3872 void cacheNMLVFINDITEMFields(JNIEnv *env, jobject lpObject)
3873 {
3874 	if (NMLVFINDITEMFc.cached) return;
3875 	cacheNMHDRFields(env, lpObject);
3876 	NMLVFINDITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
3877 	NMLVFINDITEMFc.iStart = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "iStart", "I");
3878 	NMLVFINDITEMFc.flags = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "flags", "I");
3879 	NMLVFINDITEMFc.psz = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "psz", "J");
3880 	NMLVFINDITEMFc.lParam = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "lParam", "J");
3881 	NMLVFINDITEMFc.x = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "x", "I");
3882 	NMLVFINDITEMFc.y = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "y", "I");
3883 	NMLVFINDITEMFc.vkDirection = (*env)->GetFieldID(env, NMLVFINDITEMFc.clazz, "vkDirection", "I");
3884 	NMLVFINDITEMFc.cached = 1;
3885 }
3886 
getNMLVFINDITEMFields(JNIEnv * env,jobject lpObject,NMLVFINDITEM * lpStruct)3887 NMLVFINDITEM *getNMLVFINDITEMFields(JNIEnv *env, jobject lpObject, NMLVFINDITEM *lpStruct)
3888 {
3889 	if (!NMLVFINDITEMFc.cached) cacheNMLVFINDITEMFields(env, lpObject);
3890 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3891 	lpStruct->iStart = (*env)->GetIntField(env, lpObject, NMLVFINDITEMFc.iStart);
3892 	lpStruct->lvfi.flags = (*env)->GetIntField(env, lpObject, NMLVFINDITEMFc.flags);
3893 	lpStruct->lvfi.psz = (LPCTSTR)(*env)->GetLongField(env, lpObject, NMLVFINDITEMFc.psz);
3894 	lpStruct->lvfi.lParam = (*env)->GetLongField(env, lpObject, NMLVFINDITEMFc.lParam);
3895 	lpStruct->lvfi.pt.x = (*env)->GetIntField(env, lpObject, NMLVFINDITEMFc.x);
3896 	lpStruct->lvfi.pt.y = (*env)->GetIntField(env, lpObject, NMLVFINDITEMFc.y);
3897 	lpStruct->lvfi.vkDirection = (*env)->GetIntField(env, lpObject, NMLVFINDITEMFc.vkDirection);
3898 	return lpStruct;
3899 }
3900 
setNMLVFINDITEMFields(JNIEnv * env,jobject lpObject,NMLVFINDITEM * lpStruct)3901 void setNMLVFINDITEMFields(JNIEnv *env, jobject lpObject, NMLVFINDITEM *lpStruct)
3902 {
3903 	if (!NMLVFINDITEMFc.cached) cacheNMLVFINDITEMFields(env, lpObject);
3904 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3905 	(*env)->SetIntField(env, lpObject, NMLVFINDITEMFc.iStart, (jint)lpStruct->iStart);
3906 	(*env)->SetIntField(env, lpObject, NMLVFINDITEMFc.flags, (jint)lpStruct->lvfi.flags);
3907 	(*env)->SetLongField(env, lpObject, NMLVFINDITEMFc.psz, (jlong)lpStruct->lvfi.psz);
3908 	(*env)->SetLongField(env, lpObject, NMLVFINDITEMFc.lParam, (jlong)lpStruct->lvfi.lParam);
3909 	(*env)->SetIntField(env, lpObject, NMLVFINDITEMFc.x, (jint)lpStruct->lvfi.pt.x);
3910 	(*env)->SetIntField(env, lpObject, NMLVFINDITEMFc.y, (jint)lpStruct->lvfi.pt.y);
3911 	(*env)->SetIntField(env, lpObject, NMLVFINDITEMFc.vkDirection, (jint)lpStruct->lvfi.vkDirection);
3912 }
3913 #endif
3914 
3915 #ifndef NO_NMLVODSTATECHANGE
3916 typedef struct NMLVODSTATECHANGE_FID_CACHE {
3917 	int cached;
3918 	jclass clazz;
3919 	jfieldID iFrom, iTo, uNewState, uOldState;
3920 } NMLVODSTATECHANGE_FID_CACHE;
3921 
3922 NMLVODSTATECHANGE_FID_CACHE NMLVODSTATECHANGEFc;
3923 
cacheNMLVODSTATECHANGEFields(JNIEnv * env,jobject lpObject)3924 void cacheNMLVODSTATECHANGEFields(JNIEnv *env, jobject lpObject)
3925 {
3926 	if (NMLVODSTATECHANGEFc.cached) return;
3927 	cacheNMHDRFields(env, lpObject);
3928 	NMLVODSTATECHANGEFc.clazz = (*env)->GetObjectClass(env, lpObject);
3929 	NMLVODSTATECHANGEFc.iFrom = (*env)->GetFieldID(env, NMLVODSTATECHANGEFc.clazz, "iFrom", "I");
3930 	NMLVODSTATECHANGEFc.iTo = (*env)->GetFieldID(env, NMLVODSTATECHANGEFc.clazz, "iTo", "I");
3931 	NMLVODSTATECHANGEFc.uNewState = (*env)->GetFieldID(env, NMLVODSTATECHANGEFc.clazz, "uNewState", "I");
3932 	NMLVODSTATECHANGEFc.uOldState = (*env)->GetFieldID(env, NMLVODSTATECHANGEFc.clazz, "uOldState", "I");
3933 	NMLVODSTATECHANGEFc.cached = 1;
3934 }
3935 
getNMLVODSTATECHANGEFields(JNIEnv * env,jobject lpObject,NMLVODSTATECHANGE * lpStruct)3936 NMLVODSTATECHANGE *getNMLVODSTATECHANGEFields(JNIEnv *env, jobject lpObject, NMLVODSTATECHANGE *lpStruct)
3937 {
3938 	if (!NMLVODSTATECHANGEFc.cached) cacheNMLVODSTATECHANGEFields(env, lpObject);
3939 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3940 	lpStruct->iFrom = (*env)->GetIntField(env, lpObject, NMLVODSTATECHANGEFc.iFrom);
3941 	lpStruct->iTo = (*env)->GetIntField(env, lpObject, NMLVODSTATECHANGEFc.iTo);
3942 	lpStruct->uNewState = (*env)->GetIntField(env, lpObject, NMLVODSTATECHANGEFc.uNewState);
3943 	lpStruct->uOldState = (*env)->GetIntField(env, lpObject, NMLVODSTATECHANGEFc.uOldState);
3944 	return lpStruct;
3945 }
3946 
setNMLVODSTATECHANGEFields(JNIEnv * env,jobject lpObject,NMLVODSTATECHANGE * lpStruct)3947 void setNMLVODSTATECHANGEFields(JNIEnv *env, jobject lpObject, NMLVODSTATECHANGE *lpStruct)
3948 {
3949 	if (!NMLVODSTATECHANGEFc.cached) cacheNMLVODSTATECHANGEFields(env, lpObject);
3950 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3951 	(*env)->SetIntField(env, lpObject, NMLVODSTATECHANGEFc.iFrom, (jint)lpStruct->iFrom);
3952 	(*env)->SetIntField(env, lpObject, NMLVODSTATECHANGEFc.iTo, (jint)lpStruct->iTo);
3953 	(*env)->SetIntField(env, lpObject, NMLVODSTATECHANGEFc.uNewState, (jint)lpStruct->uNewState);
3954 	(*env)->SetIntField(env, lpObject, NMLVODSTATECHANGEFc.uOldState, (jint)lpStruct->uOldState);
3955 }
3956 #endif
3957 
3958 #ifndef NO_NMREBARCHEVRON
3959 typedef struct NMREBARCHEVRON_FID_CACHE {
3960 	int cached;
3961 	jclass clazz;
3962 	jfieldID uBand, wID, lParam, left, top, right, bottom, lParamNM;
3963 } NMREBARCHEVRON_FID_CACHE;
3964 
3965 NMREBARCHEVRON_FID_CACHE NMREBARCHEVRONFc;
3966 
cacheNMREBARCHEVRONFields(JNIEnv * env,jobject lpObject)3967 void cacheNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject)
3968 {
3969 	if (NMREBARCHEVRONFc.cached) return;
3970 	cacheNMHDRFields(env, lpObject);
3971 	NMREBARCHEVRONFc.clazz = (*env)->GetObjectClass(env, lpObject);
3972 	NMREBARCHEVRONFc.uBand = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "uBand", "I");
3973 	NMREBARCHEVRONFc.wID = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "wID", "I");
3974 	NMREBARCHEVRONFc.lParam = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParam", "J");
3975 	NMREBARCHEVRONFc.left = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "left", "I");
3976 	NMREBARCHEVRONFc.top = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "top", "I");
3977 	NMREBARCHEVRONFc.right = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "right", "I");
3978 	NMREBARCHEVRONFc.bottom = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "bottom", "I");
3979 	NMREBARCHEVRONFc.lParamNM = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParamNM", "J");
3980 	NMREBARCHEVRONFc.cached = 1;
3981 }
3982 
getNMREBARCHEVRONFields(JNIEnv * env,jobject lpObject,NMREBARCHEVRON * lpStruct)3983 NMREBARCHEVRON *getNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)
3984 {
3985 	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);
3986 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
3987 	lpStruct->uBand = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.uBand);
3988 	lpStruct->wID = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.wID);
3989 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, NMREBARCHEVRONFc.lParam);
3990 	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.left);
3991 	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.top);
3992 	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.right);
3993 	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.bottom);
3994 	lpStruct->lParamNM = (*env)->GetLongField(env, lpObject, NMREBARCHEVRONFc.lParamNM);
3995 	return lpStruct;
3996 }
3997 
setNMREBARCHEVRONFields(JNIEnv * env,jobject lpObject,NMREBARCHEVRON * lpStruct)3998 void setNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)
3999 {
4000 	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);
4001 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4002 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.uBand, (jint)lpStruct->uBand);
4003 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.wID, (jint)lpStruct->wID);
4004 	(*env)->SetLongField(env, lpObject, NMREBARCHEVRONFc.lParam, (jlong)lpStruct->lParam);
4005 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.left, (jint)lpStruct->rc.left);
4006 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.top, (jint)lpStruct->rc.top);
4007 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.right, (jint)lpStruct->rc.right);
4008 	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.bottom, (jint)lpStruct->rc.bottom);
4009 	(*env)->SetLongField(env, lpObject, NMREBARCHEVRONFc.lParamNM, (jlong)lpStruct->lParamNM);
4010 }
4011 #endif
4012 
4013 #ifndef NO_NMREBARCHILDSIZE
4014 typedef struct NMREBARCHILDSIZE_FID_CACHE {
4015 	int cached;
4016 	jclass clazz;
4017 	jfieldID uBand, wID, rcChild_left, rcChild_top, rcChild_right, rcChild_bottom, rcBand_left, rcBand_top, rcBand_right, rcBand_bottom;
4018 } NMREBARCHILDSIZE_FID_CACHE;
4019 
4020 NMREBARCHILDSIZE_FID_CACHE NMREBARCHILDSIZEFc;
4021 
cacheNMREBARCHILDSIZEFields(JNIEnv * env,jobject lpObject)4022 void cacheNMREBARCHILDSIZEFields(JNIEnv *env, jobject lpObject)
4023 {
4024 	if (NMREBARCHILDSIZEFc.cached) return;
4025 	cacheNMHDRFields(env, lpObject);
4026 	NMREBARCHILDSIZEFc.clazz = (*env)->GetObjectClass(env, lpObject);
4027 	NMREBARCHILDSIZEFc.uBand = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "uBand", "I");
4028 	NMREBARCHILDSIZEFc.wID = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "wID", "I");
4029 	NMREBARCHILDSIZEFc.rcChild_left = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcChild_left", "I");
4030 	NMREBARCHILDSIZEFc.rcChild_top = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcChild_top", "I");
4031 	NMREBARCHILDSIZEFc.rcChild_right = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcChild_right", "I");
4032 	NMREBARCHILDSIZEFc.rcChild_bottom = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcChild_bottom", "I");
4033 	NMREBARCHILDSIZEFc.rcBand_left = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcBand_left", "I");
4034 	NMREBARCHILDSIZEFc.rcBand_top = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcBand_top", "I");
4035 	NMREBARCHILDSIZEFc.rcBand_right = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcBand_right", "I");
4036 	NMREBARCHILDSIZEFc.rcBand_bottom = (*env)->GetFieldID(env, NMREBARCHILDSIZEFc.clazz, "rcBand_bottom", "I");
4037 	NMREBARCHILDSIZEFc.cached = 1;
4038 }
4039 
getNMREBARCHILDSIZEFields(JNIEnv * env,jobject lpObject,NMREBARCHILDSIZE * lpStruct)4040 NMREBARCHILDSIZE *getNMREBARCHILDSIZEFields(JNIEnv *env, jobject lpObject, NMREBARCHILDSIZE *lpStruct)
4041 {
4042 	if (!NMREBARCHILDSIZEFc.cached) cacheNMREBARCHILDSIZEFields(env, lpObject);
4043 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4044 	lpStruct->uBand = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.uBand);
4045 	lpStruct->wID = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.wID);
4046 	lpStruct->rcChild.left = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_left);
4047 	lpStruct->rcChild.top = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_top);
4048 	lpStruct->rcChild.right = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_right);
4049 	lpStruct->rcChild.bottom = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_bottom);
4050 	lpStruct->rcBand.left = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_left);
4051 	lpStruct->rcBand.top = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_top);
4052 	lpStruct->rcBand.right = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_right);
4053 	lpStruct->rcBand.bottom = (*env)->GetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_bottom);
4054 	return lpStruct;
4055 }
4056 
setNMREBARCHILDSIZEFields(JNIEnv * env,jobject lpObject,NMREBARCHILDSIZE * lpStruct)4057 void setNMREBARCHILDSIZEFields(JNIEnv *env, jobject lpObject, NMREBARCHILDSIZE *lpStruct)
4058 {
4059 	if (!NMREBARCHILDSIZEFc.cached) cacheNMREBARCHILDSIZEFields(env, lpObject);
4060 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4061 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.uBand, (jint)lpStruct->uBand);
4062 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.wID, (jint)lpStruct->wID);
4063 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_left, (jint)lpStruct->rcChild.left);
4064 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_top, (jint)lpStruct->rcChild.top);
4065 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_right, (jint)lpStruct->rcChild.right);
4066 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcChild_bottom, (jint)lpStruct->rcChild.bottom);
4067 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_left, (jint)lpStruct->rcBand.left);
4068 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_top, (jint)lpStruct->rcBand.top);
4069 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_right, (jint)lpStruct->rcBand.right);
4070 	(*env)->SetIntField(env, lpObject, NMREBARCHILDSIZEFc.rcBand_bottom, (jint)lpStruct->rcBand.bottom);
4071 }
4072 #endif
4073 
4074 #ifndef NO_NMTBCUSTOMDRAW
4075 typedef struct NMTBCUSTOMDRAW_FID_CACHE {
4076 	int cached;
4077 	jclass clazz;
4078 	jfieldID nmcd, hbrMonoDither, hbrLines, hpenLines, clrText, clrMark, clrTextHighlight, clrBtnFace, clrBtnHighlight, clrHighlightHotTrack, rcText_left, rcText_top, rcText_right, rcText_bottom, nStringBkMode, nHLStringBkMode, iListGap;
4079 } NMTBCUSTOMDRAW_FID_CACHE;
4080 
4081 NMTBCUSTOMDRAW_FID_CACHE NMTBCUSTOMDRAWFc;
4082 
cacheNMTBCUSTOMDRAWFields(JNIEnv * env,jobject lpObject)4083 void cacheNMTBCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
4084 {
4085 	if (NMTBCUSTOMDRAWFc.cached) return;
4086 	cacheNMCUSTOMDRAWFields(env, lpObject);
4087 	NMTBCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
4088 	NMTBCUSTOMDRAWFc.nmcd = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "nmcd", "Lorg/eclipse/swt/internal/win32/NMCUSTOMDRAW;");
4089 	NMTBCUSTOMDRAWFc.hbrMonoDither = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "hbrMonoDither", "J");
4090 	NMTBCUSTOMDRAWFc.hbrLines = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "hbrLines", "J");
4091 	NMTBCUSTOMDRAWFc.hpenLines = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "hpenLines", "J");
4092 	NMTBCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrText", "I");
4093 	NMTBCUSTOMDRAWFc.clrMark = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrMark", "I");
4094 	NMTBCUSTOMDRAWFc.clrTextHighlight = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrTextHighlight", "I");
4095 	NMTBCUSTOMDRAWFc.clrBtnFace = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrBtnFace", "I");
4096 	NMTBCUSTOMDRAWFc.clrBtnHighlight = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrBtnHighlight", "I");
4097 	NMTBCUSTOMDRAWFc.clrHighlightHotTrack = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "clrHighlightHotTrack", "I");
4098 	NMTBCUSTOMDRAWFc.rcText_left = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "rcText_left", "I");
4099 	NMTBCUSTOMDRAWFc.rcText_top = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "rcText_top", "I");
4100 	NMTBCUSTOMDRAWFc.rcText_right = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "rcText_right", "I");
4101 	NMTBCUSTOMDRAWFc.rcText_bottom = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "rcText_bottom", "I");
4102 	NMTBCUSTOMDRAWFc.nStringBkMode = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "nStringBkMode", "I");
4103 	NMTBCUSTOMDRAWFc.nHLStringBkMode = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "nHLStringBkMode", "I");
4104 	NMTBCUSTOMDRAWFc.iListGap = (*env)->GetFieldID(env, NMTBCUSTOMDRAWFc.clazz, "iListGap", "I");
4105 	NMTBCUSTOMDRAWFc.cached = 1;
4106 }
4107 
getNMTBCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTBCUSTOMDRAW * lpStruct)4108 NMTBCUSTOMDRAW *getNMTBCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTBCUSTOMDRAW *lpStruct)
4109 {
4110 	if (!NMTBCUSTOMDRAWFc.cached) cacheNMTBCUSTOMDRAWFields(env, lpObject);
4111 	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4112 	{
4113 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTBCUSTOMDRAWFc.nmcd);
4114 	if (lpObject1 != NULL) getNMCUSTOMDRAWFields(env, lpObject1, &lpStruct->nmcd);
4115 	}
4116 	lpStruct->hbrMonoDither = (HBRUSH)(*env)->GetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hbrMonoDither);
4117 	lpStruct->hbrLines = (HBRUSH)(*env)->GetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hbrLines);
4118 	lpStruct->hpenLines = (HPEN)(*env)->GetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hpenLines);
4119 	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrText);
4120 	lpStruct->clrMark = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrMark);
4121 	lpStruct->clrTextHighlight = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrTextHighlight);
4122 	lpStruct->clrBtnFace = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrBtnFace);
4123 	lpStruct->clrBtnHighlight = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrBtnHighlight);
4124 	lpStruct->clrHighlightHotTrack = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrHighlightHotTrack);
4125 	lpStruct->rcText.left = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_left);
4126 	lpStruct->rcText.top = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_top);
4127 	lpStruct->rcText.right = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_right);
4128 	lpStruct->rcText.bottom = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_bottom);
4129 	lpStruct->nStringBkMode = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.nStringBkMode);
4130 	lpStruct->nHLStringBkMode = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.nHLStringBkMode);
4131 	lpStruct->iListGap = (*env)->GetIntField(env, lpObject, NMTBCUSTOMDRAWFc.iListGap);
4132 	return lpStruct;
4133 }
4134 
setNMTBCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTBCUSTOMDRAW * lpStruct)4135 void setNMTBCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTBCUSTOMDRAW *lpStruct)
4136 {
4137 	if (!NMTBCUSTOMDRAWFc.cached) cacheNMTBCUSTOMDRAWFields(env, lpObject);
4138 	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4139 	{
4140 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTBCUSTOMDRAWFc.nmcd);
4141 	if (lpObject1 != NULL) setNMCUSTOMDRAWFields(env, lpObject1, &lpStruct->nmcd);
4142 	}
4143 	(*env)->SetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hbrMonoDither, (jlong)lpStruct->hbrMonoDither);
4144 	(*env)->SetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hbrLines, (jlong)lpStruct->hbrLines);
4145 	(*env)->SetLongField(env, lpObject, NMTBCUSTOMDRAWFc.hpenLines, (jlong)lpStruct->hpenLines);
4146 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);
4147 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrMark, (jint)lpStruct->clrMark);
4148 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrTextHighlight, (jint)lpStruct->clrTextHighlight);
4149 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrBtnFace, (jint)lpStruct->clrBtnFace);
4150 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrBtnHighlight, (jint)lpStruct->clrBtnHighlight);
4151 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.clrHighlightHotTrack, (jint)lpStruct->clrHighlightHotTrack);
4152 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_left, (jint)lpStruct->rcText.left);
4153 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_top, (jint)lpStruct->rcText.top);
4154 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_right, (jint)lpStruct->rcText.right);
4155 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.rcText_bottom, (jint)lpStruct->rcText.bottom);
4156 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.nStringBkMode, (jint)lpStruct->nStringBkMode);
4157 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.nHLStringBkMode, (jint)lpStruct->nHLStringBkMode);
4158 	(*env)->SetIntField(env, lpObject, NMTBCUSTOMDRAWFc.iListGap, (jint)lpStruct->iListGap);
4159 }
4160 #endif
4161 
4162 #ifndef NO_NMTBHOTITEM
4163 typedef struct NMTBHOTITEM_FID_CACHE {
4164 	int cached;
4165 	jclass clazz;
4166 	jfieldID idOld, idNew, dwFlags;
4167 } NMTBHOTITEM_FID_CACHE;
4168 
4169 NMTBHOTITEM_FID_CACHE NMTBHOTITEMFc;
4170 
cacheNMTBHOTITEMFields(JNIEnv * env,jobject lpObject)4171 void cacheNMTBHOTITEMFields(JNIEnv *env, jobject lpObject)
4172 {
4173 	if (NMTBHOTITEMFc.cached) return;
4174 	cacheNMHDRFields(env, lpObject);
4175 	NMTBHOTITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
4176 	NMTBHOTITEMFc.idOld = (*env)->GetFieldID(env, NMTBHOTITEMFc.clazz, "idOld", "I");
4177 	NMTBHOTITEMFc.idNew = (*env)->GetFieldID(env, NMTBHOTITEMFc.clazz, "idNew", "I");
4178 	NMTBHOTITEMFc.dwFlags = (*env)->GetFieldID(env, NMTBHOTITEMFc.clazz, "dwFlags", "I");
4179 	NMTBHOTITEMFc.cached = 1;
4180 }
4181 
getNMTBHOTITEMFields(JNIEnv * env,jobject lpObject,NMTBHOTITEM * lpStruct)4182 NMTBHOTITEM *getNMTBHOTITEMFields(JNIEnv *env, jobject lpObject, NMTBHOTITEM *lpStruct)
4183 {
4184 	if (!NMTBHOTITEMFc.cached) cacheNMTBHOTITEMFields(env, lpObject);
4185 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4186 	lpStruct->idOld = (*env)->GetIntField(env, lpObject, NMTBHOTITEMFc.idOld);
4187 	lpStruct->idNew = (*env)->GetIntField(env, lpObject, NMTBHOTITEMFc.idNew);
4188 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, NMTBHOTITEMFc.dwFlags);
4189 	return lpStruct;
4190 }
4191 
setNMTBHOTITEMFields(JNIEnv * env,jobject lpObject,NMTBHOTITEM * lpStruct)4192 void setNMTBHOTITEMFields(JNIEnv *env, jobject lpObject, NMTBHOTITEM *lpStruct)
4193 {
4194 	if (!NMTBHOTITEMFc.cached) cacheNMTBHOTITEMFields(env, lpObject);
4195 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4196 	(*env)->SetIntField(env, lpObject, NMTBHOTITEMFc.idOld, (jint)lpStruct->idOld);
4197 	(*env)->SetIntField(env, lpObject, NMTBHOTITEMFc.idNew, (jint)lpStruct->idNew);
4198 	(*env)->SetIntField(env, lpObject, NMTBHOTITEMFc.dwFlags, (jint)lpStruct->dwFlags);
4199 }
4200 #endif
4201 
4202 #ifndef NO_NMTOOLBAR
4203 typedef struct NMTOOLBAR_FID_CACHE {
4204 	int cached;
4205 	jclass clazz;
4206 	jfieldID iItem, iBitmap, idCommand, fsState, fsStyle, dwData, iString, cchText, pszText, left, top, right, bottom;
4207 } NMTOOLBAR_FID_CACHE;
4208 
4209 NMTOOLBAR_FID_CACHE NMTOOLBARFc;
4210 
cacheNMTOOLBARFields(JNIEnv * env,jobject lpObject)4211 void cacheNMTOOLBARFields(JNIEnv *env, jobject lpObject)
4212 {
4213 	if (NMTOOLBARFc.cached) return;
4214 	cacheNMHDRFields(env, lpObject);
4215 	NMTOOLBARFc.clazz = (*env)->GetObjectClass(env, lpObject);
4216 	NMTOOLBARFc.iItem = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iItem", "I");
4217 	NMTOOLBARFc.iBitmap = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iBitmap", "I");
4218 	NMTOOLBARFc.idCommand = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "idCommand", "I");
4219 	NMTOOLBARFc.fsState = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsState", "B");
4220 	NMTOOLBARFc.fsStyle = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsStyle", "B");
4221 	NMTOOLBARFc.dwData = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "dwData", "J");
4222 	NMTOOLBARFc.iString = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iString", "J");
4223 	NMTOOLBARFc.cchText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "cchText", "I");
4224 	NMTOOLBARFc.pszText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "pszText", "J");
4225 	NMTOOLBARFc.left = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "left", "I");
4226 	NMTOOLBARFc.top = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "top", "I");
4227 	NMTOOLBARFc.right = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "right", "I");
4228 	NMTOOLBARFc.bottom = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "bottom", "I");
4229 	NMTOOLBARFc.cached = 1;
4230 }
4231 
getNMTOOLBARFields(JNIEnv * env,jobject lpObject,NMTOOLBAR * lpStruct)4232 NMTOOLBAR *getNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)
4233 {
4234 	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);
4235 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4236 	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iItem);
4237 	lpStruct->tbButton.iBitmap = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iBitmap);
4238 	lpStruct->tbButton.idCommand = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.idCommand);
4239 	lpStruct->tbButton.fsState = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsState);
4240 	lpStruct->tbButton.fsStyle = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsStyle);
4241 	lpStruct->tbButton.dwData = (*env)->GetLongField(env, lpObject, NMTOOLBARFc.dwData);
4242 	lpStruct->tbButton.iString = (*env)->GetLongField(env, lpObject, NMTOOLBARFc.iString);
4243 	lpStruct->cchText = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.cchText);
4244 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, NMTOOLBARFc.pszText);
4245 	lpStruct->rcButton.left = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.left);
4246 	lpStruct->rcButton.top = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.top);
4247 	lpStruct->rcButton.right = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.right);
4248 	lpStruct->rcButton.bottom = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.bottom);
4249 	return lpStruct;
4250 }
4251 
setNMTOOLBARFields(JNIEnv * env,jobject lpObject,NMTOOLBAR * lpStruct)4252 void setNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)
4253 {
4254 	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);
4255 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4256 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iItem, (jint)lpStruct->iItem);
4257 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iBitmap, (jint)lpStruct->tbButton.iBitmap);
4258 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.idCommand, (jint)lpStruct->tbButton.idCommand);
4259 	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsState, (jbyte)lpStruct->tbButton.fsState);
4260 	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsStyle, (jbyte)lpStruct->tbButton.fsStyle);
4261 	(*env)->SetLongField(env, lpObject, NMTOOLBARFc.dwData, (jlong)lpStruct->tbButton.dwData);
4262 	(*env)->SetLongField(env, lpObject, NMTOOLBARFc.iString, (jlong)lpStruct->tbButton.iString);
4263 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.cchText, (jint)lpStruct->cchText);
4264 	(*env)->SetLongField(env, lpObject, NMTOOLBARFc.pszText, (jlong)lpStruct->pszText);
4265 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.left, (jint)lpStruct->rcButton.left);
4266 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.top, (jint)lpStruct->rcButton.top);
4267 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.right, (jint)lpStruct->rcButton.right);
4268 	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.bottom, (jint)lpStruct->rcButton.bottom);
4269 }
4270 #endif
4271 
4272 #ifndef NO_NMTREEVIEW
4273 typedef struct NMTREEVIEW_FID_CACHE {
4274 	int cached;
4275 	jclass clazz;
4276 	jfieldID hdr, action, itemOld, itemNew, ptDrag;
4277 } NMTREEVIEW_FID_CACHE;
4278 
4279 NMTREEVIEW_FID_CACHE NMTREEVIEWFc;
4280 
cacheNMTREEVIEWFields(JNIEnv * env,jobject lpObject)4281 void cacheNMTREEVIEWFields(JNIEnv *env, jobject lpObject)
4282 {
4283 	if (NMTREEVIEWFc.cached) return;
4284 	NMTREEVIEWFc.clazz = (*env)->GetObjectClass(env, lpObject);
4285 	NMTREEVIEWFc.hdr = (*env)->GetFieldID(env, NMTREEVIEWFc.clazz, "hdr", "Lorg/eclipse/swt/internal/win32/NMHDR;");
4286 	NMTREEVIEWFc.action = (*env)->GetFieldID(env, NMTREEVIEWFc.clazz, "action", "I");
4287 	NMTREEVIEWFc.itemOld = (*env)->GetFieldID(env, NMTREEVIEWFc.clazz, "itemOld", "Lorg/eclipse/swt/internal/win32/TVITEM;");
4288 	NMTREEVIEWFc.itemNew = (*env)->GetFieldID(env, NMTREEVIEWFc.clazz, "itemNew", "Lorg/eclipse/swt/internal/win32/TVITEM;");
4289 	NMTREEVIEWFc.ptDrag = (*env)->GetFieldID(env, NMTREEVIEWFc.clazz, "ptDrag", "Lorg/eclipse/swt/internal/win32/POINT;");
4290 	NMTREEVIEWFc.cached = 1;
4291 }
4292 
getNMTREEVIEWFields(JNIEnv * env,jobject lpObject,NMTREEVIEW * lpStruct)4293 NMTREEVIEW *getNMTREEVIEWFields(JNIEnv *env, jobject lpObject, NMTREEVIEW *lpStruct)
4294 {
4295 	if (!NMTREEVIEWFc.cached) cacheNMTREEVIEWFields(env, lpObject);
4296 	{
4297 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.hdr);
4298 	if (lpObject1 != NULL) getNMHDRFields(env, lpObject1, &lpStruct->hdr);
4299 	}
4300 	lpStruct->action = (*env)->GetIntField(env, lpObject, NMTREEVIEWFc.action);
4301 	{
4302 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.itemOld);
4303 	if (lpObject1 != NULL) getTVITEMFields(env, lpObject1, &lpStruct->itemOld);
4304 	}
4305 	{
4306 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.itemNew);
4307 	if (lpObject1 != NULL) getTVITEMFields(env, lpObject1, &lpStruct->itemNew);
4308 	}
4309 	{
4310 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.ptDrag);
4311 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->ptDrag);
4312 	}
4313 	return lpStruct;
4314 }
4315 
setNMTREEVIEWFields(JNIEnv * env,jobject lpObject,NMTREEVIEW * lpStruct)4316 void setNMTREEVIEWFields(JNIEnv *env, jobject lpObject, NMTREEVIEW *lpStruct)
4317 {
4318 	if (!NMTREEVIEWFc.cached) cacheNMTREEVIEWFields(env, lpObject);
4319 	{
4320 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.hdr);
4321 	if (lpObject1 != NULL) setNMHDRFields(env, lpObject1, &lpStruct->hdr);
4322 	}
4323 	(*env)->SetIntField(env, lpObject, NMTREEVIEWFc.action, (jint)lpStruct->action);
4324 	{
4325 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.itemOld);
4326 	if (lpObject1 != NULL) setTVITEMFields(env, lpObject1, &lpStruct->itemOld);
4327 	}
4328 	{
4329 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.itemNew);
4330 	if (lpObject1 != NULL) setTVITEMFields(env, lpObject1, &lpStruct->itemNew);
4331 	}
4332 	{
4333 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NMTREEVIEWFc.ptDrag);
4334 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->ptDrag);
4335 	}
4336 }
4337 #endif
4338 
4339 #ifndef NO_NMTTCUSTOMDRAW
4340 typedef struct NMTTCUSTOMDRAW_FID_CACHE {
4341 	int cached;
4342 	jclass clazz;
4343 	jfieldID uDrawFlags;
4344 } NMTTCUSTOMDRAW_FID_CACHE;
4345 
4346 NMTTCUSTOMDRAW_FID_CACHE NMTTCUSTOMDRAWFc;
4347 
cacheNMTTCUSTOMDRAWFields(JNIEnv * env,jobject lpObject)4348 void cacheNMTTCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
4349 {
4350 	if (NMTTCUSTOMDRAWFc.cached) return;
4351 	cacheNMCUSTOMDRAWFields(env, lpObject);
4352 	NMTTCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
4353 	NMTTCUSTOMDRAWFc.uDrawFlags = (*env)->GetFieldID(env, NMTTCUSTOMDRAWFc.clazz, "uDrawFlags", "I");
4354 	NMTTCUSTOMDRAWFc.cached = 1;
4355 }
4356 
getNMTTCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTTCUSTOMDRAW * lpStruct)4357 NMTTCUSTOMDRAW *getNMTTCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTTCUSTOMDRAW *lpStruct)
4358 {
4359 	if (!NMTTCUSTOMDRAWFc.cached) cacheNMTTCUSTOMDRAWFields(env, lpObject);
4360 	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4361 	lpStruct->uDrawFlags = (*env)->GetIntField(env, lpObject, NMTTCUSTOMDRAWFc.uDrawFlags);
4362 	return lpStruct;
4363 }
4364 
setNMTTCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTTCUSTOMDRAW * lpStruct)4365 void setNMTTCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTTCUSTOMDRAW *lpStruct)
4366 {
4367 	if (!NMTTCUSTOMDRAWFc.cached) cacheNMTTCUSTOMDRAWFields(env, lpObject);
4368 	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4369 	(*env)->SetIntField(env, lpObject, NMTTCUSTOMDRAWFc.uDrawFlags, (jint)lpStruct->uDrawFlags);
4370 }
4371 #endif
4372 
4373 #ifndef NO_NMTTDISPINFO
4374 typedef struct NMTTDISPINFO_FID_CACHE {
4375 	int cached;
4376 	jclass clazz;
4377 	jfieldID lpszText, szText, hinst, uFlags, lParam;
4378 } NMTTDISPINFO_FID_CACHE;
4379 
4380 NMTTDISPINFO_FID_CACHE NMTTDISPINFOFc;
4381 
cacheNMTTDISPINFOFields(JNIEnv * env,jobject lpObject)4382 void cacheNMTTDISPINFOFields(JNIEnv *env, jobject lpObject)
4383 {
4384 	if (NMTTDISPINFOFc.cached) return;
4385 	cacheNMHDRFields(env, lpObject);
4386 	NMTTDISPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
4387 	NMTTDISPINFOFc.lpszText = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lpszText", "J");
4388 	NMTTDISPINFOFc.szText = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "szText", "[C");
4389 	NMTTDISPINFOFc.hinst = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "hinst", "J");
4390 	NMTTDISPINFOFc.uFlags = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "uFlags", "I");
4391 	NMTTDISPINFOFc.lParam = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lParam", "J");
4392 	NMTTDISPINFOFc.cached = 1;
4393 }
4394 
getNMTTDISPINFOFields(JNIEnv * env,jobject lpObject,NMTTDISPINFO * lpStruct)4395 NMTTDISPINFO *getNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)
4396 {
4397 	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);
4398 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4399 	lpStruct->lpszText = (void *)(*env)->GetLongField(env, lpObject, NMTTDISPINFOFc.lpszText);
4400 	{
4401 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMTTDISPINFOFc.szText);
4402 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / sizeof(jchar), (jchar *)lpStruct->szText);
4403 	}
4404 	lpStruct->hinst = (HINSTANCE)(*env)->GetLongField(env, lpObject, NMTTDISPINFOFc.hinst);
4405 	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);
4406 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, NMTTDISPINFOFc.lParam);
4407 	return lpStruct;
4408 }
4409 
setNMTTDISPINFOFields(JNIEnv * env,jobject lpObject,NMTTDISPINFO * lpStruct)4410 void setNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)
4411 {
4412 	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);
4413 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4414 	(*env)->SetLongField(env, lpObject, NMTTDISPINFOFc.lpszText, (jlong)lpStruct->lpszText);
4415 	{
4416 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NMTTDISPINFOFc.szText);
4417 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / sizeof(jchar), (jchar *)lpStruct->szText);
4418 	}
4419 	(*env)->SetLongField(env, lpObject, NMTTDISPINFOFc.hinst, (jlong)lpStruct->hinst);
4420 	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);
4421 	(*env)->SetLongField(env, lpObject, NMTTDISPINFOFc.lParam, (jlong)lpStruct->lParam);
4422 }
4423 #endif
4424 
4425 #ifndef NO_NMTVCUSTOMDRAW
4426 typedef struct NMTVCUSTOMDRAW_FID_CACHE {
4427 	int cached;
4428 	jclass clazz;
4429 	jfieldID clrText, clrTextBk, iLevel;
4430 } NMTVCUSTOMDRAW_FID_CACHE;
4431 
4432 NMTVCUSTOMDRAW_FID_CACHE NMTVCUSTOMDRAWFc;
4433 
cacheNMTVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject)4434 void cacheNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
4435 {
4436 	if (NMTVCUSTOMDRAWFc.cached) return;
4437 	cacheNMCUSTOMDRAWFields(env, lpObject);
4438 	NMTVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
4439 	NMTVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrText", "I");
4440 	NMTVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrTextBk", "I");
4441 	NMTVCUSTOMDRAWFc.iLevel = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "iLevel", "I");
4442 	NMTVCUSTOMDRAWFc.cached = 1;
4443 }
4444 
getNMTVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTVCUSTOMDRAW * lpStruct)4445 NMTVCUSTOMDRAW *getNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)
4446 {
4447 	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);
4448 	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4449 	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText);
4450 	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk);
4451 	lpStruct->iLevel = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel);
4452 	return lpStruct;
4453 }
4454 
setNMTVCUSTOMDRAWFields(JNIEnv * env,jobject lpObject,NMTVCUSTOMDRAW * lpStruct)4455 void setNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)
4456 {
4457 	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);
4458 	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
4459 	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);
4460 	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);
4461 	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel, (jint)lpStruct->iLevel);
4462 }
4463 #endif
4464 
4465 #ifndef NO_NMTVDISPINFO
4466 typedef struct NMTVDISPINFO_FID_CACHE {
4467 	int cached;
4468 	jclass clazz;
4469 	jfieldID mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;
4470 } NMTVDISPINFO_FID_CACHE;
4471 
4472 NMTVDISPINFO_FID_CACHE NMTVDISPINFOFc;
4473 
cacheNMTVDISPINFOFields(JNIEnv * env,jobject lpObject)4474 void cacheNMTVDISPINFOFields(JNIEnv *env, jobject lpObject)
4475 {
4476 	if (NMTVDISPINFOFc.cached) return;
4477 	cacheNMHDRFields(env, lpObject);
4478 	NMTVDISPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
4479 	NMTVDISPINFOFc.mask = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "mask", "I");
4480 	NMTVDISPINFOFc.hItem = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "hItem", "J");
4481 	NMTVDISPINFOFc.state = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "state", "I");
4482 	NMTVDISPINFOFc.stateMask = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "stateMask", "I");
4483 	NMTVDISPINFOFc.pszText = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "pszText", "J");
4484 	NMTVDISPINFOFc.cchTextMax = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "cchTextMax", "I");
4485 	NMTVDISPINFOFc.iImage = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "iImage", "I");
4486 	NMTVDISPINFOFc.iSelectedImage = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "iSelectedImage", "I");
4487 	NMTVDISPINFOFc.cChildren = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "cChildren", "I");
4488 	NMTVDISPINFOFc.lParam = (*env)->GetFieldID(env, NMTVDISPINFOFc.clazz, "lParam", "J");
4489 	NMTVDISPINFOFc.cached = 1;
4490 }
4491 
getNMTVDISPINFOFields(JNIEnv * env,jobject lpObject,NMTVDISPINFO * lpStruct)4492 NMTVDISPINFO *getNMTVDISPINFOFields(JNIEnv *env, jobject lpObject, NMTVDISPINFO *lpStruct)
4493 {
4494 	if (!NMTVDISPINFOFc.cached) cacheNMTVDISPINFOFields(env, lpObject);
4495 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4496 	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.mask);
4497 	lpStruct->item.hItem = (HTREEITEM)(*env)->GetLongField(env, lpObject, NMTVDISPINFOFc.hItem);
4498 	lpStruct->item.state = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.state);
4499 	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.stateMask);
4500 	lpStruct->item.pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, NMTVDISPINFOFc.pszText);
4501 	lpStruct->item.cchTextMax = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.cchTextMax);
4502 	lpStruct->item.iImage = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.iImage);
4503 	lpStruct->item.iSelectedImage = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.iSelectedImage);
4504 	lpStruct->item.cChildren = (*env)->GetIntField(env, lpObject, NMTVDISPINFOFc.cChildren);
4505 	lpStruct->item.lParam = (*env)->GetLongField(env, lpObject, NMTVDISPINFOFc.lParam);
4506 	return lpStruct;
4507 }
4508 
setNMTVDISPINFOFields(JNIEnv * env,jobject lpObject,NMTVDISPINFO * lpStruct)4509 void setNMTVDISPINFOFields(JNIEnv *env, jobject lpObject, NMTVDISPINFO *lpStruct)
4510 {
4511 	if (!NMTVDISPINFOFc.cached) cacheNMTVDISPINFOFields(env, lpObject);
4512 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4513 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.mask, (jint)lpStruct->item.mask);
4514 	(*env)->SetLongField(env, lpObject, NMTVDISPINFOFc.hItem, (jlong)lpStruct->item.hItem);
4515 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.state, (jint)lpStruct->item.state);
4516 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.stateMask, (jint)lpStruct->item.stateMask);
4517 	(*env)->SetLongField(env, lpObject, NMTVDISPINFOFc.pszText, (jlong)lpStruct->item.pszText);
4518 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.cchTextMax, (jint)lpStruct->item.cchTextMax);
4519 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.iImage, (jint)lpStruct->item.iImage);
4520 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.iSelectedImage, (jint)lpStruct->item.iSelectedImage);
4521 	(*env)->SetIntField(env, lpObject, NMTVDISPINFOFc.cChildren, (jint)lpStruct->item.cChildren);
4522 	(*env)->SetLongField(env, lpObject, NMTVDISPINFOFc.lParam, (jlong)lpStruct->item.lParam);
4523 }
4524 #endif
4525 
4526 #ifndef NO_NMTVITEMCHANGE
4527 typedef struct NMTVITEMCHANGE_FID_CACHE {
4528 	int cached;
4529 	jclass clazz;
4530 	jfieldID uChanged, hItem, uStateNew, uStateOld, lParam;
4531 } NMTVITEMCHANGE_FID_CACHE;
4532 
4533 NMTVITEMCHANGE_FID_CACHE NMTVITEMCHANGEFc;
4534 
cacheNMTVITEMCHANGEFields(JNIEnv * env,jobject lpObject)4535 void cacheNMTVITEMCHANGEFields(JNIEnv *env, jobject lpObject)
4536 {
4537 	if (NMTVITEMCHANGEFc.cached) return;
4538 	cacheNMHDRFields(env, lpObject);
4539 	NMTVITEMCHANGEFc.clazz = (*env)->GetObjectClass(env, lpObject);
4540 	NMTVITEMCHANGEFc.uChanged = (*env)->GetFieldID(env, NMTVITEMCHANGEFc.clazz, "uChanged", "I");
4541 	NMTVITEMCHANGEFc.hItem = (*env)->GetFieldID(env, NMTVITEMCHANGEFc.clazz, "hItem", "J");
4542 	NMTVITEMCHANGEFc.uStateNew = (*env)->GetFieldID(env, NMTVITEMCHANGEFc.clazz, "uStateNew", "I");
4543 	NMTVITEMCHANGEFc.uStateOld = (*env)->GetFieldID(env, NMTVITEMCHANGEFc.clazz, "uStateOld", "I");
4544 	NMTVITEMCHANGEFc.lParam = (*env)->GetFieldID(env, NMTVITEMCHANGEFc.clazz, "lParam", "J");
4545 	NMTVITEMCHANGEFc.cached = 1;
4546 }
4547 
getNMTVITEMCHANGEFields(JNIEnv * env,jobject lpObject,NMTVITEMCHANGE * lpStruct)4548 NMTVITEMCHANGE *getNMTVITEMCHANGEFields(JNIEnv *env, jobject lpObject, NMTVITEMCHANGE *lpStruct)
4549 {
4550 	if (!NMTVITEMCHANGEFc.cached) cacheNMTVITEMCHANGEFields(env, lpObject);
4551 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4552 	lpStruct->uChanged = (*env)->GetIntField(env, lpObject, NMTVITEMCHANGEFc.uChanged);
4553 	lpStruct->hItem = (HTREEITEM)(*env)->GetLongField(env, lpObject, NMTVITEMCHANGEFc.hItem);
4554 	lpStruct->uStateNew = (*env)->GetIntField(env, lpObject, NMTVITEMCHANGEFc.uStateNew);
4555 	lpStruct->uStateOld = (*env)->GetIntField(env, lpObject, NMTVITEMCHANGEFc.uStateOld);
4556 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, NMTVITEMCHANGEFc.lParam);
4557 	return lpStruct;
4558 }
4559 
setNMTVITEMCHANGEFields(JNIEnv * env,jobject lpObject,NMTVITEMCHANGE * lpStruct)4560 void setNMTVITEMCHANGEFields(JNIEnv *env, jobject lpObject, NMTVITEMCHANGE *lpStruct)
4561 {
4562 	if (!NMTVITEMCHANGEFc.cached) cacheNMTVITEMCHANGEFields(env, lpObject);
4563 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4564 	(*env)->SetIntField(env, lpObject, NMTVITEMCHANGEFc.uChanged, (jint)lpStruct->uChanged);
4565 	(*env)->SetLongField(env, lpObject, NMTVITEMCHANGEFc.hItem, (jlong)lpStruct->hItem);
4566 	(*env)->SetIntField(env, lpObject, NMTVITEMCHANGEFc.uStateNew, (jint)lpStruct->uStateNew);
4567 	(*env)->SetIntField(env, lpObject, NMTVITEMCHANGEFc.uStateOld, (jint)lpStruct->uStateOld);
4568 	(*env)->SetLongField(env, lpObject, NMTVITEMCHANGEFc.lParam, (jlong)lpStruct->lParam);
4569 }
4570 #endif
4571 
4572 #ifndef NO_NMUPDOWN
4573 typedef struct NMUPDOWN_FID_CACHE {
4574 	int cached;
4575 	jclass clazz;
4576 	jfieldID iPos, iDelta;
4577 } NMUPDOWN_FID_CACHE;
4578 
4579 NMUPDOWN_FID_CACHE NMUPDOWNFc;
4580 
cacheNMUPDOWNFields(JNIEnv * env,jobject lpObject)4581 void cacheNMUPDOWNFields(JNIEnv *env, jobject lpObject)
4582 {
4583 	if (NMUPDOWNFc.cached) return;
4584 	cacheNMHDRFields(env, lpObject);
4585 	NMUPDOWNFc.clazz = (*env)->GetObjectClass(env, lpObject);
4586 	NMUPDOWNFc.iPos = (*env)->GetFieldID(env, NMUPDOWNFc.clazz, "iPos", "I");
4587 	NMUPDOWNFc.iDelta = (*env)->GetFieldID(env, NMUPDOWNFc.clazz, "iDelta", "I");
4588 	NMUPDOWNFc.cached = 1;
4589 }
4590 
getNMUPDOWNFields(JNIEnv * env,jobject lpObject,NMUPDOWN * lpStruct)4591 NMUPDOWN *getNMUPDOWNFields(JNIEnv *env, jobject lpObject, NMUPDOWN *lpStruct)
4592 {
4593 	if (!NMUPDOWNFc.cached) cacheNMUPDOWNFields(env, lpObject);
4594 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4595 	lpStruct->iPos = (*env)->GetIntField(env, lpObject, NMUPDOWNFc.iPos);
4596 	lpStruct->iDelta = (*env)->GetIntField(env, lpObject, NMUPDOWNFc.iDelta);
4597 	return lpStruct;
4598 }
4599 
setNMUPDOWNFields(JNIEnv * env,jobject lpObject,NMUPDOWN * lpStruct)4600 void setNMUPDOWNFields(JNIEnv *env, jobject lpObject, NMUPDOWN *lpStruct)
4601 {
4602 	if (!NMUPDOWNFc.cached) cacheNMUPDOWNFields(env, lpObject);
4603 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4604 	(*env)->SetIntField(env, lpObject, NMUPDOWNFc.iPos, (jint)lpStruct->iPos);
4605 	(*env)->SetIntField(env, lpObject, NMUPDOWNFc.iDelta, (jint)lpStruct->iDelta);
4606 }
4607 #endif
4608 
4609 #ifndef NO_NONCLIENTMETRICS
4610 typedef struct NONCLIENTMETRICS_FID_CACHE {
4611 	int cached;
4612 	jclass clazz;
4613 	jfieldID cbSize, iBorderWidth, iScrollWidth, iScrollHeight, iCaptionWidth, iCaptionHeight, lfCaptionFont, iSmCaptionWidth, iSmCaptionHeight, lfSmCaptionFont, iMenuWidth, iMenuHeight, lfMenuFont, lfStatusFont, lfMessageFont;
4614 } NONCLIENTMETRICS_FID_CACHE;
4615 
4616 NONCLIENTMETRICS_FID_CACHE NONCLIENTMETRICSFc;
4617 
cacheNONCLIENTMETRICSFields(JNIEnv * env,jobject lpObject)4618 void cacheNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject)
4619 {
4620 	if (NONCLIENTMETRICSFc.cached) return;
4621 	NONCLIENTMETRICSFc.clazz = (*env)->GetObjectClass(env, lpObject);
4622 	NONCLIENTMETRICSFc.cbSize = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "cbSize", "I");
4623 	NONCLIENTMETRICSFc.iBorderWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iBorderWidth", "I");
4624 	NONCLIENTMETRICSFc.iScrollWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollWidth", "I");
4625 	NONCLIENTMETRICSFc.iScrollHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollHeight", "I");
4626 	NONCLIENTMETRICSFc.iCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionWidth", "I");
4627 	NONCLIENTMETRICSFc.iCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionHeight", "I");
4628 	NONCLIENTMETRICSFc.lfCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "lfCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
4629 	NONCLIENTMETRICSFc.iSmCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionWidth", "I");
4630 	NONCLIENTMETRICSFc.iSmCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionHeight", "I");
4631 	NONCLIENTMETRICSFc.lfSmCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "lfSmCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
4632 	NONCLIENTMETRICSFc.iMenuWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuWidth", "I");
4633 	NONCLIENTMETRICSFc.iMenuHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuHeight", "I");
4634 	NONCLIENTMETRICSFc.lfMenuFont = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "lfMenuFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
4635 	NONCLIENTMETRICSFc.lfStatusFont = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "lfStatusFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
4636 	NONCLIENTMETRICSFc.lfMessageFont = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "lfMessageFont", "Lorg/eclipse/swt/internal/win32/LOGFONT;");
4637 	NONCLIENTMETRICSFc.cached = 1;
4638 }
4639 
getNONCLIENTMETRICSFields(JNIEnv * env,jobject lpObject,NONCLIENTMETRICS * lpStruct)4640 NONCLIENTMETRICS *getNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)
4641 {
4642 	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);
4643 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);
4644 	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);
4645 	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);
4646 	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);
4647 	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);
4648 	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);
4649 	{
4650 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfCaptionFont);
4651 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->lfCaptionFont);
4652 	}
4653 	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);
4654 	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);
4655 	{
4656 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfSmCaptionFont);
4657 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
4658 	}
4659 	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);
4660 	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);
4661 	{
4662 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfMenuFont);
4663 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->lfMenuFont);
4664 	}
4665 	{
4666 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfStatusFont);
4667 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->lfStatusFont);
4668 	}
4669 	{
4670 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfMessageFont);
4671 	if (lpObject1 != NULL) getLOGFONTFields(env, lpObject1, &lpStruct->lfMessageFont);
4672 	}
4673 	return lpStruct;
4674 }
4675 
setNONCLIENTMETRICSFields(JNIEnv * env,jobject lpObject,NONCLIENTMETRICS * lpStruct)4676 void setNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)
4677 {
4678 	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);
4679 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);
4680 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);
4681 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);
4682 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);
4683 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);
4684 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);
4685 	{
4686 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfCaptionFont);
4687 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->lfCaptionFont);
4688 	}
4689 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);
4690 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);
4691 	{
4692 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfSmCaptionFont);
4693 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
4694 	}
4695 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);
4696 	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);
4697 	{
4698 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfMenuFont);
4699 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->lfMenuFont);
4700 	}
4701 	{
4702 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfStatusFont);
4703 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->lfStatusFont);
4704 	}
4705 	{
4706 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSFc.lfMessageFont);
4707 	if (lpObject1 != NULL) setLOGFONTFields(env, lpObject1, &lpStruct->lfMessageFont);
4708 	}
4709 }
4710 #endif
4711 
4712 #ifndef NO_NOTIFYICONDATA
4713 typedef struct NOTIFYICONDATA_FID_CACHE {
4714 	int cached;
4715 	jclass clazz;
4716 	jfieldID cbSize, hWnd, uID, uFlags, uCallbackMessage, hIcon, szTip, dwState, dwStateMask, szInfo, szInfoTitle, uVersion, dwInfoFlags;
4717 } NOTIFYICONDATA_FID_CACHE;
4718 
4719 NOTIFYICONDATA_FID_CACHE NOTIFYICONDATAFc;
4720 
cacheNOTIFYICONDATAFields(JNIEnv * env,jobject lpObject)4721 void cacheNOTIFYICONDATAFields(JNIEnv *env, jobject lpObject)
4722 {
4723 	if (NOTIFYICONDATAFc.cached) return;
4724 	NOTIFYICONDATAFc.clazz = (*env)->GetObjectClass(env, lpObject);
4725 	NOTIFYICONDATAFc.cbSize = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "cbSize", "I");
4726 	NOTIFYICONDATAFc.hWnd = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "hWnd", "J");
4727 	NOTIFYICONDATAFc.uID = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "uID", "I");
4728 	NOTIFYICONDATAFc.uFlags = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "uFlags", "I");
4729 	NOTIFYICONDATAFc.uCallbackMessage = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "uCallbackMessage", "I");
4730 	NOTIFYICONDATAFc.hIcon = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "hIcon", "J");
4731 	NOTIFYICONDATAFc.szTip = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "szTip", "[C");
4732 	NOTIFYICONDATAFc.dwState = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "dwState", "I");
4733 	NOTIFYICONDATAFc.dwStateMask = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "dwStateMask", "I");
4734 	NOTIFYICONDATAFc.szInfo = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "szInfo", "[C");
4735 	NOTIFYICONDATAFc.szInfoTitle = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "szInfoTitle", "[C");
4736 	NOTIFYICONDATAFc.uVersion = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "uVersion", "I");
4737 	NOTIFYICONDATAFc.dwInfoFlags = (*env)->GetFieldID(env, NOTIFYICONDATAFc.clazz, "dwInfoFlags", "I");
4738 	NOTIFYICONDATAFc.cached = 1;
4739 }
4740 
getNOTIFYICONDATAFields(JNIEnv * env,jobject lpObject,NOTIFYICONDATA * lpStruct)4741 NOTIFYICONDATA *getNOTIFYICONDATAFields(JNIEnv *env, jobject lpObject, NOTIFYICONDATA *lpStruct)
4742 {
4743 	if (!NOTIFYICONDATAFc.cached) cacheNOTIFYICONDATAFields(env, lpObject);
4744 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.cbSize);
4745 	lpStruct->hWnd = (HWND)(*env)->GetLongField(env, lpObject, NOTIFYICONDATAFc.hWnd);
4746 	lpStruct->uID = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.uID);
4747 	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.uFlags);
4748 	lpStruct->uCallbackMessage = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.uCallbackMessage);
4749 	lpStruct->hIcon = (HICON)(*env)->GetLongField(env, lpObject, NOTIFYICONDATAFc.hIcon);
4750 	{
4751 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szTip);
4752 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTip) / sizeof(jchar), (jchar *)lpStruct->szTip);
4753 	}
4754 	lpStruct->dwState = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.dwState);
4755 	lpStruct->dwStateMask = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.dwStateMask);
4756 	{
4757 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szInfo);
4758 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szInfo) / sizeof(jchar), (jchar *)lpStruct->szInfo);
4759 	}
4760 	{
4761 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szInfoTitle);
4762 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szInfoTitle) / sizeof(jchar), (jchar *)lpStruct->szInfoTitle);
4763 	}
4764 	lpStruct->uVersion = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.uVersion);
4765 	lpStruct->dwInfoFlags = (*env)->GetIntField(env, lpObject, NOTIFYICONDATAFc.dwInfoFlags);
4766 	return lpStruct;
4767 }
4768 
setNOTIFYICONDATAFields(JNIEnv * env,jobject lpObject,NOTIFYICONDATA * lpStruct)4769 void setNOTIFYICONDATAFields(JNIEnv *env, jobject lpObject, NOTIFYICONDATA *lpStruct)
4770 {
4771 	if (!NOTIFYICONDATAFc.cached) cacheNOTIFYICONDATAFields(env, lpObject);
4772 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.cbSize, (jint)lpStruct->cbSize);
4773 	(*env)->SetLongField(env, lpObject, NOTIFYICONDATAFc.hWnd, (jlong)lpStruct->hWnd);
4774 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.uID, (jint)lpStruct->uID);
4775 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.uFlags, (jint)lpStruct->uFlags);
4776 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.uCallbackMessage, (jint)lpStruct->uCallbackMessage);
4777 	(*env)->SetLongField(env, lpObject, NOTIFYICONDATAFc.hIcon, (jlong)lpStruct->hIcon);
4778 	{
4779 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szTip);
4780 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTip) / sizeof(jchar), (jchar *)lpStruct->szTip);
4781 	}
4782 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.dwState, (jint)lpStruct->dwState);
4783 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.dwStateMask, (jint)lpStruct->dwStateMask);
4784 	{
4785 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szInfo);
4786 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szInfo) / sizeof(jchar), (jchar *)lpStruct->szInfo);
4787 	}
4788 	{
4789 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, NOTIFYICONDATAFc.szInfoTitle);
4790 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szInfoTitle) / sizeof(jchar), (jchar *)lpStruct->szInfoTitle);
4791 	}
4792 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.uVersion, (jint)lpStruct->uVersion);
4793 	(*env)->SetIntField(env, lpObject, NOTIFYICONDATAFc.dwInfoFlags, (jint)lpStruct->dwInfoFlags);
4794 }
4795 #endif
4796 
4797 #ifndef NO_OFNOTIFY
4798 typedef struct OFNOTIFY_FID_CACHE {
4799 	int cached;
4800 	jclass clazz;
4801 	jfieldID lpOFN, pszFile;
4802 } OFNOTIFY_FID_CACHE;
4803 
4804 OFNOTIFY_FID_CACHE OFNOTIFYFc;
4805 
cacheOFNOTIFYFields(JNIEnv * env,jobject lpObject)4806 void cacheOFNOTIFYFields(JNIEnv *env, jobject lpObject)
4807 {
4808 	if (OFNOTIFYFc.cached) return;
4809 	cacheNMHDRFields(env, lpObject);
4810 	OFNOTIFYFc.clazz = (*env)->GetObjectClass(env, lpObject);
4811 	OFNOTIFYFc.lpOFN = (*env)->GetFieldID(env, OFNOTIFYFc.clazz, "lpOFN", "J");
4812 	OFNOTIFYFc.pszFile = (*env)->GetFieldID(env, OFNOTIFYFc.clazz, "pszFile", "J");
4813 	OFNOTIFYFc.cached = 1;
4814 }
4815 
getOFNOTIFYFields(JNIEnv * env,jobject lpObject,OFNOTIFY * lpStruct)4816 OFNOTIFY *getOFNOTIFYFields(JNIEnv *env, jobject lpObject, OFNOTIFY *lpStruct)
4817 {
4818 	if (!OFNOTIFYFc.cached) cacheOFNOTIFYFields(env, lpObject);
4819 	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4820 	lpStruct->lpOFN = (LPOPENFILENAME)(*env)->GetLongField(env, lpObject, OFNOTIFYFc.lpOFN);
4821 	lpStruct->pszFile = (LPTSTR)(*env)->GetLongField(env, lpObject, OFNOTIFYFc.pszFile);
4822 	return lpStruct;
4823 }
4824 
setOFNOTIFYFields(JNIEnv * env,jobject lpObject,OFNOTIFY * lpStruct)4825 void setOFNOTIFYFields(JNIEnv *env, jobject lpObject, OFNOTIFY *lpStruct)
4826 {
4827 	if (!OFNOTIFYFc.cached) cacheOFNOTIFYFields(env, lpObject);
4828 	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
4829 	(*env)->SetLongField(env, lpObject, OFNOTIFYFc.lpOFN, (jlong)lpStruct->lpOFN);
4830 	(*env)->SetLongField(env, lpObject, OFNOTIFYFc.pszFile, (jlong)lpStruct->pszFile);
4831 }
4832 #endif
4833 
4834 #ifndef NO_OPENFILENAME
4835 typedef struct OPENFILENAME_FID_CACHE {
4836 	int cached;
4837 	jclass clazz;
4838 	jfieldID lStructSize, hwndOwner, hInstance, lpstrFilter, lpstrCustomFilter, nMaxCustFilter, nFilterIndex, lpstrFile, nMaxFile, lpstrFileTitle, nMaxFileTitle, lpstrInitialDir, lpstrTitle, Flags, nFileOffset, nFileExtension, lpstrDefExt, lCustData, lpfnHook, lpTemplateName, pvReserved, dwReserved, FlagsEx;
4839 } OPENFILENAME_FID_CACHE;
4840 
4841 OPENFILENAME_FID_CACHE OPENFILENAMEFc;
4842 
cacheOPENFILENAMEFields(JNIEnv * env,jobject lpObject)4843 void cacheOPENFILENAMEFields(JNIEnv *env, jobject lpObject)
4844 {
4845 	if (OPENFILENAMEFc.cached) return;
4846 	OPENFILENAMEFc.clazz = (*env)->GetObjectClass(env, lpObject);
4847 	OPENFILENAMEFc.lStructSize = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lStructSize", "I");
4848 	OPENFILENAMEFc.hwndOwner = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hwndOwner", "J");
4849 	OPENFILENAMEFc.hInstance = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hInstance", "J");
4850 	OPENFILENAMEFc.lpstrFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFilter", "J");
4851 	OPENFILENAMEFc.lpstrCustomFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrCustomFilter", "J");
4852 	OPENFILENAMEFc.nMaxCustFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxCustFilter", "I");
4853 	OPENFILENAMEFc.nFilterIndex = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFilterIndex", "I");
4854 	OPENFILENAMEFc.lpstrFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFile", "J");
4855 	OPENFILENAMEFc.nMaxFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFile", "I");
4856 	OPENFILENAMEFc.lpstrFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFileTitle", "J");
4857 	OPENFILENAMEFc.nMaxFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFileTitle", "I");
4858 	OPENFILENAMEFc.lpstrInitialDir = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrInitialDir", "J");
4859 	OPENFILENAMEFc.lpstrTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrTitle", "J");
4860 	OPENFILENAMEFc.Flags = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "Flags", "I");
4861 	OPENFILENAMEFc.nFileOffset = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileOffset", "S");
4862 	OPENFILENAMEFc.nFileExtension = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileExtension", "S");
4863 	OPENFILENAMEFc.lpstrDefExt = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrDefExt", "J");
4864 	OPENFILENAMEFc.lCustData = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lCustData", "J");
4865 	OPENFILENAMEFc.lpfnHook = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpfnHook", "J");
4866 	OPENFILENAMEFc.lpTemplateName = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpTemplateName", "J");
4867 	OPENFILENAMEFc.pvReserved = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "pvReserved", "J");
4868 	OPENFILENAMEFc.dwReserved = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "dwReserved", "I");
4869 	OPENFILENAMEFc.FlagsEx = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "FlagsEx", "I");
4870 	OPENFILENAMEFc.cached = 1;
4871 }
4872 
getOPENFILENAMEFields(JNIEnv * env,jobject lpObject,OPENFILENAME * lpStruct)4873 OPENFILENAME *getOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)
4874 {
4875 	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);
4876 	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lStructSize);
4877 	lpStruct->hwndOwner = (HWND)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.hwndOwner);
4878 	lpStruct->hInstance = (HINSTANCE)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.hInstance);
4879 	lpStruct->lpstrFilter = (LPCTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrFilter);
4880 	lpStruct->lpstrCustomFilter = (LPTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter);
4881 	lpStruct->nMaxCustFilter = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter);
4882 	lpStruct->nFilterIndex = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex);
4883 	lpStruct->lpstrFile = (LPTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrFile);
4884 	lpStruct->nMaxFile = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile);
4885 	lpStruct->lpstrFileTitle = (LPTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle);
4886 	lpStruct->nMaxFileTitle = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle);
4887 	lpStruct->lpstrInitialDir = (LPCTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir);
4888 	lpStruct->lpstrTitle = (LPCTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrTitle);
4889 	lpStruct->Flags = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.Flags);
4890 	lpStruct->nFileOffset = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset);
4891 	lpStruct->nFileExtension = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension);
4892 	lpStruct->lpstrDefExt = (LPCTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpstrDefExt);
4893 	lpStruct->lCustData = (*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lCustData);
4894 	lpStruct->lpfnHook = (LPOFNHOOKPROC)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpfnHook);
4895 	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.lpTemplateName);
4896 	lpStruct->pvReserved = (void *)(*env)->GetLongField(env, lpObject, OPENFILENAMEFc.pvReserved);
4897 	lpStruct->dwReserved = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.dwReserved);
4898 	lpStruct->FlagsEx = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.FlagsEx);
4899 	return lpStruct;
4900 }
4901 
setOPENFILENAMEFields(JNIEnv * env,jobject lpObject,OPENFILENAME * lpStruct)4902 void setOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)
4903 {
4904 	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);
4905 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lStructSize, (jint)lpStruct->lStructSize);
4906 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.hwndOwner, (jlong)lpStruct->hwndOwner);
4907 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.hInstance, (jlong)lpStruct->hInstance);
4908 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrFilter, (jlong)lpStruct->lpstrFilter);
4909 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter, (jlong)lpStruct->lpstrCustomFilter);
4910 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter, (jint)lpStruct->nMaxCustFilter);
4911 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex, (jint)lpStruct->nFilterIndex);
4912 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrFile, (jlong)lpStruct->lpstrFile);
4913 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile, (jint)lpStruct->nMaxFile);
4914 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle, (jlong)lpStruct->lpstrFileTitle);
4915 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle, (jint)lpStruct->nMaxFileTitle);
4916 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir, (jlong)lpStruct->lpstrInitialDir);
4917 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrTitle, (jlong)lpStruct->lpstrTitle);
4918 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.Flags, (jint)lpStruct->Flags);
4919 	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset, (jshort)lpStruct->nFileOffset);
4920 	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension, (jshort)lpStruct->nFileExtension);
4921 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpstrDefExt, (jlong)lpStruct->lpstrDefExt);
4922 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lCustData, (jlong)lpStruct->lCustData);
4923 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpfnHook, (jlong)lpStruct->lpfnHook);
4924 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.lpTemplateName, (jlong)lpStruct->lpTemplateName);
4925 	(*env)->SetLongField(env, lpObject, OPENFILENAMEFc.pvReserved, (jlong)lpStruct->pvReserved);
4926 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.dwReserved, (jint)lpStruct->dwReserved);
4927 	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.FlagsEx, (jint)lpStruct->FlagsEx);
4928 }
4929 #endif
4930 
4931 #ifndef NO_OUTLINETEXTMETRIC
4932 typedef struct OUTLINETEXTMETRIC_FID_CACHE {
4933 	int cached;
4934 	jclass clazz;
4935 	jfieldID otmSize, otmTextMetrics, otmFiller, otmPanoseNumber_bFamilyType, otmPanoseNumber_bSerifStyle, otmPanoseNumber_bWeight, otmPanoseNumber_bProportion, otmPanoseNumber_bContrast, otmPanoseNumber_bStrokeVariation, otmPanoseNumber_bArmStyle, otmPanoseNumber_bLetterform, otmPanoseNumber_bMidline, otmPanoseNumber_bXHeight, otmfsSelection, otmfsType, otmsCharSlopeRise, otmsCharSlopeRun, otmItalicAngle, otmEMSquare, otmAscent, otmDescent, otmLineGap, otmsCapEmHeight, otmsXHeight, otmrcFontBox, otmMacAscent, otmMacDescent, otmMacLineGap, otmusMinimumPPEM, otmptSubscriptSize, otmptSubscriptOffset, otmptSuperscriptSize, otmptSuperscriptOffset, otmsStrikeoutSize, otmsStrikeoutPosition, otmsUnderscoreSize, otmsUnderscorePosition, otmpFamilyName, otmpFaceName, otmpStyleName, otmpFullName;
4936 } OUTLINETEXTMETRIC_FID_CACHE;
4937 
4938 OUTLINETEXTMETRIC_FID_CACHE OUTLINETEXTMETRICFc;
4939 
cacheOUTLINETEXTMETRICFields(JNIEnv * env,jobject lpObject)4940 void cacheOUTLINETEXTMETRICFields(JNIEnv *env, jobject lpObject)
4941 {
4942 	if (OUTLINETEXTMETRICFc.cached) return;
4943 	OUTLINETEXTMETRICFc.clazz = (*env)->GetObjectClass(env, lpObject);
4944 	OUTLINETEXTMETRICFc.otmSize = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmSize", "I");
4945 	OUTLINETEXTMETRICFc.otmTextMetrics = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmTextMetrics", "Lorg/eclipse/swt/internal/win32/TEXTMETRIC;");
4946 	OUTLINETEXTMETRICFc.otmFiller = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmFiller", "B");
4947 	OUTLINETEXTMETRICFc.otmPanoseNumber_bFamilyType = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bFamilyType", "B");
4948 	OUTLINETEXTMETRICFc.otmPanoseNumber_bSerifStyle = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bSerifStyle", "B");
4949 	OUTLINETEXTMETRICFc.otmPanoseNumber_bWeight = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bWeight", "B");
4950 	OUTLINETEXTMETRICFc.otmPanoseNumber_bProportion = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bProportion", "B");
4951 	OUTLINETEXTMETRICFc.otmPanoseNumber_bContrast = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bContrast", "B");
4952 	OUTLINETEXTMETRICFc.otmPanoseNumber_bStrokeVariation = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bStrokeVariation", "B");
4953 	OUTLINETEXTMETRICFc.otmPanoseNumber_bArmStyle = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bArmStyle", "B");
4954 	OUTLINETEXTMETRICFc.otmPanoseNumber_bLetterform = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bLetterform", "B");
4955 	OUTLINETEXTMETRICFc.otmPanoseNumber_bMidline = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bMidline", "B");
4956 	OUTLINETEXTMETRICFc.otmPanoseNumber_bXHeight = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmPanoseNumber_bXHeight", "B");
4957 	OUTLINETEXTMETRICFc.otmfsSelection = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmfsSelection", "I");
4958 	OUTLINETEXTMETRICFc.otmfsType = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmfsType", "I");
4959 	OUTLINETEXTMETRICFc.otmsCharSlopeRise = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsCharSlopeRise", "I");
4960 	OUTLINETEXTMETRICFc.otmsCharSlopeRun = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsCharSlopeRun", "I");
4961 	OUTLINETEXTMETRICFc.otmItalicAngle = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmItalicAngle", "I");
4962 	OUTLINETEXTMETRICFc.otmEMSquare = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmEMSquare", "I");
4963 	OUTLINETEXTMETRICFc.otmAscent = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmAscent", "I");
4964 	OUTLINETEXTMETRICFc.otmDescent = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmDescent", "I");
4965 	OUTLINETEXTMETRICFc.otmLineGap = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmLineGap", "I");
4966 	OUTLINETEXTMETRICFc.otmsCapEmHeight = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsCapEmHeight", "I");
4967 	OUTLINETEXTMETRICFc.otmsXHeight = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsXHeight", "I");
4968 	OUTLINETEXTMETRICFc.otmrcFontBox = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmrcFontBox", "Lorg/eclipse/swt/internal/win32/RECT;");
4969 	OUTLINETEXTMETRICFc.otmMacAscent = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmMacAscent", "I");
4970 	OUTLINETEXTMETRICFc.otmMacDescent = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmMacDescent", "I");
4971 	OUTLINETEXTMETRICFc.otmMacLineGap = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmMacLineGap", "I");
4972 	OUTLINETEXTMETRICFc.otmusMinimumPPEM = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmusMinimumPPEM", "I");
4973 	OUTLINETEXTMETRICFc.otmptSubscriptSize = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmptSubscriptSize", "Lorg/eclipse/swt/internal/win32/POINT;");
4974 	OUTLINETEXTMETRICFc.otmptSubscriptOffset = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmptSubscriptOffset", "Lorg/eclipse/swt/internal/win32/POINT;");
4975 	OUTLINETEXTMETRICFc.otmptSuperscriptSize = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmptSuperscriptSize", "Lorg/eclipse/swt/internal/win32/POINT;");
4976 	OUTLINETEXTMETRICFc.otmptSuperscriptOffset = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmptSuperscriptOffset", "Lorg/eclipse/swt/internal/win32/POINT;");
4977 	OUTLINETEXTMETRICFc.otmsStrikeoutSize = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsStrikeoutSize", "I");
4978 	OUTLINETEXTMETRICFc.otmsStrikeoutPosition = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsStrikeoutPosition", "I");
4979 	OUTLINETEXTMETRICFc.otmsUnderscoreSize = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsUnderscoreSize", "I");
4980 	OUTLINETEXTMETRICFc.otmsUnderscorePosition = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmsUnderscorePosition", "I");
4981 	OUTLINETEXTMETRICFc.otmpFamilyName = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmpFamilyName", "J");
4982 	OUTLINETEXTMETRICFc.otmpFaceName = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmpFaceName", "J");
4983 	OUTLINETEXTMETRICFc.otmpStyleName = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmpStyleName", "J");
4984 	OUTLINETEXTMETRICFc.otmpFullName = (*env)->GetFieldID(env, OUTLINETEXTMETRICFc.clazz, "otmpFullName", "J");
4985 	OUTLINETEXTMETRICFc.cached = 1;
4986 }
4987 
getOUTLINETEXTMETRICFields(JNIEnv * env,jobject lpObject,OUTLINETEXTMETRIC * lpStruct)4988 OUTLINETEXTMETRIC *getOUTLINETEXTMETRICFields(JNIEnv *env, jobject lpObject, OUTLINETEXTMETRIC *lpStruct)
4989 {
4990 	if (!OUTLINETEXTMETRICFc.cached) cacheOUTLINETEXTMETRICFields(env, lpObject);
4991 	lpStruct->otmSize = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmSize);
4992 	{
4993 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmTextMetrics);
4994 	if (lpObject1 != NULL) getTEXTMETRICFields(env, lpObject1, &lpStruct->otmTextMetrics);
4995 	}
4996 	lpStruct->otmFiller = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmFiller);
4997 	lpStruct->otmPanoseNumber.bFamilyType = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bFamilyType);
4998 	lpStruct->otmPanoseNumber.bSerifStyle = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bSerifStyle);
4999 	lpStruct->otmPanoseNumber.bWeight = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bWeight);
5000 	lpStruct->otmPanoseNumber.bProportion = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bProportion);
5001 	lpStruct->otmPanoseNumber.bContrast = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bContrast);
5002 	lpStruct->otmPanoseNumber.bStrokeVariation = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bStrokeVariation);
5003 	lpStruct->otmPanoseNumber.bArmStyle = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bArmStyle);
5004 	lpStruct->otmPanoseNumber.bLetterform = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bLetterform);
5005 	lpStruct->otmPanoseNumber.bMidline = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bMidline);
5006 	lpStruct->otmPanoseNumber.bXHeight = (*env)->GetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bXHeight);
5007 	lpStruct->otmfsSelection = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmfsSelection);
5008 	lpStruct->otmfsType = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmfsType);
5009 	lpStruct->otmsCharSlopeRise = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCharSlopeRise);
5010 	lpStruct->otmsCharSlopeRun = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCharSlopeRun);
5011 	lpStruct->otmItalicAngle = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmItalicAngle);
5012 	lpStruct->otmEMSquare = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmEMSquare);
5013 	lpStruct->otmAscent = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmAscent);
5014 	lpStruct->otmDescent = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmDescent);
5015 	lpStruct->otmLineGap = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmLineGap);
5016 	lpStruct->otmsCapEmHeight = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCapEmHeight);
5017 	lpStruct->otmsXHeight = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsXHeight);
5018 	{
5019 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmrcFontBox);
5020 	if (lpObject1 != NULL) getRECTFields(env, lpObject1, &lpStruct->otmrcFontBox);
5021 	}
5022 	lpStruct->otmMacAscent = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacAscent);
5023 	lpStruct->otmMacDescent = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacDescent);
5024 	lpStruct->otmMacLineGap = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacLineGap);
5025 	lpStruct->otmusMinimumPPEM = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmusMinimumPPEM);
5026 	{
5027 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSubscriptSize);
5028 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->otmptSubscriptSize);
5029 	}
5030 	{
5031 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSubscriptOffset);
5032 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->otmptSubscriptOffset);
5033 	}
5034 	{
5035 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSuperscriptSize);
5036 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->otmptSuperscriptSize);
5037 	}
5038 	{
5039 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSuperscriptOffset);
5040 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->otmptSuperscriptOffset);
5041 	}
5042 	lpStruct->otmsStrikeoutSize = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsStrikeoutSize);
5043 	lpStruct->otmsStrikeoutPosition = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsStrikeoutPosition);
5044 	lpStruct->otmsUnderscoreSize = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsUnderscoreSize);
5045 	lpStruct->otmsUnderscorePosition = (*env)->GetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsUnderscorePosition);
5046 	lpStruct->otmpFamilyName = (PSTR)(*env)->GetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFamilyName);
5047 	lpStruct->otmpFaceName = (PSTR)(*env)->GetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFaceName);
5048 	lpStruct->otmpStyleName = (PSTR)(*env)->GetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpStyleName);
5049 	lpStruct->otmpFullName = (PSTR)(*env)->GetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFullName);
5050 	return lpStruct;
5051 }
5052 
setOUTLINETEXTMETRICFields(JNIEnv * env,jobject lpObject,OUTLINETEXTMETRIC * lpStruct)5053 void setOUTLINETEXTMETRICFields(JNIEnv *env, jobject lpObject, OUTLINETEXTMETRIC *lpStruct)
5054 {
5055 	if (!OUTLINETEXTMETRICFc.cached) cacheOUTLINETEXTMETRICFields(env, lpObject);
5056 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmSize, (jint)lpStruct->otmSize);
5057 	{
5058 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmTextMetrics);
5059 	if (lpObject1 != NULL) setTEXTMETRICFields(env, lpObject1, &lpStruct->otmTextMetrics);
5060 	}
5061 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmFiller, (jbyte)lpStruct->otmFiller);
5062 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bFamilyType, (jbyte)lpStruct->otmPanoseNumber.bFamilyType);
5063 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bSerifStyle, (jbyte)lpStruct->otmPanoseNumber.bSerifStyle);
5064 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bWeight, (jbyte)lpStruct->otmPanoseNumber.bWeight);
5065 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bProportion, (jbyte)lpStruct->otmPanoseNumber.bProportion);
5066 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bContrast, (jbyte)lpStruct->otmPanoseNumber.bContrast);
5067 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bStrokeVariation, (jbyte)lpStruct->otmPanoseNumber.bStrokeVariation);
5068 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bArmStyle, (jbyte)lpStruct->otmPanoseNumber.bArmStyle);
5069 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bLetterform, (jbyte)lpStruct->otmPanoseNumber.bLetterform);
5070 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bMidline, (jbyte)lpStruct->otmPanoseNumber.bMidline);
5071 	(*env)->SetByteField(env, lpObject, OUTLINETEXTMETRICFc.otmPanoseNumber_bXHeight, (jbyte)lpStruct->otmPanoseNumber.bXHeight);
5072 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmfsSelection, (jint)lpStruct->otmfsSelection);
5073 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmfsType, (jint)lpStruct->otmfsType);
5074 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCharSlopeRise, (jint)lpStruct->otmsCharSlopeRise);
5075 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCharSlopeRun, (jint)lpStruct->otmsCharSlopeRun);
5076 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmItalicAngle, (jint)lpStruct->otmItalicAngle);
5077 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmEMSquare, (jint)lpStruct->otmEMSquare);
5078 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmAscent, (jint)lpStruct->otmAscent);
5079 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmDescent, (jint)lpStruct->otmDescent);
5080 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmLineGap, (jint)lpStruct->otmLineGap);
5081 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsCapEmHeight, (jint)lpStruct->otmsCapEmHeight);
5082 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsXHeight, (jint)lpStruct->otmsXHeight);
5083 	{
5084 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmrcFontBox);
5085 	if (lpObject1 != NULL) setRECTFields(env, lpObject1, &lpStruct->otmrcFontBox);
5086 	}
5087 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacAscent, (jint)lpStruct->otmMacAscent);
5088 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacDescent, (jint)lpStruct->otmMacDescent);
5089 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmMacLineGap, (jint)lpStruct->otmMacLineGap);
5090 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmusMinimumPPEM, (jint)lpStruct->otmusMinimumPPEM);
5091 	{
5092 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSubscriptSize);
5093 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->otmptSubscriptSize);
5094 	}
5095 	{
5096 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSubscriptOffset);
5097 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->otmptSubscriptOffset);
5098 	}
5099 	{
5100 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSuperscriptSize);
5101 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->otmptSuperscriptSize);
5102 	}
5103 	{
5104 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, OUTLINETEXTMETRICFc.otmptSuperscriptOffset);
5105 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->otmptSuperscriptOffset);
5106 	}
5107 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsStrikeoutSize, (jint)lpStruct->otmsStrikeoutSize);
5108 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsStrikeoutPosition, (jint)lpStruct->otmsStrikeoutPosition);
5109 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsUnderscoreSize, (jint)lpStruct->otmsUnderscoreSize);
5110 	(*env)->SetIntField(env, lpObject, OUTLINETEXTMETRICFc.otmsUnderscorePosition, (jint)lpStruct->otmsUnderscorePosition);
5111 	(*env)->SetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFamilyName, (jlong)lpStruct->otmpFamilyName);
5112 	(*env)->SetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFaceName, (jlong)lpStruct->otmpFaceName);
5113 	(*env)->SetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpStyleName, (jlong)lpStruct->otmpStyleName);
5114 	(*env)->SetLongField(env, lpObject, OUTLINETEXTMETRICFc.otmpFullName, (jlong)lpStruct->otmpFullName);
5115 }
5116 #endif
5117 
5118 #ifndef NO_PAINTSTRUCT
5119 typedef struct PAINTSTRUCT_FID_CACHE {
5120 	int cached;
5121 	jclass clazz;
5122 	jfieldID hdc, fErase, left, top, right, bottom, fRestore, fIncUpdate, rgbReserved;
5123 } PAINTSTRUCT_FID_CACHE;
5124 
5125 PAINTSTRUCT_FID_CACHE PAINTSTRUCTFc;
5126 
cachePAINTSTRUCTFields(JNIEnv * env,jobject lpObject)5127 void cachePAINTSTRUCTFields(JNIEnv *env, jobject lpObject)
5128 {
5129 	if (PAINTSTRUCTFc.cached) return;
5130 	PAINTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
5131 	PAINTSTRUCTFc.hdc = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "hdc", "J");
5132 	PAINTSTRUCTFc.fErase = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fErase", "Z");
5133 	PAINTSTRUCTFc.left = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "left", "I");
5134 	PAINTSTRUCTFc.top = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "top", "I");
5135 	PAINTSTRUCTFc.right = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "right", "I");
5136 	PAINTSTRUCTFc.bottom = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "bottom", "I");
5137 	PAINTSTRUCTFc.fRestore = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fRestore", "Z");
5138 	PAINTSTRUCTFc.fIncUpdate = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fIncUpdate", "Z");
5139 	PAINTSTRUCTFc.rgbReserved = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "rgbReserved", "[B");
5140 	PAINTSTRUCTFc.cached = 1;
5141 }
5142 
getPAINTSTRUCTFields(JNIEnv * env,jobject lpObject,PAINTSTRUCT * lpStruct)5143 PAINTSTRUCT *getPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)
5144 {
5145 	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);
5146 	lpStruct->hdc = (HDC)(*env)->GetLongField(env, lpObject, PAINTSTRUCTFc.hdc);
5147 	lpStruct->fErase = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase);
5148 	lpStruct->rcPaint.left = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.left);
5149 	lpStruct->rcPaint.top = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.top);
5150 	lpStruct->rcPaint.right = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.right);
5151 	lpStruct->rcPaint.bottom = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.bottom);
5152 	lpStruct->fRestore = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore);
5153 	lpStruct->fIncUpdate = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate);
5154 	{
5155 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);
5156 	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (jbyte *)lpStruct->rgbReserved);
5157 	}
5158 	return lpStruct;
5159 }
5160 
setPAINTSTRUCTFields(JNIEnv * env,jobject lpObject,PAINTSTRUCT * lpStruct)5161 void setPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)
5162 {
5163 	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);
5164 	(*env)->SetLongField(env, lpObject, PAINTSTRUCTFc.hdc, (jlong)lpStruct->hdc);
5165 	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase, (jboolean)lpStruct->fErase);
5166 	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.left, (jint)lpStruct->rcPaint.left);
5167 	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.top, (jint)lpStruct->rcPaint.top);
5168 	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.right, (jint)lpStruct->rcPaint.right);
5169 	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.bottom, (jint)lpStruct->rcPaint.bottom);
5170 	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore, (jboolean)lpStruct->fRestore);
5171 	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate, (jboolean)lpStruct->fIncUpdate);
5172 	{
5173 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);
5174 	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (jbyte *)lpStruct->rgbReserved);
5175 	}
5176 }
5177 #endif
5178 
5179 #ifndef NO_PANOSE
5180 typedef struct PANOSE_FID_CACHE {
5181 	int cached;
5182 	jclass clazz;
5183 	jfieldID bFamilyType, bSerifStyle, bWeight, bProportion, bContrast, bStrokeVariation, bArmStyle, bLetterform, bMidline, bXHeight;
5184 } PANOSE_FID_CACHE;
5185 
5186 PANOSE_FID_CACHE PANOSEFc;
5187 
cachePANOSEFields(JNIEnv * env,jobject lpObject)5188 void cachePANOSEFields(JNIEnv *env, jobject lpObject)
5189 {
5190 	if (PANOSEFc.cached) return;
5191 	PANOSEFc.clazz = (*env)->GetObjectClass(env, lpObject);
5192 	PANOSEFc.bFamilyType = (*env)->GetFieldID(env, PANOSEFc.clazz, "bFamilyType", "B");
5193 	PANOSEFc.bSerifStyle = (*env)->GetFieldID(env, PANOSEFc.clazz, "bSerifStyle", "B");
5194 	PANOSEFc.bWeight = (*env)->GetFieldID(env, PANOSEFc.clazz, "bWeight", "B");
5195 	PANOSEFc.bProportion = (*env)->GetFieldID(env, PANOSEFc.clazz, "bProportion", "B");
5196 	PANOSEFc.bContrast = (*env)->GetFieldID(env, PANOSEFc.clazz, "bContrast", "B");
5197 	PANOSEFc.bStrokeVariation = (*env)->GetFieldID(env, PANOSEFc.clazz, "bStrokeVariation", "B");
5198 	PANOSEFc.bArmStyle = (*env)->GetFieldID(env, PANOSEFc.clazz, "bArmStyle", "B");
5199 	PANOSEFc.bLetterform = (*env)->GetFieldID(env, PANOSEFc.clazz, "bLetterform", "B");
5200 	PANOSEFc.bMidline = (*env)->GetFieldID(env, PANOSEFc.clazz, "bMidline", "B");
5201 	PANOSEFc.bXHeight = (*env)->GetFieldID(env, PANOSEFc.clazz, "bXHeight", "B");
5202 	PANOSEFc.cached = 1;
5203 }
5204 
getPANOSEFields(JNIEnv * env,jobject lpObject,PANOSE * lpStruct)5205 PANOSE *getPANOSEFields(JNIEnv *env, jobject lpObject, PANOSE *lpStruct)
5206 {
5207 	if (!PANOSEFc.cached) cachePANOSEFields(env, lpObject);
5208 	lpStruct->bFamilyType = (*env)->GetByteField(env, lpObject, PANOSEFc.bFamilyType);
5209 	lpStruct->bSerifStyle = (*env)->GetByteField(env, lpObject, PANOSEFc.bSerifStyle);
5210 	lpStruct->bWeight = (*env)->GetByteField(env, lpObject, PANOSEFc.bWeight);
5211 	lpStruct->bProportion = (*env)->GetByteField(env, lpObject, PANOSEFc.bProportion);
5212 	lpStruct->bContrast = (*env)->GetByteField(env, lpObject, PANOSEFc.bContrast);
5213 	lpStruct->bStrokeVariation = (*env)->GetByteField(env, lpObject, PANOSEFc.bStrokeVariation);
5214 	lpStruct->bArmStyle = (*env)->GetByteField(env, lpObject, PANOSEFc.bArmStyle);
5215 	lpStruct->bLetterform = (*env)->GetByteField(env, lpObject, PANOSEFc.bLetterform);
5216 	lpStruct->bMidline = (*env)->GetByteField(env, lpObject, PANOSEFc.bMidline);
5217 	lpStruct->bXHeight = (*env)->GetByteField(env, lpObject, PANOSEFc.bXHeight);
5218 	return lpStruct;
5219 }
5220 
setPANOSEFields(JNIEnv * env,jobject lpObject,PANOSE * lpStruct)5221 void setPANOSEFields(JNIEnv *env, jobject lpObject, PANOSE *lpStruct)
5222 {
5223 	if (!PANOSEFc.cached) cachePANOSEFields(env, lpObject);
5224 	(*env)->SetByteField(env, lpObject, PANOSEFc.bFamilyType, (jbyte)lpStruct->bFamilyType);
5225 	(*env)->SetByteField(env, lpObject, PANOSEFc.bSerifStyle, (jbyte)lpStruct->bSerifStyle);
5226 	(*env)->SetByteField(env, lpObject, PANOSEFc.bWeight, (jbyte)lpStruct->bWeight);
5227 	(*env)->SetByteField(env, lpObject, PANOSEFc.bProportion, (jbyte)lpStruct->bProportion);
5228 	(*env)->SetByteField(env, lpObject, PANOSEFc.bContrast, (jbyte)lpStruct->bContrast);
5229 	(*env)->SetByteField(env, lpObject, PANOSEFc.bStrokeVariation, (jbyte)lpStruct->bStrokeVariation);
5230 	(*env)->SetByteField(env, lpObject, PANOSEFc.bArmStyle, (jbyte)lpStruct->bArmStyle);
5231 	(*env)->SetByteField(env, lpObject, PANOSEFc.bLetterform, (jbyte)lpStruct->bLetterform);
5232 	(*env)->SetByteField(env, lpObject, PANOSEFc.bMidline, (jbyte)lpStruct->bMidline);
5233 	(*env)->SetByteField(env, lpObject, PANOSEFc.bXHeight, (jbyte)lpStruct->bXHeight);
5234 }
5235 #endif
5236 
5237 #ifndef NO_POINT
5238 typedef struct POINT_FID_CACHE {
5239 	int cached;
5240 	jclass clazz;
5241 	jfieldID x, y;
5242 } POINT_FID_CACHE;
5243 
5244 POINT_FID_CACHE POINTFc;
5245 
cachePOINTFields(JNIEnv * env,jobject lpObject)5246 void cachePOINTFields(JNIEnv *env, jobject lpObject)
5247 {
5248 	if (POINTFc.cached) return;
5249 	POINTFc.clazz = (*env)->GetObjectClass(env, lpObject);
5250 	POINTFc.x = (*env)->GetFieldID(env, POINTFc.clazz, "x", "I");
5251 	POINTFc.y = (*env)->GetFieldID(env, POINTFc.clazz, "y", "I");
5252 	POINTFc.cached = 1;
5253 }
5254 
getPOINTFields(JNIEnv * env,jobject lpObject,POINT * lpStruct)5255 POINT *getPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)
5256 {
5257 	if (!POINTFc.cached) cachePOINTFields(env, lpObject);
5258 	lpStruct->x = (*env)->GetIntField(env, lpObject, POINTFc.x);
5259 	lpStruct->y = (*env)->GetIntField(env, lpObject, POINTFc.y);
5260 	return lpStruct;
5261 }
5262 
setPOINTFields(JNIEnv * env,jobject lpObject,POINT * lpStruct)5263 void setPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)
5264 {
5265 	if (!POINTFc.cached) cachePOINTFields(env, lpObject);
5266 	(*env)->SetIntField(env, lpObject, POINTFc.x, (jint)lpStruct->x);
5267 	(*env)->SetIntField(env, lpObject, POINTFc.y, (jint)lpStruct->y);
5268 }
5269 #endif
5270 
5271 #ifndef NO_PRINTDLG
5272 typedef struct PRINTDLG_FID_CACHE {
5273 	int cached;
5274 	jclass clazz;
5275 	jfieldID lStructSize, hwndOwner, hDevMode, hDevNames, hDC, Flags, nFromPage, nToPage, nMinPage, nMaxPage, nCopies, hInstance, lCustData, lpfnPrintHook, lpfnSetupHook, lpPrintTemplateName, lpSetupTemplateName, hPrintTemplate, hSetupTemplate;
5276 } PRINTDLG_FID_CACHE;
5277 
5278 PRINTDLG_FID_CACHE PRINTDLGFc;
5279 
cachePRINTDLGFields(JNIEnv * env,jobject lpObject)5280 void cachePRINTDLGFields(JNIEnv *env, jobject lpObject)
5281 {
5282 	if (PRINTDLGFc.cached) return;
5283 	PRINTDLGFc.clazz = (*env)->GetObjectClass(env, lpObject);
5284 	PRINTDLGFc.lStructSize = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lStructSize", "I");
5285 	PRINTDLGFc.hwndOwner = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hwndOwner", "J");
5286 	PRINTDLGFc.hDevMode = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevMode", "J");
5287 	PRINTDLGFc.hDevNames = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevNames", "J");
5288 	PRINTDLGFc.hDC = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDC", "J");
5289 	PRINTDLGFc.Flags = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "Flags", "I");
5290 	PRINTDLGFc.nFromPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nFromPage", "S");
5291 	PRINTDLGFc.nToPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nToPage", "S");
5292 	PRINTDLGFc.nMinPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMinPage", "S");
5293 	PRINTDLGFc.nMaxPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMaxPage", "S");
5294 	PRINTDLGFc.nCopies = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nCopies", "S");
5295 	PRINTDLGFc.hInstance = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hInstance", "J");
5296 	PRINTDLGFc.lCustData = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lCustData", "J");
5297 	PRINTDLGFc.lpfnPrintHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnPrintHook", "J");
5298 	PRINTDLGFc.lpfnSetupHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnSetupHook", "J");
5299 	PRINTDLGFc.lpPrintTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpPrintTemplateName", "J");
5300 	PRINTDLGFc.lpSetupTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpSetupTemplateName", "J");
5301 	PRINTDLGFc.hPrintTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hPrintTemplate", "J");
5302 	PRINTDLGFc.hSetupTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hSetupTemplate", "J");
5303 	PRINTDLGFc.cached = 1;
5304 }
5305 
getPRINTDLGFields(JNIEnv * env,jobject lpObject,PRINTDLG * lpStruct)5306 PRINTDLG *getPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)
5307 {
5308 	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);
5309 	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, PRINTDLGFc.lStructSize);
5310 	lpStruct->hwndOwner = (HWND)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hwndOwner);
5311 	lpStruct->hDevMode = (HGLOBAL)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hDevMode);
5312 	lpStruct->hDevNames = (HGLOBAL)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hDevNames);
5313 	lpStruct->hDC = (HDC)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hDC);
5314 	lpStruct->Flags = (*env)->GetIntField(env, lpObject, PRINTDLGFc.Flags);
5315 	lpStruct->nFromPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nFromPage);
5316 	lpStruct->nToPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nToPage);
5317 	lpStruct->nMinPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMinPage);
5318 	lpStruct->nMaxPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMaxPage);
5319 	lpStruct->nCopies = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nCopies);
5320 	lpStruct->hInstance = (HINSTANCE)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hInstance);
5321 	lpStruct->lCustData = (*env)->GetLongField(env, lpObject, PRINTDLGFc.lCustData);
5322 	lpStruct->lpfnPrintHook = (LPPRINTHOOKPROC)(*env)->GetLongField(env, lpObject, PRINTDLGFc.lpfnPrintHook);
5323 	lpStruct->lpfnSetupHook = (LPPRINTHOOKPROC)(*env)->GetLongField(env, lpObject, PRINTDLGFc.lpfnSetupHook);
5324 	lpStruct->lpPrintTemplateName = (LPCTSTR)(*env)->GetLongField(env, lpObject, PRINTDLGFc.lpPrintTemplateName);
5325 	lpStruct->lpSetupTemplateName = (LPCTSTR)(*env)->GetLongField(env, lpObject, PRINTDLGFc.lpSetupTemplateName);
5326 	lpStruct->hPrintTemplate = (HGLOBAL)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hPrintTemplate);
5327 	lpStruct->hSetupTemplate = (HGLOBAL)(*env)->GetLongField(env, lpObject, PRINTDLGFc.hSetupTemplate);
5328 	return lpStruct;
5329 }
5330 
setPRINTDLGFields(JNIEnv * env,jobject lpObject,PRINTDLG * lpStruct)5331 void setPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)
5332 {
5333 	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);
5334 	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lStructSize, (jint)lpStruct->lStructSize);
5335 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hwndOwner, (jlong)lpStruct->hwndOwner);
5336 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hDevMode, (jlong)lpStruct->hDevMode);
5337 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hDevNames, (jlong)lpStruct->hDevNames);
5338 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hDC, (jlong)lpStruct->hDC);
5339 	(*env)->SetIntField(env, lpObject, PRINTDLGFc.Flags, (jint)lpStruct->Flags);
5340 	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nFromPage, (jshort)lpStruct->nFromPage);
5341 	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nToPage, (jshort)lpStruct->nToPage);
5342 	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMinPage, (jshort)lpStruct->nMinPage);
5343 	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMaxPage, (jshort)lpStruct->nMaxPage);
5344 	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nCopies, (jshort)lpStruct->nCopies);
5345 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hInstance, (jlong)lpStruct->hInstance);
5346 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.lCustData, (jlong)lpStruct->lCustData);
5347 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.lpfnPrintHook, (jlong)lpStruct->lpfnPrintHook);
5348 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.lpfnSetupHook, (jlong)lpStruct->lpfnSetupHook);
5349 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.lpPrintTemplateName, (jlong)lpStruct->lpPrintTemplateName);
5350 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.lpSetupTemplateName, (jlong)lpStruct->lpSetupTemplateName);
5351 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hPrintTemplate, (jlong)lpStruct->hPrintTemplate);
5352 	(*env)->SetLongField(env, lpObject, PRINTDLGFc.hSetupTemplate, (jlong)lpStruct->hSetupTemplate);
5353 }
5354 #endif
5355 
5356 #ifndef NO_PROCESS_INFORMATION
5357 typedef struct PROCESS_INFORMATION_FID_CACHE {
5358 	int cached;
5359 	jclass clazz;
5360 	jfieldID hProcess, hThread, dwProcessId, dwThreadId;
5361 } PROCESS_INFORMATION_FID_CACHE;
5362 
5363 PROCESS_INFORMATION_FID_CACHE PROCESS_INFORMATIONFc;
5364 
cachePROCESS_INFORMATIONFields(JNIEnv * env,jobject lpObject)5365 void cachePROCESS_INFORMATIONFields(JNIEnv *env, jobject lpObject)
5366 {
5367 	if (PROCESS_INFORMATIONFc.cached) return;
5368 	PROCESS_INFORMATIONFc.clazz = (*env)->GetObjectClass(env, lpObject);
5369 	PROCESS_INFORMATIONFc.hProcess = (*env)->GetFieldID(env, PROCESS_INFORMATIONFc.clazz, "hProcess", "J");
5370 	PROCESS_INFORMATIONFc.hThread = (*env)->GetFieldID(env, PROCESS_INFORMATIONFc.clazz, "hThread", "J");
5371 	PROCESS_INFORMATIONFc.dwProcessId = (*env)->GetFieldID(env, PROCESS_INFORMATIONFc.clazz, "dwProcessId", "I");
5372 	PROCESS_INFORMATIONFc.dwThreadId = (*env)->GetFieldID(env, PROCESS_INFORMATIONFc.clazz, "dwThreadId", "I");
5373 	PROCESS_INFORMATIONFc.cached = 1;
5374 }
5375 
getPROCESS_INFORMATIONFields(JNIEnv * env,jobject lpObject,PROCESS_INFORMATION * lpStruct)5376 PROCESS_INFORMATION *getPROCESS_INFORMATIONFields(JNIEnv *env, jobject lpObject, PROCESS_INFORMATION *lpStruct)
5377 {
5378 	if (!PROCESS_INFORMATIONFc.cached) cachePROCESS_INFORMATIONFields(env, lpObject);
5379 	lpStruct->hProcess = (HANDLE)(*env)->GetLongField(env, lpObject, PROCESS_INFORMATIONFc.hProcess);
5380 	lpStruct->hThread = (HANDLE)(*env)->GetLongField(env, lpObject, PROCESS_INFORMATIONFc.hThread);
5381 	lpStruct->dwProcessId = (*env)->GetIntField(env, lpObject, PROCESS_INFORMATIONFc.dwProcessId);
5382 	lpStruct->dwThreadId = (*env)->GetIntField(env, lpObject, PROCESS_INFORMATIONFc.dwThreadId);
5383 	return lpStruct;
5384 }
5385 
setPROCESS_INFORMATIONFields(JNIEnv * env,jobject lpObject,PROCESS_INFORMATION * lpStruct)5386 void setPROCESS_INFORMATIONFields(JNIEnv *env, jobject lpObject, PROCESS_INFORMATION *lpStruct)
5387 {
5388 	if (!PROCESS_INFORMATIONFc.cached) cachePROCESS_INFORMATIONFields(env, lpObject);
5389 	(*env)->SetLongField(env, lpObject, PROCESS_INFORMATIONFc.hProcess, (jlong)lpStruct->hProcess);
5390 	(*env)->SetLongField(env, lpObject, PROCESS_INFORMATIONFc.hThread, (jlong)lpStruct->hThread);
5391 	(*env)->SetIntField(env, lpObject, PROCESS_INFORMATIONFc.dwProcessId, (jint)lpStruct->dwProcessId);
5392 	(*env)->SetIntField(env, lpObject, PROCESS_INFORMATIONFc.dwThreadId, (jint)lpStruct->dwThreadId);
5393 }
5394 #endif
5395 
5396 #ifndef NO_PROPERTYKEY
5397 typedef struct PROPERTYKEY_FID_CACHE {
5398 	int cached;
5399 	jclass clazz;
5400 	jfieldID fmtid, pid;
5401 } PROPERTYKEY_FID_CACHE;
5402 
5403 PROPERTYKEY_FID_CACHE PROPERTYKEYFc;
5404 
cachePROPERTYKEYFields(JNIEnv * env,jobject lpObject)5405 void cachePROPERTYKEYFields(JNIEnv *env, jobject lpObject)
5406 {
5407 	if (PROPERTYKEYFc.cached) return;
5408 	PROPERTYKEYFc.clazz = (*env)->GetObjectClass(env, lpObject);
5409 	PROPERTYKEYFc.fmtid = (*env)->GetFieldID(env, PROPERTYKEYFc.clazz, "fmtid", "[B");
5410 	PROPERTYKEYFc.pid = (*env)->GetFieldID(env, PROPERTYKEYFc.clazz, "pid", "I");
5411 	PROPERTYKEYFc.cached = 1;
5412 }
5413 
getPROPERTYKEYFields(JNIEnv * env,jobject lpObject,PROPERTYKEY * lpStruct)5414 PROPERTYKEY *getPROPERTYKEYFields(JNIEnv *env, jobject lpObject, PROPERTYKEY *lpStruct)
5415 {
5416 	if (!PROPERTYKEYFc.cached) cachePROPERTYKEYFields(env, lpObject);
5417 	{
5418 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, PROPERTYKEYFc.fmtid);
5419 	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->fmtid), (jbyte *)&lpStruct->fmtid);
5420 	}
5421 	lpStruct->pid = (*env)->GetIntField(env, lpObject, PROPERTYKEYFc.pid);
5422 	return lpStruct;
5423 }
5424 
setPROPERTYKEYFields(JNIEnv * env,jobject lpObject,PROPERTYKEY * lpStruct)5425 void setPROPERTYKEYFields(JNIEnv *env, jobject lpObject, PROPERTYKEY *lpStruct)
5426 {
5427 	if (!PROPERTYKEYFc.cached) cachePROPERTYKEYFields(env, lpObject);
5428 	{
5429 	jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, PROPERTYKEYFc.fmtid);
5430 	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->fmtid), (jbyte *)&lpStruct->fmtid);
5431 	}
5432 	(*env)->SetIntField(env, lpObject, PROPERTYKEYFc.pid, (jint)lpStruct->pid);
5433 }
5434 #endif
5435 
5436 #ifndef NO_REBARBANDINFO
5437 typedef struct REBARBANDINFO_FID_CACHE {
5438 	int cached;
5439 	jclass clazz;
5440 	jfieldID cbSize, fMask, fStyle, clrFore, clrBack, lpText, cch, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID, cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader;
5441 } REBARBANDINFO_FID_CACHE;
5442 
5443 REBARBANDINFO_FID_CACHE REBARBANDINFOFc;
5444 
cacheREBARBANDINFOFields(JNIEnv * env,jobject lpObject)5445 void cacheREBARBANDINFOFields(JNIEnv *env, jobject lpObject)
5446 {
5447 	if (REBARBANDINFOFc.cached) return;
5448 	REBARBANDINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
5449 	REBARBANDINFOFc.cbSize = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cbSize", "I");
5450 	REBARBANDINFOFc.fMask = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fMask", "I");
5451 	REBARBANDINFOFc.fStyle = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fStyle", "I");
5452 	REBARBANDINFOFc.clrFore = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrFore", "I");
5453 	REBARBANDINFOFc.clrBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrBack", "I");
5454 	REBARBANDINFOFc.lpText = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lpText", "J");
5455 	REBARBANDINFOFc.cch = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cch", "I");
5456 	REBARBANDINFOFc.iImage = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "iImage", "I");
5457 	REBARBANDINFOFc.hwndChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hwndChild", "J");
5458 	REBARBANDINFOFc.cxMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxMinChild", "I");
5459 	REBARBANDINFOFc.cyMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMinChild", "I");
5460 	REBARBANDINFOFc.cx = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cx", "I");
5461 	REBARBANDINFOFc.hbmBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hbmBack", "J");
5462 	REBARBANDINFOFc.wID = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "wID", "I");
5463 	REBARBANDINFOFc.cyChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyChild", "I");
5464 	REBARBANDINFOFc.cyMaxChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMaxChild", "I");
5465 	REBARBANDINFOFc.cyIntegral = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyIntegral", "I");
5466 	REBARBANDINFOFc.cxIdeal = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxIdeal", "I");
5467 	REBARBANDINFOFc.lParam = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lParam", "J");
5468 	REBARBANDINFOFc.cxHeader = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxHeader", "I");
5469 	REBARBANDINFOFc.cached = 1;
5470 }
5471 
getREBARBANDINFOFields(JNIEnv * env,jobject lpObject,REBARBANDINFO * lpStruct)5472 REBARBANDINFO *getREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)
5473 {
5474 	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);
5475 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cbSize);
5476 	lpStruct->fMask = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fMask);
5477 	lpStruct->fStyle = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fStyle);
5478 	lpStruct->clrFore = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrFore);
5479 	lpStruct->clrBack = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrBack);
5480 	lpStruct->lpText = (LPTSTR)(*env)->GetLongField(env, lpObject, REBARBANDINFOFc.lpText);
5481 	lpStruct->cch = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cch);
5482 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.iImage);
5483 	lpStruct->hwndChild = (HWND)(*env)->GetLongField(env, lpObject, REBARBANDINFOFc.hwndChild);
5484 	lpStruct->cxMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild);
5485 	lpStruct->cyMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild);
5486 	lpStruct->cx = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cx);
5487 	lpStruct->hbmBack = (HBITMAP)(*env)->GetLongField(env, lpObject, REBARBANDINFOFc.hbmBack);
5488 	lpStruct->wID = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.wID);
5489 	lpStruct->cyChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyChild);
5490 	lpStruct->cyMaxChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild);
5491 	lpStruct->cyIntegral = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral);
5492 	lpStruct->cxIdeal = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal);
5493 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, REBARBANDINFOFc.lParam);
5494 	lpStruct->cxHeader = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxHeader);
5495 	return lpStruct;
5496 }
5497 
setREBARBANDINFOFields(JNIEnv * env,jobject lpObject,REBARBANDINFO * lpStruct)5498 void setREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)
5499 {
5500 	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);
5501 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cbSize, (jint)lpStruct->cbSize);
5502 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fMask, (jint)lpStruct->fMask);
5503 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fStyle, (jint)lpStruct->fStyle);
5504 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrFore, (jint)lpStruct->clrFore);
5505 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrBack, (jint)lpStruct->clrBack);
5506 	(*env)->SetLongField(env, lpObject, REBARBANDINFOFc.lpText, (jlong)lpStruct->lpText);
5507 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cch, (jint)lpStruct->cch);
5508 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.iImage, (jint)lpStruct->iImage);
5509 	(*env)->SetLongField(env, lpObject, REBARBANDINFOFc.hwndChild, (jlong)lpStruct->hwndChild);
5510 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild, (jint)lpStruct->cxMinChild);
5511 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild, (jint)lpStruct->cyMinChild);
5512 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cx, (jint)lpStruct->cx);
5513 	(*env)->SetLongField(env, lpObject, REBARBANDINFOFc.hbmBack, (jlong)lpStruct->hbmBack);
5514 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.wID, (jint)lpStruct->wID);
5515 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyChild, (jint)lpStruct->cyChild);
5516 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild, (jint)lpStruct->cyMaxChild);
5517 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral, (jint)lpStruct->cyIntegral);
5518 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal, (jint)lpStruct->cxIdeal);
5519 	(*env)->SetLongField(env, lpObject, REBARBANDINFOFc.lParam, (jlong)lpStruct->lParam);
5520 	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxHeader, (jint)lpStruct->cxHeader);
5521 }
5522 #endif
5523 
5524 #ifndef NO_RECT
5525 typedef struct RECT_FID_CACHE {
5526 	int cached;
5527 	jclass clazz;
5528 	jfieldID left, top, right, bottom;
5529 } RECT_FID_CACHE;
5530 
5531 RECT_FID_CACHE RECTFc;
5532 
cacheRECTFields(JNIEnv * env,jobject lpObject)5533 void cacheRECTFields(JNIEnv *env, jobject lpObject)
5534 {
5535 	if (RECTFc.cached) return;
5536 	RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);
5537 	RECTFc.left = (*env)->GetFieldID(env, RECTFc.clazz, "left", "I");
5538 	RECTFc.top = (*env)->GetFieldID(env, RECTFc.clazz, "top", "I");
5539 	RECTFc.right = (*env)->GetFieldID(env, RECTFc.clazz, "right", "I");
5540 	RECTFc.bottom = (*env)->GetFieldID(env, RECTFc.clazz, "bottom", "I");
5541 	RECTFc.cached = 1;
5542 }
5543 
getRECTFields(JNIEnv * env,jobject lpObject,RECT * lpStruct)5544 RECT *getRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)
5545 {
5546 	if (!RECTFc.cached) cacheRECTFields(env, lpObject);
5547 	lpStruct->left = (*env)->GetIntField(env, lpObject, RECTFc.left);
5548 	lpStruct->top = (*env)->GetIntField(env, lpObject, RECTFc.top);
5549 	lpStruct->right = (*env)->GetIntField(env, lpObject, RECTFc.right);
5550 	lpStruct->bottom = (*env)->GetIntField(env, lpObject, RECTFc.bottom);
5551 	return lpStruct;
5552 }
5553 
setRECTFields(JNIEnv * env,jobject lpObject,RECT * lpStruct)5554 void setRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)
5555 {
5556 	if (!RECTFc.cached) cacheRECTFields(env, lpObject);
5557 	(*env)->SetIntField(env, lpObject, RECTFc.left, (jint)lpStruct->left);
5558 	(*env)->SetIntField(env, lpObject, RECTFc.top, (jint)lpStruct->top);
5559 	(*env)->SetIntField(env, lpObject, RECTFc.right, (jint)lpStruct->right);
5560 	(*env)->SetIntField(env, lpObject, RECTFc.bottom, (jint)lpStruct->bottom);
5561 }
5562 #endif
5563 
5564 #ifndef NO_SAFEARRAY
5565 typedef struct SAFEARRAY_FID_CACHE {
5566 	int cached;
5567 	jclass clazz;
5568 	jfieldID cDims, fFeatures, cbElements, cLocks, pvData, rgsabound;
5569 } SAFEARRAY_FID_CACHE;
5570 
5571 SAFEARRAY_FID_CACHE SAFEARRAYFc;
5572 
cacheSAFEARRAYFields(JNIEnv * env,jobject lpObject)5573 void cacheSAFEARRAYFields(JNIEnv *env, jobject lpObject)
5574 {
5575 	if (SAFEARRAYFc.cached) return;
5576 	SAFEARRAYFc.clazz = (*env)->GetObjectClass(env, lpObject);
5577 	SAFEARRAYFc.cDims = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "cDims", "S");
5578 	SAFEARRAYFc.fFeatures = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "fFeatures", "S");
5579 	SAFEARRAYFc.cbElements = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "cbElements", "I");
5580 	SAFEARRAYFc.cLocks = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "cLocks", "I");
5581 	SAFEARRAYFc.pvData = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "pvData", "J");
5582 	SAFEARRAYFc.rgsabound = (*env)->GetFieldID(env, SAFEARRAYFc.clazz, "rgsabound", "Lorg/eclipse/swt/internal/win32/SAFEARRAYBOUND;");
5583 	SAFEARRAYFc.cached = 1;
5584 }
5585 
getSAFEARRAYFields(JNIEnv * env,jobject lpObject,SAFEARRAY * lpStruct)5586 SAFEARRAY *getSAFEARRAYFields(JNIEnv *env, jobject lpObject, SAFEARRAY *lpStruct)
5587 {
5588 	if (!SAFEARRAYFc.cached) cacheSAFEARRAYFields(env, lpObject);
5589 	lpStruct->cDims = (*env)->GetShortField(env, lpObject, SAFEARRAYFc.cDims);
5590 	lpStruct->fFeatures = (*env)->GetShortField(env, lpObject, SAFEARRAYFc.fFeatures);
5591 	lpStruct->cbElements = (*env)->GetIntField(env, lpObject, SAFEARRAYFc.cbElements);
5592 	lpStruct->cLocks = (*env)->GetIntField(env, lpObject, SAFEARRAYFc.cLocks);
5593 	lpStruct->pvData = (PVOID)(*env)->GetLongField(env, lpObject, SAFEARRAYFc.pvData);
5594 	{
5595 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SAFEARRAYFc.rgsabound);
5596 	if (lpObject1 != NULL) getSAFEARRAYBOUNDFields(env, lpObject1, &lpStruct->rgsabound[0]);
5597 	}
5598 	return lpStruct;
5599 }
5600 
setSAFEARRAYFields(JNIEnv * env,jobject lpObject,SAFEARRAY * lpStruct)5601 void setSAFEARRAYFields(JNIEnv *env, jobject lpObject, SAFEARRAY *lpStruct)
5602 {
5603 	if (!SAFEARRAYFc.cached) cacheSAFEARRAYFields(env, lpObject);
5604 	(*env)->SetShortField(env, lpObject, SAFEARRAYFc.cDims, (jshort)lpStruct->cDims);
5605 	(*env)->SetShortField(env, lpObject, SAFEARRAYFc.fFeatures, (jshort)lpStruct->fFeatures);
5606 	(*env)->SetIntField(env, lpObject, SAFEARRAYFc.cbElements, (jint)lpStruct->cbElements);
5607 	(*env)->SetIntField(env, lpObject, SAFEARRAYFc.cLocks, (jint)lpStruct->cLocks);
5608 	(*env)->SetLongField(env, lpObject, SAFEARRAYFc.pvData, (jlong)lpStruct->pvData);
5609 	{
5610 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SAFEARRAYFc.rgsabound);
5611 	if (lpObject1 != NULL) setSAFEARRAYBOUNDFields(env, lpObject1, &lpStruct->rgsabound[0]);
5612 	}
5613 }
5614 #endif
5615 
5616 #ifndef NO_SAFEARRAYBOUND
5617 typedef struct SAFEARRAYBOUND_FID_CACHE {
5618 	int cached;
5619 	jclass clazz;
5620 	jfieldID cElements, lLbound;
5621 } SAFEARRAYBOUND_FID_CACHE;
5622 
5623 SAFEARRAYBOUND_FID_CACHE SAFEARRAYBOUNDFc;
5624 
cacheSAFEARRAYBOUNDFields(JNIEnv * env,jobject lpObject)5625 void cacheSAFEARRAYBOUNDFields(JNIEnv *env, jobject lpObject)
5626 {
5627 	if (SAFEARRAYBOUNDFc.cached) return;
5628 	SAFEARRAYBOUNDFc.clazz = (*env)->GetObjectClass(env, lpObject);
5629 	SAFEARRAYBOUNDFc.cElements = (*env)->GetFieldID(env, SAFEARRAYBOUNDFc.clazz, "cElements", "I");
5630 	SAFEARRAYBOUNDFc.lLbound = (*env)->GetFieldID(env, SAFEARRAYBOUNDFc.clazz, "lLbound", "I");
5631 	SAFEARRAYBOUNDFc.cached = 1;
5632 }
5633 
getSAFEARRAYBOUNDFields(JNIEnv * env,jobject lpObject,SAFEARRAYBOUND * lpStruct)5634 SAFEARRAYBOUND *getSAFEARRAYBOUNDFields(JNIEnv *env, jobject lpObject, SAFEARRAYBOUND *lpStruct)
5635 {
5636 	if (!SAFEARRAYBOUNDFc.cached) cacheSAFEARRAYBOUNDFields(env, lpObject);
5637 	lpStruct->cElements = (*env)->GetIntField(env, lpObject, SAFEARRAYBOUNDFc.cElements);
5638 	lpStruct->lLbound = (*env)->GetIntField(env, lpObject, SAFEARRAYBOUNDFc.lLbound);
5639 	return lpStruct;
5640 }
5641 
setSAFEARRAYBOUNDFields(JNIEnv * env,jobject lpObject,SAFEARRAYBOUND * lpStruct)5642 void setSAFEARRAYBOUNDFields(JNIEnv *env, jobject lpObject, SAFEARRAYBOUND *lpStruct)
5643 {
5644 	if (!SAFEARRAYBOUNDFc.cached) cacheSAFEARRAYBOUNDFields(env, lpObject);
5645 	(*env)->SetIntField(env, lpObject, SAFEARRAYBOUNDFc.cElements, (jint)lpStruct->cElements);
5646 	(*env)->SetIntField(env, lpObject, SAFEARRAYBOUNDFc.lLbound, (jint)lpStruct->lLbound);
5647 }
5648 #endif
5649 
5650 #ifndef NO_SCRIPT_ANALYSIS
5651 typedef struct SCRIPT_ANALYSIS_FID_CACHE {
5652 	int cached;
5653 	jclass clazz;
5654 	jfieldID eScript, fRTL, fLayoutRTL, fLinkBefore, fLinkAfter, fLogicalOrder, fNoGlyphIndex, s;
5655 } SCRIPT_ANALYSIS_FID_CACHE;
5656 
5657 SCRIPT_ANALYSIS_FID_CACHE SCRIPT_ANALYSISFc;
5658 
cacheSCRIPT_ANALYSISFields(JNIEnv * env,jobject lpObject)5659 void cacheSCRIPT_ANALYSISFields(JNIEnv *env, jobject lpObject)
5660 {
5661 	if (SCRIPT_ANALYSISFc.cached) return;
5662 	SCRIPT_ANALYSISFc.clazz = (*env)->GetObjectClass(env, lpObject);
5663 	SCRIPT_ANALYSISFc.eScript = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "eScript", "S");
5664 	SCRIPT_ANALYSISFc.fRTL = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fRTL", "Z");
5665 	SCRIPT_ANALYSISFc.fLayoutRTL = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fLayoutRTL", "Z");
5666 	SCRIPT_ANALYSISFc.fLinkBefore = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fLinkBefore", "Z");
5667 	SCRIPT_ANALYSISFc.fLinkAfter = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fLinkAfter", "Z");
5668 	SCRIPT_ANALYSISFc.fLogicalOrder = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fLogicalOrder", "Z");
5669 	SCRIPT_ANALYSISFc.fNoGlyphIndex = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "fNoGlyphIndex", "Z");
5670 	SCRIPT_ANALYSISFc.s = (*env)->GetFieldID(env, SCRIPT_ANALYSISFc.clazz, "s", "Lorg/eclipse/swt/internal/win32/SCRIPT_STATE;");
5671 	SCRIPT_ANALYSISFc.cached = 1;
5672 }
5673 
getSCRIPT_ANALYSISFields(JNIEnv * env,jobject lpObject,SCRIPT_ANALYSIS * lpStruct)5674 SCRIPT_ANALYSIS *getSCRIPT_ANALYSISFields(JNIEnv *env, jobject lpObject, SCRIPT_ANALYSIS *lpStruct)
5675 {
5676 	if (!SCRIPT_ANALYSISFc.cached) cacheSCRIPT_ANALYSISFields(env, lpObject);
5677 	lpStruct->eScript = (*env)->GetShortField(env, lpObject, SCRIPT_ANALYSISFc.eScript);
5678 	lpStruct->fRTL = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fRTL);
5679 	lpStruct->fLayoutRTL = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLayoutRTL);
5680 	lpStruct->fLinkBefore = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLinkBefore);
5681 	lpStruct->fLinkAfter = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLinkAfter);
5682 	lpStruct->fLogicalOrder = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLogicalOrder);
5683 	lpStruct->fNoGlyphIndex = (*env)->GetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fNoGlyphIndex);
5684 	{
5685 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCRIPT_ANALYSISFc.s);
5686 	if (lpObject1 != NULL) getSCRIPT_STATEFields(env, lpObject1, &lpStruct->s);
5687 	}
5688 	return lpStruct;
5689 }
5690 
setSCRIPT_ANALYSISFields(JNIEnv * env,jobject lpObject,SCRIPT_ANALYSIS * lpStruct)5691 void setSCRIPT_ANALYSISFields(JNIEnv *env, jobject lpObject, SCRIPT_ANALYSIS *lpStruct)
5692 {
5693 	if (!SCRIPT_ANALYSISFc.cached) cacheSCRIPT_ANALYSISFields(env, lpObject);
5694 	(*env)->SetShortField(env, lpObject, SCRIPT_ANALYSISFc.eScript, (jshort)lpStruct->eScript);
5695 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fRTL, (jboolean)lpStruct->fRTL);
5696 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLayoutRTL, (jboolean)lpStruct->fLayoutRTL);
5697 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLinkBefore, (jboolean)lpStruct->fLinkBefore);
5698 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLinkAfter, (jboolean)lpStruct->fLinkAfter);
5699 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fLogicalOrder, (jboolean)lpStruct->fLogicalOrder);
5700 	(*env)->SetBooleanField(env, lpObject, SCRIPT_ANALYSISFc.fNoGlyphIndex, (jboolean)lpStruct->fNoGlyphIndex);
5701 	{
5702 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCRIPT_ANALYSISFc.s);
5703 	if (lpObject1 != NULL) setSCRIPT_STATEFields(env, lpObject1, &lpStruct->s);
5704 	}
5705 }
5706 #endif
5707 
5708 #ifndef NO_SCRIPT_CONTROL
5709 typedef struct SCRIPT_CONTROL_FID_CACHE {
5710 	int cached;
5711 	jclass clazz;
5712 	jfieldID uDefaultLanguage, fContextDigits, fInvertPreBoundDir, fInvertPostBoundDir, fLinkStringBefore, fLinkStringAfter, fNeutralOverride, fNumericOverride, fLegacyBidiClass, fMergeNeutralItems, fUseStandardBidi, fReserved;
5713 } SCRIPT_CONTROL_FID_CACHE;
5714 
5715 SCRIPT_CONTROL_FID_CACHE SCRIPT_CONTROLFc;
5716 
cacheSCRIPT_CONTROLFields(JNIEnv * env,jobject lpObject)5717 void cacheSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject)
5718 {
5719 	if (SCRIPT_CONTROLFc.cached) return;
5720 	SCRIPT_CONTROLFc.clazz = (*env)->GetObjectClass(env, lpObject);
5721 	SCRIPT_CONTROLFc.uDefaultLanguage = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "uDefaultLanguage", "I");
5722 	SCRIPT_CONTROLFc.fContextDigits = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fContextDigits", "Z");
5723 	SCRIPT_CONTROLFc.fInvertPreBoundDir = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fInvertPreBoundDir", "Z");
5724 	SCRIPT_CONTROLFc.fInvertPostBoundDir = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fInvertPostBoundDir", "Z");
5725 	SCRIPT_CONTROLFc.fLinkStringBefore = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fLinkStringBefore", "Z");
5726 	SCRIPT_CONTROLFc.fLinkStringAfter = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fLinkStringAfter", "Z");
5727 	SCRIPT_CONTROLFc.fNeutralOverride = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fNeutralOverride", "Z");
5728 	SCRIPT_CONTROLFc.fNumericOverride = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fNumericOverride", "Z");
5729 	SCRIPT_CONTROLFc.fLegacyBidiClass = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fLegacyBidiClass", "Z");
5730 	SCRIPT_CONTROLFc.fMergeNeutralItems = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fMergeNeutralItems", "Z");
5731 	SCRIPT_CONTROLFc.fUseStandardBidi = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fUseStandardBidi", "Z");
5732 	SCRIPT_CONTROLFc.fReserved = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fReserved", "I");
5733 	SCRIPT_CONTROLFc.cached = 1;
5734 }
5735 
getSCRIPT_CONTROLFields(JNIEnv * env,jobject lpObject,SCRIPT_CONTROL * lpStruct)5736 SCRIPT_CONTROL *getSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject, SCRIPT_CONTROL *lpStruct)
5737 {
5738 	if (!SCRIPT_CONTROLFc.cached) cacheSCRIPT_CONTROLFields(env, lpObject);
5739 	lpStruct->uDefaultLanguage = (*env)->GetIntField(env, lpObject, SCRIPT_CONTROLFc.uDefaultLanguage);
5740 	lpStruct->fContextDigits = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fContextDigits);
5741 	lpStruct->fInvertPreBoundDir = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fInvertPreBoundDir);
5742 	lpStruct->fInvertPostBoundDir = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fInvertPostBoundDir);
5743 	lpStruct->fLinkStringBefore = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLinkStringBefore);
5744 	lpStruct->fLinkStringAfter = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLinkStringAfter);
5745 	lpStruct->fNeutralOverride = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNeutralOverride);
5746 	lpStruct->fNumericOverride = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNumericOverride);
5747 	lpStruct->fLegacyBidiClass = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLegacyBidiClass);
5748 	lpStruct->fMergeNeutralItems = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fMergeNeutralItems);
5749 	lpStruct->fUseStandardBidi = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fUseStandardBidi);
5750 	lpStruct->fReserved = (*env)->GetIntField(env, lpObject, SCRIPT_CONTROLFc.fReserved);
5751 	return lpStruct;
5752 }
5753 
setSCRIPT_CONTROLFields(JNIEnv * env,jobject lpObject,SCRIPT_CONTROL * lpStruct)5754 void setSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject, SCRIPT_CONTROL *lpStruct)
5755 {
5756 	if (!SCRIPT_CONTROLFc.cached) cacheSCRIPT_CONTROLFields(env, lpObject);
5757 	(*env)->SetIntField(env, lpObject, SCRIPT_CONTROLFc.uDefaultLanguage, (jint)lpStruct->uDefaultLanguage);
5758 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fContextDigits, (jboolean)lpStruct->fContextDigits);
5759 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fInvertPreBoundDir, (jboolean)lpStruct->fInvertPreBoundDir);
5760 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fInvertPostBoundDir, (jboolean)lpStruct->fInvertPostBoundDir);
5761 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLinkStringBefore, (jboolean)lpStruct->fLinkStringBefore);
5762 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLinkStringAfter, (jboolean)lpStruct->fLinkStringAfter);
5763 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNeutralOverride, (jboolean)lpStruct->fNeutralOverride);
5764 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNumericOverride, (jboolean)lpStruct->fNumericOverride);
5765 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLegacyBidiClass, (jboolean)lpStruct->fLegacyBidiClass);
5766 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fMergeNeutralItems, (jboolean)lpStruct->fMergeNeutralItems);
5767 	(*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fUseStandardBidi, (jboolean)lpStruct->fUseStandardBidi);
5768 	(*env)->SetIntField(env, lpObject, SCRIPT_CONTROLFc.fReserved, (jint)lpStruct->fReserved);
5769 }
5770 #endif
5771 
5772 #ifndef NO_SCRIPT_DIGITSUBSTITUTE
5773 typedef struct SCRIPT_DIGITSUBSTITUTE_FID_CACHE {
5774 	int cached;
5775 	jclass clazz;
5776 	jfieldID NationalDigitLanguage, TraditionalDigitLanguage, DigitSubstitute, dwReserved;
5777 } SCRIPT_DIGITSUBSTITUTE_FID_CACHE;
5778 
5779 SCRIPT_DIGITSUBSTITUTE_FID_CACHE SCRIPT_DIGITSUBSTITUTEFc;
5780 
cacheSCRIPT_DIGITSUBSTITUTEFields(JNIEnv * env,jobject lpObject)5781 void cacheSCRIPT_DIGITSUBSTITUTEFields(JNIEnv *env, jobject lpObject)
5782 {
5783 	if (SCRIPT_DIGITSUBSTITUTEFc.cached) return;
5784 	SCRIPT_DIGITSUBSTITUTEFc.clazz = (*env)->GetObjectClass(env, lpObject);
5785 	SCRIPT_DIGITSUBSTITUTEFc.NationalDigitLanguage = (*env)->GetFieldID(env, SCRIPT_DIGITSUBSTITUTEFc.clazz, "NationalDigitLanguage", "S");
5786 	SCRIPT_DIGITSUBSTITUTEFc.TraditionalDigitLanguage = (*env)->GetFieldID(env, SCRIPT_DIGITSUBSTITUTEFc.clazz, "TraditionalDigitLanguage", "S");
5787 	SCRIPT_DIGITSUBSTITUTEFc.DigitSubstitute = (*env)->GetFieldID(env, SCRIPT_DIGITSUBSTITUTEFc.clazz, "DigitSubstitute", "B");
5788 	SCRIPT_DIGITSUBSTITUTEFc.dwReserved = (*env)->GetFieldID(env, SCRIPT_DIGITSUBSTITUTEFc.clazz, "dwReserved", "I");
5789 	SCRIPT_DIGITSUBSTITUTEFc.cached = 1;
5790 }
5791 
getSCRIPT_DIGITSUBSTITUTEFields(JNIEnv * env,jobject lpObject,SCRIPT_DIGITSUBSTITUTE * lpStruct)5792 SCRIPT_DIGITSUBSTITUTE *getSCRIPT_DIGITSUBSTITUTEFields(JNIEnv *env, jobject lpObject, SCRIPT_DIGITSUBSTITUTE *lpStruct)
5793 {
5794 	if (!SCRIPT_DIGITSUBSTITUTEFc.cached) cacheSCRIPT_DIGITSUBSTITUTEFields(env, lpObject);
5795 	lpStruct->NationalDigitLanguage = (*env)->GetShortField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.NationalDigitLanguage);
5796 	lpStruct->TraditionalDigitLanguage = (*env)->GetShortField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.TraditionalDigitLanguage);
5797 	lpStruct->DigitSubstitute = (*env)->GetByteField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.DigitSubstitute);
5798 	lpStruct->dwReserved = (*env)->GetIntField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.dwReserved);
5799 	return lpStruct;
5800 }
5801 
setSCRIPT_DIGITSUBSTITUTEFields(JNIEnv * env,jobject lpObject,SCRIPT_DIGITSUBSTITUTE * lpStruct)5802 void setSCRIPT_DIGITSUBSTITUTEFields(JNIEnv *env, jobject lpObject, SCRIPT_DIGITSUBSTITUTE *lpStruct)
5803 {
5804 	if (!SCRIPT_DIGITSUBSTITUTEFc.cached) cacheSCRIPT_DIGITSUBSTITUTEFields(env, lpObject);
5805 	(*env)->SetShortField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.NationalDigitLanguage, (jshort)lpStruct->NationalDigitLanguage);
5806 	(*env)->SetShortField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.TraditionalDigitLanguage, (jshort)lpStruct->TraditionalDigitLanguage);
5807 	(*env)->SetByteField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.DigitSubstitute, (jbyte)lpStruct->DigitSubstitute);
5808 	(*env)->SetIntField(env, lpObject, SCRIPT_DIGITSUBSTITUTEFc.dwReserved, (jint)lpStruct->dwReserved);
5809 }
5810 #endif
5811 
5812 #ifndef NO_SCRIPT_FONTPROPERTIES
5813 typedef struct SCRIPT_FONTPROPERTIES_FID_CACHE {
5814 	int cached;
5815 	jclass clazz;
5816 	jfieldID cBytes, wgBlank, wgDefault, wgInvalid, wgKashida, iKashidaWidth;
5817 } SCRIPT_FONTPROPERTIES_FID_CACHE;
5818 
5819 SCRIPT_FONTPROPERTIES_FID_CACHE SCRIPT_FONTPROPERTIESFc;
5820 
cacheSCRIPT_FONTPROPERTIESFields(JNIEnv * env,jobject lpObject)5821 void cacheSCRIPT_FONTPROPERTIESFields(JNIEnv *env, jobject lpObject)
5822 {
5823 	if (SCRIPT_FONTPROPERTIESFc.cached) return;
5824 	SCRIPT_FONTPROPERTIESFc.clazz = (*env)->GetObjectClass(env, lpObject);
5825 	SCRIPT_FONTPROPERTIESFc.cBytes = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "cBytes", "I");
5826 	SCRIPT_FONTPROPERTIESFc.wgBlank = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "wgBlank", "S");
5827 	SCRIPT_FONTPROPERTIESFc.wgDefault = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "wgDefault", "S");
5828 	SCRIPT_FONTPROPERTIESFc.wgInvalid = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "wgInvalid", "S");
5829 	SCRIPT_FONTPROPERTIESFc.wgKashida = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "wgKashida", "S");
5830 	SCRIPT_FONTPROPERTIESFc.iKashidaWidth = (*env)->GetFieldID(env, SCRIPT_FONTPROPERTIESFc.clazz, "iKashidaWidth", "I");
5831 	SCRIPT_FONTPROPERTIESFc.cached = 1;
5832 }
5833 
getSCRIPT_FONTPROPERTIESFields(JNIEnv * env,jobject lpObject,SCRIPT_FONTPROPERTIES * lpStruct)5834 SCRIPT_FONTPROPERTIES *getSCRIPT_FONTPROPERTIESFields(JNIEnv *env, jobject lpObject, SCRIPT_FONTPROPERTIES *lpStruct)
5835 {
5836 	if (!SCRIPT_FONTPROPERTIESFc.cached) cacheSCRIPT_FONTPROPERTIESFields(env, lpObject);
5837 	lpStruct->cBytes = (*env)->GetIntField(env, lpObject, SCRIPT_FONTPROPERTIESFc.cBytes);
5838 	lpStruct->wgBlank = (*env)->GetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgBlank);
5839 	lpStruct->wgDefault = (*env)->GetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgDefault);
5840 	lpStruct->wgInvalid = (*env)->GetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgInvalid);
5841 	lpStruct->wgKashida = (*env)->GetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgKashida);
5842 	lpStruct->iKashidaWidth = (*env)->GetIntField(env, lpObject, SCRIPT_FONTPROPERTIESFc.iKashidaWidth);
5843 	return lpStruct;
5844 }
5845 
setSCRIPT_FONTPROPERTIESFields(JNIEnv * env,jobject lpObject,SCRIPT_FONTPROPERTIES * lpStruct)5846 void setSCRIPT_FONTPROPERTIESFields(JNIEnv *env, jobject lpObject, SCRIPT_FONTPROPERTIES *lpStruct)
5847 {
5848 	if (!SCRIPT_FONTPROPERTIESFc.cached) cacheSCRIPT_FONTPROPERTIESFields(env, lpObject);
5849 	(*env)->SetIntField(env, lpObject, SCRIPT_FONTPROPERTIESFc.cBytes, (jint)lpStruct->cBytes);
5850 	(*env)->SetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgBlank, (jshort)lpStruct->wgBlank);
5851 	(*env)->SetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgDefault, (jshort)lpStruct->wgDefault);
5852 	(*env)->SetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgInvalid, (jshort)lpStruct->wgInvalid);
5853 	(*env)->SetShortField(env, lpObject, SCRIPT_FONTPROPERTIESFc.wgKashida, (jshort)lpStruct->wgKashida);
5854 	(*env)->SetIntField(env, lpObject, SCRIPT_FONTPROPERTIESFc.iKashidaWidth, (jint)lpStruct->iKashidaWidth);
5855 }
5856 #endif
5857 
5858 #ifndef NO_SCRIPT_ITEM
5859 typedef struct SCRIPT_ITEM_FID_CACHE {
5860 	int cached;
5861 	jclass clazz;
5862 	jfieldID iCharPos, a;
5863 } SCRIPT_ITEM_FID_CACHE;
5864 
5865 SCRIPT_ITEM_FID_CACHE SCRIPT_ITEMFc;
5866 
cacheSCRIPT_ITEMFields(JNIEnv * env,jobject lpObject)5867 void cacheSCRIPT_ITEMFields(JNIEnv *env, jobject lpObject)
5868 {
5869 	if (SCRIPT_ITEMFc.cached) return;
5870 	SCRIPT_ITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
5871 	SCRIPT_ITEMFc.iCharPos = (*env)->GetFieldID(env, SCRIPT_ITEMFc.clazz, "iCharPos", "I");
5872 	SCRIPT_ITEMFc.a = (*env)->GetFieldID(env, SCRIPT_ITEMFc.clazz, "a", "Lorg/eclipse/swt/internal/win32/SCRIPT_ANALYSIS;");
5873 	SCRIPT_ITEMFc.cached = 1;
5874 }
5875 
getSCRIPT_ITEMFields(JNIEnv * env,jobject lpObject,SCRIPT_ITEM * lpStruct)5876 SCRIPT_ITEM *getSCRIPT_ITEMFields(JNIEnv *env, jobject lpObject, SCRIPT_ITEM *lpStruct)
5877 {
5878 	if (!SCRIPT_ITEMFc.cached) cacheSCRIPT_ITEMFields(env, lpObject);
5879 	lpStruct->iCharPos = (*env)->GetIntField(env, lpObject, SCRIPT_ITEMFc.iCharPos);
5880 	{
5881 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCRIPT_ITEMFc.a);
5882 	if (lpObject1 != NULL) getSCRIPT_ANALYSISFields(env, lpObject1, &lpStruct->a);
5883 	}
5884 	return lpStruct;
5885 }
5886 
setSCRIPT_ITEMFields(JNIEnv * env,jobject lpObject,SCRIPT_ITEM * lpStruct)5887 void setSCRIPT_ITEMFields(JNIEnv *env, jobject lpObject, SCRIPT_ITEM *lpStruct)
5888 {
5889 	if (!SCRIPT_ITEMFc.cached) cacheSCRIPT_ITEMFields(env, lpObject);
5890 	(*env)->SetIntField(env, lpObject, SCRIPT_ITEMFc.iCharPos, (jint)lpStruct->iCharPos);
5891 	{
5892 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCRIPT_ITEMFc.a);
5893 	if (lpObject1 != NULL) setSCRIPT_ANALYSISFields(env, lpObject1, &lpStruct->a);
5894 	}
5895 }
5896 #endif
5897 
5898 #ifndef NO_SCRIPT_LOGATTR
5899 typedef struct SCRIPT_LOGATTR_FID_CACHE {
5900 	int cached;
5901 	jclass clazz;
5902 	jfieldID fSoftBreak, fWhiteSpace, fCharStop, fWordStop, fInvalid, fReserved;
5903 } SCRIPT_LOGATTR_FID_CACHE;
5904 
5905 SCRIPT_LOGATTR_FID_CACHE SCRIPT_LOGATTRFc;
5906 
cacheSCRIPT_LOGATTRFields(JNIEnv * env,jobject lpObject)5907 void cacheSCRIPT_LOGATTRFields(JNIEnv *env, jobject lpObject)
5908 {
5909 	if (SCRIPT_LOGATTRFc.cached) return;
5910 	SCRIPT_LOGATTRFc.clazz = (*env)->GetObjectClass(env, lpObject);
5911 	SCRIPT_LOGATTRFc.fSoftBreak = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fSoftBreak", "Z");
5912 	SCRIPT_LOGATTRFc.fWhiteSpace = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fWhiteSpace", "Z");
5913 	SCRIPT_LOGATTRFc.fCharStop = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fCharStop", "Z");
5914 	SCRIPT_LOGATTRFc.fWordStop = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fWordStop", "Z");
5915 	SCRIPT_LOGATTRFc.fInvalid = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fInvalid", "Z");
5916 	SCRIPT_LOGATTRFc.fReserved = (*env)->GetFieldID(env, SCRIPT_LOGATTRFc.clazz, "fReserved", "B");
5917 	SCRIPT_LOGATTRFc.cached = 1;
5918 }
5919 
getSCRIPT_LOGATTRFields(JNIEnv * env,jobject lpObject,SCRIPT_LOGATTR * lpStruct)5920 SCRIPT_LOGATTR *getSCRIPT_LOGATTRFields(JNIEnv *env, jobject lpObject, SCRIPT_LOGATTR *lpStruct)
5921 {
5922 	if (!SCRIPT_LOGATTRFc.cached) cacheSCRIPT_LOGATTRFields(env, lpObject);
5923 	lpStruct->fSoftBreak = (*env)->GetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fSoftBreak);
5924 	lpStruct->fWhiteSpace = (*env)->GetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fWhiteSpace);
5925 	lpStruct->fCharStop = (*env)->GetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fCharStop);
5926 	lpStruct->fWordStop = (*env)->GetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fWordStop);
5927 	lpStruct->fInvalid = (*env)->GetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fInvalid);
5928 	lpStruct->fReserved = (*env)->GetByteField(env, lpObject, SCRIPT_LOGATTRFc.fReserved);
5929 	return lpStruct;
5930 }
5931 
setSCRIPT_LOGATTRFields(JNIEnv * env,jobject lpObject,SCRIPT_LOGATTR * lpStruct)5932 void setSCRIPT_LOGATTRFields(JNIEnv *env, jobject lpObject, SCRIPT_LOGATTR *lpStruct)
5933 {
5934 	if (!SCRIPT_LOGATTRFc.cached) cacheSCRIPT_LOGATTRFields(env, lpObject);
5935 	(*env)->SetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fSoftBreak, (jboolean)lpStruct->fSoftBreak);
5936 	(*env)->SetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fWhiteSpace, (jboolean)lpStruct->fWhiteSpace);
5937 	(*env)->SetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fCharStop, (jboolean)lpStruct->fCharStop);
5938 	(*env)->SetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fWordStop, (jboolean)lpStruct->fWordStop);
5939 	(*env)->SetBooleanField(env, lpObject, SCRIPT_LOGATTRFc.fInvalid, (jboolean)lpStruct->fInvalid);
5940 	(*env)->SetByteField(env, lpObject, SCRIPT_LOGATTRFc.fReserved, (jbyte)lpStruct->fReserved);
5941 }
5942 #endif
5943 
5944 #ifndef NO_SCRIPT_PROPERTIES
5945 typedef struct SCRIPT_PROPERTIES_FID_CACHE {
5946 	int cached;
5947 	jclass clazz;
5948 	jfieldID langid, fNumeric, fComplex, fNeedsWordBreaking, fNeedsCaretInfo, bCharSet, fControl, fPrivateUseArea, fNeedsCharacterJustify, fInvalidGlyph, fInvalidLogAttr, fCDM, fAmbiguousCharSet, fClusterSizeVaries, fRejectInvalid;
5949 } SCRIPT_PROPERTIES_FID_CACHE;
5950 
5951 SCRIPT_PROPERTIES_FID_CACHE SCRIPT_PROPERTIESFc;
5952 
cacheSCRIPT_PROPERTIESFields(JNIEnv * env,jobject lpObject)5953 void cacheSCRIPT_PROPERTIESFields(JNIEnv *env, jobject lpObject)
5954 {
5955 	if (SCRIPT_PROPERTIESFc.cached) return;
5956 	SCRIPT_PROPERTIESFc.clazz = (*env)->GetObjectClass(env, lpObject);
5957 	SCRIPT_PROPERTIESFc.langid = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "langid", "S");
5958 	SCRIPT_PROPERTIESFc.fNumeric = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fNumeric", "Z");
5959 	SCRIPT_PROPERTIESFc.fComplex = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fComplex", "Z");
5960 	SCRIPT_PROPERTIESFc.fNeedsWordBreaking = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fNeedsWordBreaking", "Z");
5961 	SCRIPT_PROPERTIESFc.fNeedsCaretInfo = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fNeedsCaretInfo", "Z");
5962 	SCRIPT_PROPERTIESFc.bCharSet = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "bCharSet", "B");
5963 	SCRIPT_PROPERTIESFc.fControl = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fControl", "Z");
5964 	SCRIPT_PROPERTIESFc.fPrivateUseArea = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fPrivateUseArea", "Z");
5965 	SCRIPT_PROPERTIESFc.fNeedsCharacterJustify = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fNeedsCharacterJustify", "Z");
5966 	SCRIPT_PROPERTIESFc.fInvalidGlyph = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fInvalidGlyph", "Z");
5967 	SCRIPT_PROPERTIESFc.fInvalidLogAttr = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fInvalidLogAttr", "Z");
5968 	SCRIPT_PROPERTIESFc.fCDM = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fCDM", "Z");
5969 	SCRIPT_PROPERTIESFc.fAmbiguousCharSet = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fAmbiguousCharSet", "Z");
5970 	SCRIPT_PROPERTIESFc.fClusterSizeVaries = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fClusterSizeVaries", "Z");
5971 	SCRIPT_PROPERTIESFc.fRejectInvalid = (*env)->GetFieldID(env, SCRIPT_PROPERTIESFc.clazz, "fRejectInvalid", "Z");
5972 	SCRIPT_PROPERTIESFc.cached = 1;
5973 }
5974 
getSCRIPT_PROPERTIESFields(JNIEnv * env,jobject lpObject,SCRIPT_PROPERTIES * lpStruct)5975 SCRIPT_PROPERTIES *getSCRIPT_PROPERTIESFields(JNIEnv *env, jobject lpObject, SCRIPT_PROPERTIES *lpStruct)
5976 {
5977 	if (!SCRIPT_PROPERTIESFc.cached) cacheSCRIPT_PROPERTIESFields(env, lpObject);
5978 	lpStruct->langid = (*env)->GetShortField(env, lpObject, SCRIPT_PROPERTIESFc.langid);
5979 	lpStruct->fNumeric = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNumeric);
5980 	lpStruct->fComplex = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fComplex);
5981 	lpStruct->fNeedsWordBreaking = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsWordBreaking);
5982 	lpStruct->fNeedsCaretInfo = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsCaretInfo);
5983 	lpStruct->bCharSet = (*env)->GetByteField(env, lpObject, SCRIPT_PROPERTIESFc.bCharSet);
5984 	lpStruct->fControl = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fControl);
5985 	lpStruct->fPrivateUseArea = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fPrivateUseArea);
5986 	lpStruct->fNeedsCharacterJustify = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsCharacterJustify);
5987 	lpStruct->fInvalidGlyph = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fInvalidGlyph);
5988 	lpStruct->fInvalidLogAttr = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fInvalidLogAttr);
5989 	lpStruct->fCDM = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fCDM);
5990 	lpStruct->fAmbiguousCharSet = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fAmbiguousCharSet);
5991 	lpStruct->fClusterSizeVaries = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fClusterSizeVaries);
5992 	lpStruct->fRejectInvalid = (*env)->GetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fRejectInvalid);
5993 	return lpStruct;
5994 }
5995 
setSCRIPT_PROPERTIESFields(JNIEnv * env,jobject lpObject,SCRIPT_PROPERTIES * lpStruct)5996 void setSCRIPT_PROPERTIESFields(JNIEnv *env, jobject lpObject, SCRIPT_PROPERTIES *lpStruct)
5997 {
5998 	if (!SCRIPT_PROPERTIESFc.cached) cacheSCRIPT_PROPERTIESFields(env, lpObject);
5999 	(*env)->SetShortField(env, lpObject, SCRIPT_PROPERTIESFc.langid, (jshort)lpStruct->langid);
6000 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNumeric, (jboolean)lpStruct->fNumeric);
6001 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fComplex, (jboolean)lpStruct->fComplex);
6002 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsWordBreaking, (jboolean)lpStruct->fNeedsWordBreaking);
6003 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsCaretInfo, (jboolean)lpStruct->fNeedsCaretInfo);
6004 	(*env)->SetByteField(env, lpObject, SCRIPT_PROPERTIESFc.bCharSet, (jbyte)lpStruct->bCharSet);
6005 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fControl, (jboolean)lpStruct->fControl);
6006 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fPrivateUseArea, (jboolean)lpStruct->fPrivateUseArea);
6007 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fNeedsCharacterJustify, (jboolean)lpStruct->fNeedsCharacterJustify);
6008 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fInvalidGlyph, (jboolean)lpStruct->fInvalidGlyph);
6009 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fInvalidLogAttr, (jboolean)lpStruct->fInvalidLogAttr);
6010 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fCDM, (jboolean)lpStruct->fCDM);
6011 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fAmbiguousCharSet, (jboolean)lpStruct->fAmbiguousCharSet);
6012 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fClusterSizeVaries, (jboolean)lpStruct->fClusterSizeVaries);
6013 	(*env)->SetBooleanField(env, lpObject, SCRIPT_PROPERTIESFc.fRejectInvalid, (jboolean)lpStruct->fRejectInvalid);
6014 }
6015 #endif
6016 
6017 #ifndef NO_SCRIPT_STATE
6018 typedef struct SCRIPT_STATE_FID_CACHE {
6019 	int cached;
6020 	jclass clazz;
6021 	jfieldID uBidiLevel, fOverrideDirection, fInhibitSymSwap, fCharShape, fDigitSubstitute, fInhibitLigate, fDisplayZWG, fArabicNumContext, fGcpClusters, fReserved, fEngineReserved;
6022 } SCRIPT_STATE_FID_CACHE;
6023 
6024 SCRIPT_STATE_FID_CACHE SCRIPT_STATEFc;
6025 
cacheSCRIPT_STATEFields(JNIEnv * env,jobject lpObject)6026 void cacheSCRIPT_STATEFields(JNIEnv *env, jobject lpObject)
6027 {
6028 	if (SCRIPT_STATEFc.cached) return;
6029 	SCRIPT_STATEFc.clazz = (*env)->GetObjectClass(env, lpObject);
6030 	SCRIPT_STATEFc.uBidiLevel = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "uBidiLevel", "S");
6031 	SCRIPT_STATEFc.fOverrideDirection = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fOverrideDirection", "Z");
6032 	SCRIPT_STATEFc.fInhibitSymSwap = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fInhibitSymSwap", "Z");
6033 	SCRIPT_STATEFc.fCharShape = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fCharShape", "Z");
6034 	SCRIPT_STATEFc.fDigitSubstitute = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fDigitSubstitute", "Z");
6035 	SCRIPT_STATEFc.fInhibitLigate = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fInhibitLigate", "Z");
6036 	SCRIPT_STATEFc.fDisplayZWG = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fDisplayZWG", "Z");
6037 	SCRIPT_STATEFc.fArabicNumContext = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fArabicNumContext", "Z");
6038 	SCRIPT_STATEFc.fGcpClusters = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fGcpClusters", "Z");
6039 	SCRIPT_STATEFc.fReserved = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fReserved", "Z");
6040 	SCRIPT_STATEFc.fEngineReserved = (*env)->GetFieldID(env, SCRIPT_STATEFc.clazz, "fEngineReserved", "S");
6041 	SCRIPT_STATEFc.cached = 1;
6042 }
6043 
getSCRIPT_STATEFields(JNIEnv * env,jobject lpObject,SCRIPT_STATE * lpStruct)6044 SCRIPT_STATE *getSCRIPT_STATEFields(JNIEnv *env, jobject lpObject, SCRIPT_STATE *lpStruct)
6045 {
6046 	if (!SCRIPT_STATEFc.cached) cacheSCRIPT_STATEFields(env, lpObject);
6047 	lpStruct->uBidiLevel = (*env)->GetShortField(env, lpObject, SCRIPT_STATEFc.uBidiLevel);
6048 	lpStruct->fOverrideDirection = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fOverrideDirection);
6049 	lpStruct->fInhibitSymSwap = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fInhibitSymSwap);
6050 	lpStruct->fCharShape = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fCharShape);
6051 	lpStruct->fDigitSubstitute = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fDigitSubstitute);
6052 	lpStruct->fInhibitLigate = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fInhibitLigate);
6053 	lpStruct->fDisplayZWG = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fDisplayZWG);
6054 	lpStruct->fArabicNumContext = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fArabicNumContext);
6055 	lpStruct->fGcpClusters = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fGcpClusters);
6056 	lpStruct->fReserved = (*env)->GetBooleanField(env, lpObject, SCRIPT_STATEFc.fReserved);
6057 	lpStruct->fEngineReserved = (*env)->GetShortField(env, lpObject, SCRIPT_STATEFc.fEngineReserved);
6058 	return lpStruct;
6059 }
6060 
setSCRIPT_STATEFields(JNIEnv * env,jobject lpObject,SCRIPT_STATE * lpStruct)6061 void setSCRIPT_STATEFields(JNIEnv *env, jobject lpObject, SCRIPT_STATE *lpStruct)
6062 {
6063 	if (!SCRIPT_STATEFc.cached) cacheSCRIPT_STATEFields(env, lpObject);
6064 	(*env)->SetShortField(env, lpObject, SCRIPT_STATEFc.uBidiLevel, (jshort)lpStruct->uBidiLevel);
6065 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fOverrideDirection, (jboolean)lpStruct->fOverrideDirection);
6066 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fInhibitSymSwap, (jboolean)lpStruct->fInhibitSymSwap);
6067 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fCharShape, (jboolean)lpStruct->fCharShape);
6068 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fDigitSubstitute, (jboolean)lpStruct->fDigitSubstitute);
6069 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fInhibitLigate, (jboolean)lpStruct->fInhibitLigate);
6070 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fDisplayZWG, (jboolean)lpStruct->fDisplayZWG);
6071 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fArabicNumContext, (jboolean)lpStruct->fArabicNumContext);
6072 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fGcpClusters, (jboolean)lpStruct->fGcpClusters);
6073 	(*env)->SetBooleanField(env, lpObject, SCRIPT_STATEFc.fReserved, (jboolean)lpStruct->fReserved);
6074 	(*env)->SetShortField(env, lpObject, SCRIPT_STATEFc.fEngineReserved, (jshort)lpStruct->fEngineReserved);
6075 }
6076 #endif
6077 
6078 #ifndef NO_SCROLLBARINFO
6079 typedef struct SCROLLBARINFO_FID_CACHE {
6080 	int cached;
6081 	jclass clazz;
6082 	jfieldID cbSize, rcScrollBar, dxyLineButton, xyThumbTop, xyThumbBottom, reserved, rgstate;
6083 } SCROLLBARINFO_FID_CACHE;
6084 
6085 SCROLLBARINFO_FID_CACHE SCROLLBARINFOFc;
6086 
cacheSCROLLBARINFOFields(JNIEnv * env,jobject lpObject)6087 void cacheSCROLLBARINFOFields(JNIEnv *env, jobject lpObject)
6088 {
6089 	if (SCROLLBARINFOFc.cached) return;
6090 	SCROLLBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6091 	SCROLLBARINFOFc.cbSize = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "cbSize", "I");
6092 	SCROLLBARINFOFc.rcScrollBar = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "rcScrollBar", "Lorg/eclipse/swt/internal/win32/RECT;");
6093 	SCROLLBARINFOFc.dxyLineButton = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "dxyLineButton", "I");
6094 	SCROLLBARINFOFc.xyThumbTop = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "xyThumbTop", "I");
6095 	SCROLLBARINFOFc.xyThumbBottom = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "xyThumbBottom", "I");
6096 	SCROLLBARINFOFc.reserved = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "reserved", "I");
6097 	SCROLLBARINFOFc.rgstate = (*env)->GetFieldID(env, SCROLLBARINFOFc.clazz, "rgstate", "[I");
6098 	SCROLLBARINFOFc.cached = 1;
6099 }
6100 
getSCROLLBARINFOFields(JNIEnv * env,jobject lpObject,SCROLLBARINFO * lpStruct)6101 SCROLLBARINFO *getSCROLLBARINFOFields(JNIEnv *env, jobject lpObject, SCROLLBARINFO *lpStruct)
6102 {
6103 	if (!SCROLLBARINFOFc.cached) cacheSCROLLBARINFOFields(env, lpObject);
6104 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SCROLLBARINFOFc.cbSize);
6105 	{
6106 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCROLLBARINFOFc.rcScrollBar);
6107 	if (lpObject1 != NULL) getRECTFields(env, lpObject1, &lpStruct->rcScrollBar);
6108 	}
6109 	lpStruct->dxyLineButton = (*env)->GetIntField(env, lpObject, SCROLLBARINFOFc.dxyLineButton);
6110 	lpStruct->xyThumbTop = (*env)->GetIntField(env, lpObject, SCROLLBARINFOFc.xyThumbTop);
6111 	lpStruct->xyThumbBottom = (*env)->GetIntField(env, lpObject, SCROLLBARINFOFc.xyThumbBottom);
6112 	lpStruct->reserved = (*env)->GetIntField(env, lpObject, SCROLLBARINFOFc.reserved);
6113 	{
6114 	jintArray lpObject1 = (jintArray)(*env)->GetObjectField(env, lpObject, SCROLLBARINFOFc.rgstate);
6115 	(*env)->GetIntArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgstate) / sizeof(jint), (jint *)lpStruct->rgstate);
6116 	}
6117 	return lpStruct;
6118 }
6119 
setSCROLLBARINFOFields(JNIEnv * env,jobject lpObject,SCROLLBARINFO * lpStruct)6120 void setSCROLLBARINFOFields(JNIEnv *env, jobject lpObject, SCROLLBARINFO *lpStruct)
6121 {
6122 	if (!SCROLLBARINFOFc.cached) cacheSCROLLBARINFOFields(env, lpObject);
6123 	(*env)->SetIntField(env, lpObject, SCROLLBARINFOFc.cbSize, (jint)lpStruct->cbSize);
6124 	{
6125 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SCROLLBARINFOFc.rcScrollBar);
6126 	if (lpObject1 != NULL) setRECTFields(env, lpObject1, &lpStruct->rcScrollBar);
6127 	}
6128 	(*env)->SetIntField(env, lpObject, SCROLLBARINFOFc.dxyLineButton, (jint)lpStruct->dxyLineButton);
6129 	(*env)->SetIntField(env, lpObject, SCROLLBARINFOFc.xyThumbTop, (jint)lpStruct->xyThumbTop);
6130 	(*env)->SetIntField(env, lpObject, SCROLLBARINFOFc.xyThumbBottom, (jint)lpStruct->xyThumbBottom);
6131 	(*env)->SetIntField(env, lpObject, SCROLLBARINFOFc.reserved, (jint)lpStruct->reserved);
6132 	{
6133 	jintArray lpObject1 = (jintArray)(*env)->GetObjectField(env, lpObject, SCROLLBARINFOFc.rgstate);
6134 	(*env)->SetIntArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgstate) / sizeof(jint), (jint *)lpStruct->rgstate);
6135 	}
6136 }
6137 #endif
6138 
6139 #ifndef NO_SCROLLINFO
6140 typedef struct SCROLLINFO_FID_CACHE {
6141 	int cached;
6142 	jclass clazz;
6143 	jfieldID cbSize, fMask, nMin, nMax, nPage, nPos, nTrackPos;
6144 } SCROLLINFO_FID_CACHE;
6145 
6146 SCROLLINFO_FID_CACHE SCROLLINFOFc;
6147 
cacheSCROLLINFOFields(JNIEnv * env,jobject lpObject)6148 void cacheSCROLLINFOFields(JNIEnv *env, jobject lpObject)
6149 {
6150 	if (SCROLLINFOFc.cached) return;
6151 	SCROLLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6152 	SCROLLINFOFc.cbSize = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "cbSize", "I");
6153 	SCROLLINFOFc.fMask = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "fMask", "I");
6154 	SCROLLINFOFc.nMin = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMin", "I");
6155 	SCROLLINFOFc.nMax = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMax", "I");
6156 	SCROLLINFOFc.nPage = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPage", "I");
6157 	SCROLLINFOFc.nPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPos", "I");
6158 	SCROLLINFOFc.nTrackPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nTrackPos", "I");
6159 	SCROLLINFOFc.cached = 1;
6160 }
6161 
getSCROLLINFOFields(JNIEnv * env,jobject lpObject,SCROLLINFO * lpStruct)6162 SCROLLINFO *getSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)
6163 {
6164 	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);
6165 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.cbSize);
6166 	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.fMask);
6167 	lpStruct->nMin = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMin);
6168 	lpStruct->nMax = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMax);
6169 	lpStruct->nPage = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPage);
6170 	lpStruct->nPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPos);
6171 	lpStruct->nTrackPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nTrackPos);
6172 	return lpStruct;
6173 }
6174 
setSCROLLINFOFields(JNIEnv * env,jobject lpObject,SCROLLINFO * lpStruct)6175 void setSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)
6176 {
6177 	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);
6178 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.cbSize, (jint)lpStruct->cbSize);
6179 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.fMask, (jint)lpStruct->fMask);
6180 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMin, (jint)lpStruct->nMin);
6181 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMax, (jint)lpStruct->nMax);
6182 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPage, (jint)lpStruct->nPage);
6183 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPos, (jint)lpStruct->nPos);
6184 	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nTrackPos, (jint)lpStruct->nTrackPos);
6185 }
6186 #endif
6187 
6188 #ifndef NO_SHDRAGIMAGE
6189 typedef struct SHDRAGIMAGE_FID_CACHE {
6190 	int cached;
6191 	jclass clazz;
6192 	jfieldID sizeDragImage, ptOffset, hbmpDragImage, crColorKey;
6193 } SHDRAGIMAGE_FID_CACHE;
6194 
6195 SHDRAGIMAGE_FID_CACHE SHDRAGIMAGEFc;
6196 
cacheSHDRAGIMAGEFields(JNIEnv * env,jobject lpObject)6197 void cacheSHDRAGIMAGEFields(JNIEnv *env, jobject lpObject)
6198 {
6199 	if (SHDRAGIMAGEFc.cached) return;
6200 	SHDRAGIMAGEFc.clazz = (*env)->GetObjectClass(env, lpObject);
6201 	SHDRAGIMAGEFc.sizeDragImage = (*env)->GetFieldID(env, SHDRAGIMAGEFc.clazz, "sizeDragImage", "Lorg/eclipse/swt/internal/win32/SIZE;");
6202 	SHDRAGIMAGEFc.ptOffset = (*env)->GetFieldID(env, SHDRAGIMAGEFc.clazz, "ptOffset", "Lorg/eclipse/swt/internal/win32/POINT;");
6203 	SHDRAGIMAGEFc.hbmpDragImage = (*env)->GetFieldID(env, SHDRAGIMAGEFc.clazz, "hbmpDragImage", "J");
6204 	SHDRAGIMAGEFc.crColorKey = (*env)->GetFieldID(env, SHDRAGIMAGEFc.clazz, "crColorKey", "I");
6205 	SHDRAGIMAGEFc.cached = 1;
6206 }
6207 
getSHDRAGIMAGEFields(JNIEnv * env,jobject lpObject,SHDRAGIMAGE * lpStruct)6208 SHDRAGIMAGE *getSHDRAGIMAGEFields(JNIEnv *env, jobject lpObject, SHDRAGIMAGE *lpStruct)
6209 {
6210 	if (!SHDRAGIMAGEFc.cached) cacheSHDRAGIMAGEFields(env, lpObject);
6211 	{
6212 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SHDRAGIMAGEFc.sizeDragImage);
6213 	if (lpObject1 != NULL) getSIZEFields(env, lpObject1, &lpStruct->sizeDragImage);
6214 	}
6215 	{
6216 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SHDRAGIMAGEFc.ptOffset);
6217 	if (lpObject1 != NULL) getPOINTFields(env, lpObject1, &lpStruct->ptOffset);
6218 	}
6219 	lpStruct->hbmpDragImage = (HBITMAP)(*env)->GetLongField(env, lpObject, SHDRAGIMAGEFc.hbmpDragImage);
6220 	lpStruct->crColorKey = (*env)->GetIntField(env, lpObject, SHDRAGIMAGEFc.crColorKey);
6221 	return lpStruct;
6222 }
6223 
setSHDRAGIMAGEFields(JNIEnv * env,jobject lpObject,SHDRAGIMAGE * lpStruct)6224 void setSHDRAGIMAGEFields(JNIEnv *env, jobject lpObject, SHDRAGIMAGE *lpStruct)
6225 {
6226 	if (!SHDRAGIMAGEFc.cached) cacheSHDRAGIMAGEFields(env, lpObject);
6227 	{
6228 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SHDRAGIMAGEFc.sizeDragImage);
6229 	if (lpObject1 != NULL) setSIZEFields(env, lpObject1, &lpStruct->sizeDragImage);
6230 	}
6231 	{
6232 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, SHDRAGIMAGEFc.ptOffset);
6233 	if (lpObject1 != NULL) setPOINTFields(env, lpObject1, &lpStruct->ptOffset);
6234 	}
6235 	(*env)->SetLongField(env, lpObject, SHDRAGIMAGEFc.hbmpDragImage, (jlong)lpStruct->hbmpDragImage);
6236 	(*env)->SetIntField(env, lpObject, SHDRAGIMAGEFc.crColorKey, (jint)lpStruct->crColorKey);
6237 }
6238 #endif
6239 
6240 #ifndef NO_SHELLEXECUTEINFO
6241 typedef struct SHELLEXECUTEINFO_FID_CACHE {
6242 	int cached;
6243 	jclass clazz;
6244 	jfieldID cbSize, fMask, hwnd, lpVerb, lpFile, lpParameters, lpDirectory, nShow, hInstApp, lpIDList, lpClass, hkeyClass, dwHotKey, hIcon, hProcess;
6245 } SHELLEXECUTEINFO_FID_CACHE;
6246 
6247 SHELLEXECUTEINFO_FID_CACHE SHELLEXECUTEINFOFc;
6248 
cacheSHELLEXECUTEINFOFields(JNIEnv * env,jobject lpObject)6249 void cacheSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject)
6250 {
6251 	if (SHELLEXECUTEINFOFc.cached) return;
6252 	SHELLEXECUTEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6253 	SHELLEXECUTEINFOFc.cbSize = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "cbSize", "I");
6254 	SHELLEXECUTEINFOFc.fMask = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "fMask", "I");
6255 	SHELLEXECUTEINFOFc.hwnd = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hwnd", "J");
6256 	SHELLEXECUTEINFOFc.lpVerb = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpVerb", "J");
6257 	SHELLEXECUTEINFOFc.lpFile = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpFile", "J");
6258 	SHELLEXECUTEINFOFc.lpParameters = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpParameters", "J");
6259 	SHELLEXECUTEINFOFc.lpDirectory = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpDirectory", "J");
6260 	SHELLEXECUTEINFOFc.nShow = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "nShow", "I");
6261 	SHELLEXECUTEINFOFc.hInstApp = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hInstApp", "J");
6262 	SHELLEXECUTEINFOFc.lpIDList = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpIDList", "J");
6263 	SHELLEXECUTEINFOFc.lpClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpClass", "J");
6264 	SHELLEXECUTEINFOFc.hkeyClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hkeyClass", "J");
6265 	SHELLEXECUTEINFOFc.dwHotKey = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "dwHotKey", "I");
6266 	SHELLEXECUTEINFOFc.hIcon = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hIcon", "J");
6267 	SHELLEXECUTEINFOFc.hProcess = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hProcess", "J");
6268 	SHELLEXECUTEINFOFc.cached = 1;
6269 }
6270 
getSHELLEXECUTEINFOFields(JNIEnv * env,jobject lpObject,SHELLEXECUTEINFO * lpStruct)6271 SHELLEXECUTEINFO *getSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)
6272 {
6273 	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);
6274 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize);
6275 	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask);
6276 	lpStruct->hwnd = (HWND)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.hwnd);
6277 	lpStruct->lpVerb = (LPCTSTR)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb);
6278 	lpStruct->lpFile = (LPCTSTR)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpFile);
6279 	lpStruct->lpParameters = (LPCTSTR)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters);
6280 	lpStruct->lpDirectory = (LPCTSTR)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory);
6281 	lpStruct->nShow = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow);
6282 	lpStruct->hInstApp = (HINSTANCE)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp);
6283 	lpStruct->lpIDList = (LPVOID)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList);
6284 	lpStruct->lpClass = (LPCTSTR)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpClass);
6285 	lpStruct->hkeyClass = (HKEY)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass);
6286 	lpStruct->dwHotKey = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey);
6287 	lpStruct->hIcon = (HANDLE)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.hIcon);
6288 	lpStruct->hProcess = (HANDLE)(*env)->GetLongField(env, lpObject, SHELLEXECUTEINFOFc.hProcess);
6289 	return lpStruct;
6290 }
6291 
setSHELLEXECUTEINFOFields(JNIEnv * env,jobject lpObject,SHELLEXECUTEINFO * lpStruct)6292 void setSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)
6293 {
6294 	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);
6295 	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize, (jint)lpStruct->cbSize);
6296 	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask, (jint)lpStruct->fMask);
6297 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.hwnd, (jlong)lpStruct->hwnd);
6298 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb, (jlong)lpStruct->lpVerb);
6299 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpFile, (jlong)lpStruct->lpFile);
6300 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters, (jlong)lpStruct->lpParameters);
6301 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory, (jlong)lpStruct->lpDirectory);
6302 	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow, (jint)lpStruct->nShow);
6303 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp, (jlong)lpStruct->hInstApp);
6304 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList, (jlong)lpStruct->lpIDList);
6305 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.lpClass, (jlong)lpStruct->lpClass);
6306 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass, (jlong)lpStruct->hkeyClass);
6307 	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey, (jint)lpStruct->dwHotKey);
6308 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.hIcon, (jlong)lpStruct->hIcon);
6309 	(*env)->SetLongField(env, lpObject, SHELLEXECUTEINFOFc.hProcess, (jlong)lpStruct->hProcess);
6310 }
6311 #endif
6312 
6313 #ifndef NO_SHFILEINFO
6314 typedef struct SHFILEINFO_FID_CACHE {
6315 	int cached;
6316 	jclass clazz;
6317 	jfieldID hIcon, iIcon, dwAttributes, szDisplayName, szTypeName;
6318 } SHFILEINFO_FID_CACHE;
6319 
6320 SHFILEINFO_FID_CACHE SHFILEINFOFc;
6321 
cacheSHFILEINFOFields(JNIEnv * env,jobject lpObject)6322 void cacheSHFILEINFOFields(JNIEnv *env, jobject lpObject)
6323 {
6324 	if (SHFILEINFOFc.cached) return;
6325 	SHFILEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6326 	SHFILEINFOFc.hIcon = (*env)->GetFieldID(env, SHFILEINFOFc.clazz, "hIcon", "J");
6327 	SHFILEINFOFc.iIcon = (*env)->GetFieldID(env, SHFILEINFOFc.clazz, "iIcon", "I");
6328 	SHFILEINFOFc.dwAttributes = (*env)->GetFieldID(env, SHFILEINFOFc.clazz, "dwAttributes", "I");
6329 	SHFILEINFOFc.szDisplayName = (*env)->GetFieldID(env, SHFILEINFOFc.clazz, "szDisplayName", "[C");
6330 	SHFILEINFOFc.szTypeName = (*env)->GetFieldID(env, SHFILEINFOFc.clazz, "szTypeName", "[C");
6331 	SHFILEINFOFc.cached = 1;
6332 }
6333 
getSHFILEINFOFields(JNIEnv * env,jobject lpObject,SHFILEINFO * lpStruct)6334 SHFILEINFO *getSHFILEINFOFields(JNIEnv *env, jobject lpObject, SHFILEINFO *lpStruct)
6335 {
6336 	if (!SHFILEINFOFc.cached) cacheSHFILEINFOFields(env, lpObject);
6337 	lpStruct->hIcon = (HICON)(*env)->GetLongField(env, lpObject, SHFILEINFOFc.hIcon);
6338 	lpStruct->iIcon = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.iIcon);
6339 	lpStruct->dwAttributes = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.dwAttributes);
6340 	{
6341 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOFc.szDisplayName);
6342 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName) / sizeof(jchar), (jchar *)lpStruct->szDisplayName);
6343 	}
6344 	{
6345 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOFc.szTypeName);
6346 	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName) / sizeof(jchar), (jchar *)lpStruct->szTypeName);
6347 	}
6348 	return lpStruct;
6349 }
6350 
setSHFILEINFOFields(JNIEnv * env,jobject lpObject,SHFILEINFO * lpStruct)6351 void setSHFILEINFOFields(JNIEnv *env, jobject lpObject, SHFILEINFO *lpStruct)
6352 {
6353 	if (!SHFILEINFOFc.cached) cacheSHFILEINFOFields(env, lpObject);
6354 	(*env)->SetLongField(env, lpObject, SHFILEINFOFc.hIcon, (jlong)lpStruct->hIcon);
6355 	(*env)->SetIntField(env, lpObject, SHFILEINFOFc.iIcon, (jint)lpStruct->iIcon);
6356 	(*env)->SetIntField(env, lpObject, SHFILEINFOFc.dwAttributes, (jint)lpStruct->dwAttributes);
6357 	{
6358 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOFc.szDisplayName);
6359 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName) / sizeof(jchar), (jchar *)lpStruct->szDisplayName);
6360 	}
6361 	{
6362 	jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOFc.szTypeName);
6363 	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName) / sizeof(jchar), (jchar *)lpStruct->szTypeName);
6364 	}
6365 }
6366 #endif
6367 
6368 #ifndef NO_SIZE
6369 typedef struct SIZE_FID_CACHE {
6370 	int cached;
6371 	jclass clazz;
6372 	jfieldID cx, cy;
6373 } SIZE_FID_CACHE;
6374 
6375 SIZE_FID_CACHE SIZEFc;
6376 
cacheSIZEFields(JNIEnv * env,jobject lpObject)6377 void cacheSIZEFields(JNIEnv *env, jobject lpObject)
6378 {
6379 	if (SIZEFc.cached) return;
6380 	SIZEFc.clazz = (*env)->GetObjectClass(env, lpObject);
6381 	SIZEFc.cx = (*env)->GetFieldID(env, SIZEFc.clazz, "cx", "I");
6382 	SIZEFc.cy = (*env)->GetFieldID(env, SIZEFc.clazz, "cy", "I");
6383 	SIZEFc.cached = 1;
6384 }
6385 
getSIZEFields(JNIEnv * env,jobject lpObject,SIZE * lpStruct)6386 SIZE *getSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)
6387 {
6388 	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);
6389 	lpStruct->cx = (*env)->GetIntField(env, lpObject, SIZEFc.cx);
6390 	lpStruct->cy = (*env)->GetIntField(env, lpObject, SIZEFc.cy);
6391 	return lpStruct;
6392 }
6393 
setSIZEFields(JNIEnv * env,jobject lpObject,SIZE * lpStruct)6394 void setSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)
6395 {
6396 	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);
6397 	(*env)->SetIntField(env, lpObject, SIZEFc.cx, (jint)lpStruct->cx);
6398 	(*env)->SetIntField(env, lpObject, SIZEFc.cy, (jint)lpStruct->cy);
6399 }
6400 #endif
6401 
6402 #ifndef NO_STARTUPINFO
6403 typedef struct STARTUPINFO_FID_CACHE {
6404 	int cached;
6405 	jclass clazz;
6406 	jfieldID cb, lpReserved, lpDesktop, lpTitle, dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags, wShowWindow, cbReserved2, lpReserved2, hStdInput, hStdOutput, hStdError;
6407 } STARTUPINFO_FID_CACHE;
6408 
6409 STARTUPINFO_FID_CACHE STARTUPINFOFc;
6410 
cacheSTARTUPINFOFields(JNIEnv * env,jobject lpObject)6411 void cacheSTARTUPINFOFields(JNIEnv *env, jobject lpObject)
6412 {
6413 	if (STARTUPINFOFc.cached) return;
6414 	STARTUPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6415 	STARTUPINFOFc.cb = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "cb", "I");
6416 	STARTUPINFOFc.lpReserved = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "lpReserved", "J");
6417 	STARTUPINFOFc.lpDesktop = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "lpDesktop", "J");
6418 	STARTUPINFOFc.lpTitle = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "lpTitle", "J");
6419 	STARTUPINFOFc.dwX = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwX", "I");
6420 	STARTUPINFOFc.dwY = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwY", "I");
6421 	STARTUPINFOFc.dwXSize = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwXSize", "I");
6422 	STARTUPINFOFc.dwYSize = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwYSize", "I");
6423 	STARTUPINFOFc.dwXCountChars = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwXCountChars", "I");
6424 	STARTUPINFOFc.dwYCountChars = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwYCountChars", "I");
6425 	STARTUPINFOFc.dwFillAttribute = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwFillAttribute", "I");
6426 	STARTUPINFOFc.dwFlags = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "dwFlags", "I");
6427 	STARTUPINFOFc.wShowWindow = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "wShowWindow", "S");
6428 	STARTUPINFOFc.cbReserved2 = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "cbReserved2", "S");
6429 	STARTUPINFOFc.lpReserved2 = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "lpReserved2", "J");
6430 	STARTUPINFOFc.hStdInput = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "hStdInput", "J");
6431 	STARTUPINFOFc.hStdOutput = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "hStdOutput", "J");
6432 	STARTUPINFOFc.hStdError = (*env)->GetFieldID(env, STARTUPINFOFc.clazz, "hStdError", "J");
6433 	STARTUPINFOFc.cached = 1;
6434 }
6435 
getSTARTUPINFOFields(JNIEnv * env,jobject lpObject,STARTUPINFO * lpStruct)6436 STARTUPINFO *getSTARTUPINFOFields(JNIEnv *env, jobject lpObject, STARTUPINFO *lpStruct)
6437 {
6438 	if (!STARTUPINFOFc.cached) cacheSTARTUPINFOFields(env, lpObject);
6439 	lpStruct->cb = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.cb);
6440 	lpStruct->lpReserved = (LPTSTR)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.lpReserved);
6441 	lpStruct->lpDesktop = (LPTSTR)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.lpDesktop);
6442 	lpStruct->lpTitle = (LPTSTR)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.lpTitle);
6443 	lpStruct->dwX = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwX);
6444 	lpStruct->dwY = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwY);
6445 	lpStruct->dwXSize = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwXSize);
6446 	lpStruct->dwYSize = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwYSize);
6447 	lpStruct->dwXCountChars = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwXCountChars);
6448 	lpStruct->dwYCountChars = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwYCountChars);
6449 	lpStruct->dwFillAttribute = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwFillAttribute);
6450 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, STARTUPINFOFc.dwFlags);
6451 	lpStruct->wShowWindow = (*env)->GetShortField(env, lpObject, STARTUPINFOFc.wShowWindow);
6452 	lpStruct->cbReserved2 = (*env)->GetShortField(env, lpObject, STARTUPINFOFc.cbReserved2);
6453 	lpStruct->lpReserved2 = (LPBYTE)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.lpReserved2);
6454 	lpStruct->hStdInput = (HANDLE)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.hStdInput);
6455 	lpStruct->hStdOutput = (HANDLE)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.hStdOutput);
6456 	lpStruct->hStdError = (HANDLE)(*env)->GetLongField(env, lpObject, STARTUPINFOFc.hStdError);
6457 	return lpStruct;
6458 }
6459 
setSTARTUPINFOFields(JNIEnv * env,jobject lpObject,STARTUPINFO * lpStruct)6460 void setSTARTUPINFOFields(JNIEnv *env, jobject lpObject, STARTUPINFO *lpStruct)
6461 {
6462 	if (!STARTUPINFOFc.cached) cacheSTARTUPINFOFields(env, lpObject);
6463 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.cb, (jint)lpStruct->cb);
6464 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.lpReserved, (jlong)lpStruct->lpReserved);
6465 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.lpDesktop, (jlong)lpStruct->lpDesktop);
6466 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.lpTitle, (jlong)lpStruct->lpTitle);
6467 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwX, (jint)lpStruct->dwX);
6468 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwY, (jint)lpStruct->dwY);
6469 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwXSize, (jint)lpStruct->dwXSize);
6470 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwYSize, (jint)lpStruct->dwYSize);
6471 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwXCountChars, (jint)lpStruct->dwXCountChars);
6472 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwYCountChars, (jint)lpStruct->dwYCountChars);
6473 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwFillAttribute, (jint)lpStruct->dwFillAttribute);
6474 	(*env)->SetIntField(env, lpObject, STARTUPINFOFc.dwFlags, (jint)lpStruct->dwFlags);
6475 	(*env)->SetShortField(env, lpObject, STARTUPINFOFc.wShowWindow, (jshort)lpStruct->wShowWindow);
6476 	(*env)->SetShortField(env, lpObject, STARTUPINFOFc.cbReserved2, (jshort)lpStruct->cbReserved2);
6477 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.lpReserved2, (jlong)lpStruct->lpReserved2);
6478 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.hStdInput, (jlong)lpStruct->hStdInput);
6479 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.hStdOutput, (jlong)lpStruct->hStdOutput);
6480 	(*env)->SetLongField(env, lpObject, STARTUPINFOFc.hStdError, (jlong)lpStruct->hStdError);
6481 }
6482 #endif
6483 
6484 #ifndef NO_SYSTEMTIME
6485 typedef struct SYSTEMTIME_FID_CACHE {
6486 	int cached;
6487 	jclass clazz;
6488 	jfieldID wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds;
6489 } SYSTEMTIME_FID_CACHE;
6490 
6491 SYSTEMTIME_FID_CACHE SYSTEMTIMEFc;
6492 
cacheSYSTEMTIMEFields(JNIEnv * env,jobject lpObject)6493 void cacheSYSTEMTIMEFields(JNIEnv *env, jobject lpObject)
6494 {
6495 	if (SYSTEMTIMEFc.cached) return;
6496 	SYSTEMTIMEFc.clazz = (*env)->GetObjectClass(env, lpObject);
6497 	SYSTEMTIMEFc.wYear = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wYear", "S");
6498 	SYSTEMTIMEFc.wMonth = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wMonth", "S");
6499 	SYSTEMTIMEFc.wDayOfWeek = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wDayOfWeek", "S");
6500 	SYSTEMTIMEFc.wDay = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wDay", "S");
6501 	SYSTEMTIMEFc.wHour = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wHour", "S");
6502 	SYSTEMTIMEFc.wMinute = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wMinute", "S");
6503 	SYSTEMTIMEFc.wSecond = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wSecond", "S");
6504 	SYSTEMTIMEFc.wMilliseconds = (*env)->GetFieldID(env, SYSTEMTIMEFc.clazz, "wMilliseconds", "S");
6505 	SYSTEMTIMEFc.cached = 1;
6506 }
6507 
getSYSTEMTIMEFields(JNIEnv * env,jobject lpObject,SYSTEMTIME * lpStruct)6508 SYSTEMTIME *getSYSTEMTIMEFields(JNIEnv *env, jobject lpObject, SYSTEMTIME *lpStruct)
6509 {
6510 	if (!SYSTEMTIMEFc.cached) cacheSYSTEMTIMEFields(env, lpObject);
6511 	lpStruct->wYear = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wYear);
6512 	lpStruct->wMonth = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wMonth);
6513 	lpStruct->wDayOfWeek = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wDayOfWeek);
6514 	lpStruct->wDay = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wDay);
6515 	lpStruct->wHour = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wHour);
6516 	lpStruct->wMinute = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wMinute);
6517 	lpStruct->wSecond = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wSecond);
6518 	lpStruct->wMilliseconds = (*env)->GetShortField(env, lpObject, SYSTEMTIMEFc.wMilliseconds);
6519 	return lpStruct;
6520 }
6521 
setSYSTEMTIMEFields(JNIEnv * env,jobject lpObject,SYSTEMTIME * lpStruct)6522 void setSYSTEMTIMEFields(JNIEnv *env, jobject lpObject, SYSTEMTIME *lpStruct)
6523 {
6524 	if (!SYSTEMTIMEFc.cached) cacheSYSTEMTIMEFields(env, lpObject);
6525 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wYear, (jshort)lpStruct->wYear);
6526 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wMonth, (jshort)lpStruct->wMonth);
6527 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wDayOfWeek, (jshort)lpStruct->wDayOfWeek);
6528 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wDay, (jshort)lpStruct->wDay);
6529 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wHour, (jshort)lpStruct->wHour);
6530 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wMinute, (jshort)lpStruct->wMinute);
6531 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wSecond, (jshort)lpStruct->wSecond);
6532 	(*env)->SetShortField(env, lpObject, SYSTEMTIMEFc.wMilliseconds, (jshort)lpStruct->wMilliseconds);
6533 }
6534 #endif
6535 
6536 #ifndef NO_TBBUTTON
6537 typedef struct TBBUTTON_FID_CACHE {
6538 	int cached;
6539 	jclass clazz;
6540 	jfieldID iBitmap, idCommand, fsState, fsStyle, dwData, iString;
6541 } TBBUTTON_FID_CACHE;
6542 
6543 TBBUTTON_FID_CACHE TBBUTTONFc;
6544 
cacheTBBUTTONFields(JNIEnv * env,jobject lpObject)6545 void cacheTBBUTTONFields(JNIEnv *env, jobject lpObject)
6546 {
6547 	if (TBBUTTONFc.cached) return;
6548 	TBBUTTONFc.clazz = (*env)->GetObjectClass(env, lpObject);
6549 	TBBUTTONFc.iBitmap = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iBitmap", "I");
6550 	TBBUTTONFc.idCommand = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "idCommand", "I");
6551 	TBBUTTONFc.fsState = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsState", "B");
6552 	TBBUTTONFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsStyle", "B");
6553 	TBBUTTONFc.dwData = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "dwData", "J");
6554 	TBBUTTONFc.iString = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iString", "J");
6555 	TBBUTTONFc.cached = 1;
6556 }
6557 
getTBBUTTONFields(JNIEnv * env,jobject lpObject,TBBUTTON * lpStruct)6558 TBBUTTON *getTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)
6559 {
6560 	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);
6561 	lpStruct->iBitmap = (*env)->GetIntField(env, lpObject, TBBUTTONFc.iBitmap);
6562 	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONFc.idCommand);
6563 	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsState);
6564 	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsStyle);
6565 	lpStruct->dwData = (*env)->GetLongField(env, lpObject, TBBUTTONFc.dwData);
6566 	lpStruct->iString = (*env)->GetLongField(env, lpObject, TBBUTTONFc.iString);
6567 	return lpStruct;
6568 }
6569 
setTBBUTTONFields(JNIEnv * env,jobject lpObject,TBBUTTON * lpStruct)6570 void setTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)
6571 {
6572 	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);
6573 	(*env)->SetIntField(env, lpObject, TBBUTTONFc.iBitmap, (jint)lpStruct->iBitmap);
6574 	(*env)->SetIntField(env, lpObject, TBBUTTONFc.idCommand, (jint)lpStruct->idCommand);
6575 	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsState, (jbyte)lpStruct->fsState);
6576 	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsStyle, (jbyte)lpStruct->fsStyle);
6577 	(*env)->SetLongField(env, lpObject, TBBUTTONFc.dwData, (jlong)lpStruct->dwData);
6578 	(*env)->SetLongField(env, lpObject, TBBUTTONFc.iString, (jlong)lpStruct->iString);
6579 }
6580 #endif
6581 
6582 #ifndef NO_TBBUTTONINFO
6583 typedef struct TBBUTTONINFO_FID_CACHE {
6584 	int cached;
6585 	jclass clazz;
6586 	jfieldID cbSize, dwMask, idCommand, iImage, fsState, fsStyle, cx, lParam, pszText, cchText;
6587 } TBBUTTONINFO_FID_CACHE;
6588 
6589 TBBUTTONINFO_FID_CACHE TBBUTTONINFOFc;
6590 
cacheTBBUTTONINFOFields(JNIEnv * env,jobject lpObject)6591 void cacheTBBUTTONINFOFields(JNIEnv *env, jobject lpObject)
6592 {
6593 	if (TBBUTTONINFOFc.cached) return;
6594 	TBBUTTONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6595 	TBBUTTONINFOFc.cbSize = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cbSize", "I");
6596 	TBBUTTONINFOFc.dwMask = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "dwMask", "I");
6597 	TBBUTTONINFOFc.idCommand = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "idCommand", "I");
6598 	TBBUTTONINFOFc.iImage = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "iImage", "I");
6599 	TBBUTTONINFOFc.fsState = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsState", "B");
6600 	TBBUTTONINFOFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsStyle", "B");
6601 	TBBUTTONINFOFc.cx = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cx", "S");
6602 	TBBUTTONINFOFc.lParam = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "lParam", "J");
6603 	TBBUTTONINFOFc.pszText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "pszText", "J");
6604 	TBBUTTONINFOFc.cchText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cchText", "I");
6605 	TBBUTTONINFOFc.cached = 1;
6606 }
6607 
getTBBUTTONINFOFields(JNIEnv * env,jobject lpObject,TBBUTTONINFO * lpStruct)6608 TBBUTTONINFO *getTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)
6609 {
6610 	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);
6611 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cbSize);
6612 	lpStruct->dwMask = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.dwMask);
6613 	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.idCommand);
6614 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.iImage);
6615 	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsState);
6616 	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle);
6617 	lpStruct->cx = (*env)->GetShortField(env, lpObject, TBBUTTONINFOFc.cx);
6618 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, TBBUTTONINFOFc.lParam);
6619 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, TBBUTTONINFOFc.pszText);
6620 	lpStruct->cchText = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cchText);
6621 	return lpStruct;
6622 }
6623 
setTBBUTTONINFOFields(JNIEnv * env,jobject lpObject,TBBUTTONINFO * lpStruct)6624 void setTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)
6625 {
6626 	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);
6627 	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cbSize, (jint)lpStruct->cbSize);
6628 	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.dwMask, (jint)lpStruct->dwMask);
6629 	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.idCommand, (jint)lpStruct->idCommand);
6630 	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.iImage, (jint)lpStruct->iImage);
6631 	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsState, (jbyte)lpStruct->fsState);
6632 	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle, (jbyte)lpStruct->fsStyle);
6633 	(*env)->SetShortField(env, lpObject, TBBUTTONINFOFc.cx, (jshort)lpStruct->cx);
6634 	(*env)->SetLongField(env, lpObject, TBBUTTONINFOFc.lParam, (jlong)lpStruct->lParam);
6635 	(*env)->SetLongField(env, lpObject, TBBUTTONINFOFc.pszText, (jlong)lpStruct->pszText);
6636 	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cchText, (jint)lpStruct->cchText);
6637 }
6638 #endif
6639 
6640 #ifndef NO_TCHITTESTINFO
6641 typedef struct TCHITTESTINFO_FID_CACHE {
6642 	int cached;
6643 	jclass clazz;
6644 	jfieldID x, y, flags;
6645 } TCHITTESTINFO_FID_CACHE;
6646 
6647 TCHITTESTINFO_FID_CACHE TCHITTESTINFOFc;
6648 
cacheTCHITTESTINFOFields(JNIEnv * env,jobject lpObject)6649 void cacheTCHITTESTINFOFields(JNIEnv *env, jobject lpObject)
6650 {
6651 	if (TCHITTESTINFOFc.cached) return;
6652 	TCHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6653 	TCHITTESTINFOFc.x = (*env)->GetFieldID(env, TCHITTESTINFOFc.clazz, "x", "I");
6654 	TCHITTESTINFOFc.y = (*env)->GetFieldID(env, TCHITTESTINFOFc.clazz, "y", "I");
6655 	TCHITTESTINFOFc.flags = (*env)->GetFieldID(env, TCHITTESTINFOFc.clazz, "flags", "I");
6656 	TCHITTESTINFOFc.cached = 1;
6657 }
6658 
getTCHITTESTINFOFields(JNIEnv * env,jobject lpObject,TCHITTESTINFO * lpStruct)6659 TCHITTESTINFO *getTCHITTESTINFOFields(JNIEnv *env, jobject lpObject, TCHITTESTINFO *lpStruct)
6660 {
6661 	if (!TCHITTESTINFOFc.cached) cacheTCHITTESTINFOFields(env, lpObject);
6662 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, TCHITTESTINFOFc.x);
6663 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, TCHITTESTINFOFc.y);
6664 	lpStruct->flags = (*env)->GetIntField(env, lpObject, TCHITTESTINFOFc.flags);
6665 	return lpStruct;
6666 }
6667 
setTCHITTESTINFOFields(JNIEnv * env,jobject lpObject,TCHITTESTINFO * lpStruct)6668 void setTCHITTESTINFOFields(JNIEnv *env, jobject lpObject, TCHITTESTINFO *lpStruct)
6669 {
6670 	if (!TCHITTESTINFOFc.cached) cacheTCHITTESTINFOFields(env, lpObject);
6671 	(*env)->SetIntField(env, lpObject, TCHITTESTINFOFc.x, (jint)lpStruct->pt.x);
6672 	(*env)->SetIntField(env, lpObject, TCHITTESTINFOFc.y, (jint)lpStruct->pt.y);
6673 	(*env)->SetIntField(env, lpObject, TCHITTESTINFOFc.flags, (jint)lpStruct->flags);
6674 }
6675 #endif
6676 
6677 #ifndef NO_TCITEM
6678 typedef struct TCITEM_FID_CACHE {
6679 	int cached;
6680 	jclass clazz;
6681 	jfieldID mask, dwState, dwStateMask, pszText, cchTextMax, iImage, lParam;
6682 } TCITEM_FID_CACHE;
6683 
6684 TCITEM_FID_CACHE TCITEMFc;
6685 
cacheTCITEMFields(JNIEnv * env,jobject lpObject)6686 void cacheTCITEMFields(JNIEnv *env, jobject lpObject)
6687 {
6688 	if (TCITEMFc.cached) return;
6689 	TCITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
6690 	TCITEMFc.mask = (*env)->GetFieldID(env, TCITEMFc.clazz, "mask", "I");
6691 	TCITEMFc.dwState = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwState", "I");
6692 	TCITEMFc.dwStateMask = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwStateMask", "I");
6693 	TCITEMFc.pszText = (*env)->GetFieldID(env, TCITEMFc.clazz, "pszText", "J");
6694 	TCITEMFc.cchTextMax = (*env)->GetFieldID(env, TCITEMFc.clazz, "cchTextMax", "I");
6695 	TCITEMFc.iImage = (*env)->GetFieldID(env, TCITEMFc.clazz, "iImage", "I");
6696 	TCITEMFc.lParam = (*env)->GetFieldID(env, TCITEMFc.clazz, "lParam", "J");
6697 	TCITEMFc.cached = 1;
6698 }
6699 
getTCITEMFields(JNIEnv * env,jobject lpObject,TCITEM * lpStruct)6700 TCITEM *getTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)
6701 {
6702 	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);
6703 	lpStruct->mask = (*env)->GetIntField(env, lpObject, TCITEMFc.mask);
6704 	lpStruct->dwState = (*env)->GetIntField(env, lpObject, TCITEMFc.dwState);
6705 	lpStruct->dwStateMask = (*env)->GetIntField(env, lpObject, TCITEMFc.dwStateMask);
6706 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, TCITEMFc.pszText);
6707 	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TCITEMFc.cchTextMax);
6708 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TCITEMFc.iImage);
6709 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, TCITEMFc.lParam);
6710 	return lpStruct;
6711 }
6712 
setTCITEMFields(JNIEnv * env,jobject lpObject,TCITEM * lpStruct)6713 void setTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)
6714 {
6715 	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);
6716 	(*env)->SetIntField(env, lpObject, TCITEMFc.mask, (jint)lpStruct->mask);
6717 	(*env)->SetIntField(env, lpObject, TCITEMFc.dwState, (jint)lpStruct->dwState);
6718 	(*env)->SetIntField(env, lpObject, TCITEMFc.dwStateMask, (jint)lpStruct->dwStateMask);
6719 	(*env)->SetLongField(env, lpObject, TCITEMFc.pszText, (jlong)lpStruct->pszText);
6720 	(*env)->SetIntField(env, lpObject, TCITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
6721 	(*env)->SetIntField(env, lpObject, TCITEMFc.iImage, (jint)lpStruct->iImage);
6722 	(*env)->SetLongField(env, lpObject, TCITEMFc.lParam, (jlong)lpStruct->lParam);
6723 }
6724 #endif
6725 
6726 #ifndef NO_TEXTMETRIC
6727 typedef struct TEXTMETRIC_FID_CACHE {
6728 	int cached;
6729 	jclass clazz;
6730 	jfieldID tmHeight, tmAscent, tmDescent, tmInternalLeading, tmExternalLeading, tmAveCharWidth, tmMaxCharWidth, tmWeight, tmOverhang, tmDigitizedAspectX, tmDigitizedAspectY, tmFirstChar, tmLastChar, tmDefaultChar, tmBreakChar, tmItalic, tmUnderlined, tmStruckOut, tmPitchAndFamily, tmCharSet;
6731 } TEXTMETRIC_FID_CACHE;
6732 
6733 TEXTMETRIC_FID_CACHE TEXTMETRICFc;
6734 
cacheTEXTMETRICFields(JNIEnv * env,jobject lpObject)6735 void cacheTEXTMETRICFields(JNIEnv *env, jobject lpObject)
6736 {
6737 	if (TEXTMETRICFc.cached) return;
6738 	TEXTMETRICFc.clazz = (*env)->GetObjectClass(env, lpObject);
6739 	TEXTMETRICFc.tmHeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmHeight", "I");
6740 	TEXTMETRICFc.tmAscent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAscent", "I");
6741 	TEXTMETRICFc.tmDescent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDescent", "I");
6742 	TEXTMETRICFc.tmInternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmInternalLeading", "I");
6743 	TEXTMETRICFc.tmExternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmExternalLeading", "I");
6744 	TEXTMETRICFc.tmAveCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAveCharWidth", "I");
6745 	TEXTMETRICFc.tmMaxCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmMaxCharWidth", "I");
6746 	TEXTMETRICFc.tmWeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmWeight", "I");
6747 	TEXTMETRICFc.tmOverhang = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmOverhang", "I");
6748 	TEXTMETRICFc.tmDigitizedAspectX = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectX", "I");
6749 	TEXTMETRICFc.tmDigitizedAspectY = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectY", "I");
6750 	TEXTMETRICFc.tmFirstChar = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmFirstChar", "C");
6751 	TEXTMETRICFc.tmLastChar = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmLastChar", "C");
6752 	TEXTMETRICFc.tmDefaultChar = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDefaultChar", "C");
6753 	TEXTMETRICFc.tmBreakChar = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmBreakChar", "C");
6754 	TEXTMETRICFc.tmItalic = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmItalic", "B");
6755 	TEXTMETRICFc.tmUnderlined = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmUnderlined", "B");
6756 	TEXTMETRICFc.tmStruckOut = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmStruckOut", "B");
6757 	TEXTMETRICFc.tmPitchAndFamily = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmPitchAndFamily", "B");
6758 	TEXTMETRICFc.tmCharSet = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmCharSet", "B");
6759 	TEXTMETRICFc.cached = 1;
6760 }
6761 
getTEXTMETRICFields(JNIEnv * env,jobject lpObject,TEXTMETRIC * lpStruct)6762 TEXTMETRIC *getTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)
6763 {
6764 	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);
6765 	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);
6766 	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);
6767 	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);
6768 	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);
6769 	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);
6770 	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);
6771 	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);
6772 	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);
6773 	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);
6774 	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);
6775 	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);
6776 	lpStruct->tmFirstChar = (*env)->GetCharField(env, lpObject, TEXTMETRICFc.tmFirstChar);
6777 	lpStruct->tmLastChar = (*env)->GetCharField(env, lpObject, TEXTMETRICFc.tmLastChar);
6778 	lpStruct->tmDefaultChar = (*env)->GetCharField(env, lpObject, TEXTMETRICFc.tmDefaultChar);
6779 	lpStruct->tmBreakChar = (*env)->GetCharField(env, lpObject, TEXTMETRICFc.tmBreakChar);
6780 	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);
6781 	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);
6782 	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);
6783 	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);
6784 	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);
6785 	return lpStruct;
6786 }
6787 
setTEXTMETRICFields(JNIEnv * env,jobject lpObject,TEXTMETRIC * lpStruct)6788 void setTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)
6789 {
6790 	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);
6791 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);
6792 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);
6793 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);
6794 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);
6795 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);
6796 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);
6797 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);
6798 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);
6799 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);
6800 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);
6801 	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);
6802 	(*env)->SetCharField(env, lpObject, TEXTMETRICFc.tmFirstChar, (jchar)lpStruct->tmFirstChar);
6803 	(*env)->SetCharField(env, lpObject, TEXTMETRICFc.tmLastChar, (jchar)lpStruct->tmLastChar);
6804 	(*env)->SetCharField(env, lpObject, TEXTMETRICFc.tmDefaultChar, (jchar)lpStruct->tmDefaultChar);
6805 	(*env)->SetCharField(env, lpObject, TEXTMETRICFc.tmBreakChar, (jchar)lpStruct->tmBreakChar);
6806 	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);
6807 	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);
6808 	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);
6809 	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);
6810 	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);
6811 }
6812 #endif
6813 
6814 #ifndef NO_TF_DA_COLOR
6815 typedef struct TF_DA_COLOR_FID_CACHE {
6816 	int cached;
6817 	jclass clazz;
6818 	jfieldID type, cr;
6819 } TF_DA_COLOR_FID_CACHE;
6820 
6821 TF_DA_COLOR_FID_CACHE TF_DA_COLORFc;
6822 
cacheTF_DA_COLORFields(JNIEnv * env,jobject lpObject)6823 void cacheTF_DA_COLORFields(JNIEnv *env, jobject lpObject)
6824 {
6825 	if (TF_DA_COLORFc.cached) return;
6826 	TF_DA_COLORFc.clazz = (*env)->GetObjectClass(env, lpObject);
6827 	TF_DA_COLORFc.type = (*env)->GetFieldID(env, TF_DA_COLORFc.clazz, "type", "I");
6828 	TF_DA_COLORFc.cr = (*env)->GetFieldID(env, TF_DA_COLORFc.clazz, "cr", "I");
6829 	TF_DA_COLORFc.cached = 1;
6830 }
6831 
getTF_DA_COLORFields(JNIEnv * env,jobject lpObject,TF_DA_COLOR * lpStruct)6832 TF_DA_COLOR *getTF_DA_COLORFields(JNIEnv *env, jobject lpObject, TF_DA_COLOR *lpStruct)
6833 {
6834 	if (!TF_DA_COLORFc.cached) cacheTF_DA_COLORFields(env, lpObject);
6835 	lpStruct->type = (*env)->GetIntField(env, lpObject, TF_DA_COLORFc.type);
6836 	lpStruct->cr = (*env)->GetIntField(env, lpObject, TF_DA_COLORFc.cr);
6837 	return lpStruct;
6838 }
6839 
setTF_DA_COLORFields(JNIEnv * env,jobject lpObject,TF_DA_COLOR * lpStruct)6840 void setTF_DA_COLORFields(JNIEnv *env, jobject lpObject, TF_DA_COLOR *lpStruct)
6841 {
6842 	if (!TF_DA_COLORFc.cached) cacheTF_DA_COLORFields(env, lpObject);
6843 	(*env)->SetIntField(env, lpObject, TF_DA_COLORFc.type, (jint)lpStruct->type);
6844 	(*env)->SetIntField(env, lpObject, TF_DA_COLORFc.cr, (jint)lpStruct->cr);
6845 }
6846 #endif
6847 
6848 #ifndef NO_TF_DISPLAYATTRIBUTE
6849 typedef struct TF_DISPLAYATTRIBUTE_FID_CACHE {
6850 	int cached;
6851 	jclass clazz;
6852 	jfieldID crText, crBk, lsStyle, fBoldLine, crLine, bAttr;
6853 } TF_DISPLAYATTRIBUTE_FID_CACHE;
6854 
6855 TF_DISPLAYATTRIBUTE_FID_CACHE TF_DISPLAYATTRIBUTEFc;
6856 
cacheTF_DISPLAYATTRIBUTEFields(JNIEnv * env,jobject lpObject)6857 void cacheTF_DISPLAYATTRIBUTEFields(JNIEnv *env, jobject lpObject)
6858 {
6859 	if (TF_DISPLAYATTRIBUTEFc.cached) return;
6860 	TF_DISPLAYATTRIBUTEFc.clazz = (*env)->GetObjectClass(env, lpObject);
6861 	TF_DISPLAYATTRIBUTEFc.crText = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "crText", "Lorg/eclipse/swt/internal/win32/TF_DA_COLOR;");
6862 	TF_DISPLAYATTRIBUTEFc.crBk = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "crBk", "Lorg/eclipse/swt/internal/win32/TF_DA_COLOR;");
6863 	TF_DISPLAYATTRIBUTEFc.lsStyle = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "lsStyle", "I");
6864 	TF_DISPLAYATTRIBUTEFc.fBoldLine = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "fBoldLine", "Z");
6865 	TF_DISPLAYATTRIBUTEFc.crLine = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "crLine", "Lorg/eclipse/swt/internal/win32/TF_DA_COLOR;");
6866 	TF_DISPLAYATTRIBUTEFc.bAttr = (*env)->GetFieldID(env, TF_DISPLAYATTRIBUTEFc.clazz, "bAttr", "I");
6867 	TF_DISPLAYATTRIBUTEFc.cached = 1;
6868 }
6869 
getTF_DISPLAYATTRIBUTEFields(JNIEnv * env,jobject lpObject,TF_DISPLAYATTRIBUTE * lpStruct)6870 TF_DISPLAYATTRIBUTE *getTF_DISPLAYATTRIBUTEFields(JNIEnv *env, jobject lpObject, TF_DISPLAYATTRIBUTE *lpStruct)
6871 {
6872 	if (!TF_DISPLAYATTRIBUTEFc.cached) cacheTF_DISPLAYATTRIBUTEFields(env, lpObject);
6873 	{
6874 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crText);
6875 	if (lpObject1 != NULL) getTF_DA_COLORFields(env, lpObject1, &lpStruct->crText);
6876 	}
6877 	{
6878 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crBk);
6879 	if (lpObject1 != NULL) getTF_DA_COLORFields(env, lpObject1, &lpStruct->crBk);
6880 	}
6881 	lpStruct->lsStyle = (*env)->GetIntField(env, lpObject, TF_DISPLAYATTRIBUTEFc.lsStyle);
6882 	lpStruct->fBoldLine = (*env)->GetBooleanField(env, lpObject, TF_DISPLAYATTRIBUTEFc.fBoldLine);
6883 	{
6884 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crLine);
6885 	if (lpObject1 != NULL) getTF_DA_COLORFields(env, lpObject1, &lpStruct->crLine);
6886 	}
6887 	lpStruct->bAttr = (*env)->GetIntField(env, lpObject, TF_DISPLAYATTRIBUTEFc.bAttr);
6888 	return lpStruct;
6889 }
6890 
setTF_DISPLAYATTRIBUTEFields(JNIEnv * env,jobject lpObject,TF_DISPLAYATTRIBUTE * lpStruct)6891 void setTF_DISPLAYATTRIBUTEFields(JNIEnv *env, jobject lpObject, TF_DISPLAYATTRIBUTE *lpStruct)
6892 {
6893 	if (!TF_DISPLAYATTRIBUTEFc.cached) cacheTF_DISPLAYATTRIBUTEFields(env, lpObject);
6894 	{
6895 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crText);
6896 	if (lpObject1 != NULL) setTF_DA_COLORFields(env, lpObject1, &lpStruct->crText);
6897 	}
6898 	{
6899 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crBk);
6900 	if (lpObject1 != NULL) setTF_DA_COLORFields(env, lpObject1, &lpStruct->crBk);
6901 	}
6902 	(*env)->SetIntField(env, lpObject, TF_DISPLAYATTRIBUTEFc.lsStyle, (jint)lpStruct->lsStyle);
6903 	(*env)->SetBooleanField(env, lpObject, TF_DISPLAYATTRIBUTEFc.fBoldLine, (jboolean)lpStruct->fBoldLine);
6904 	{
6905 	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, TF_DISPLAYATTRIBUTEFc.crLine);
6906 	if (lpObject1 != NULL) setTF_DA_COLORFields(env, lpObject1, &lpStruct->crLine);
6907 	}
6908 	(*env)->SetIntField(env, lpObject, TF_DISPLAYATTRIBUTEFc.bAttr, (jint)lpStruct->bAttr);
6909 }
6910 #endif
6911 
6912 #ifndef NO_TOOLINFO
6913 typedef struct TOOLINFO_FID_CACHE {
6914 	int cached;
6915 	jclass clazz;
6916 	jfieldID cbSize, uFlags, hwnd, uId, left, top, right, bottom, hinst, lpszText, lParam, lpReserved;
6917 } TOOLINFO_FID_CACHE;
6918 
6919 TOOLINFO_FID_CACHE TOOLINFOFc;
6920 
cacheTOOLINFOFields(JNIEnv * env,jobject lpObject)6921 void cacheTOOLINFOFields(JNIEnv *env, jobject lpObject)
6922 {
6923 	if (TOOLINFOFc.cached) return;
6924 	TOOLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
6925 	TOOLINFOFc.cbSize = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "cbSize", "I");
6926 	TOOLINFOFc.uFlags = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uFlags", "I");
6927 	TOOLINFOFc.hwnd = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hwnd", "J");
6928 	TOOLINFOFc.uId = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uId", "J");
6929 	TOOLINFOFc.left = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "left", "I");
6930 	TOOLINFOFc.top = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "top", "I");
6931 	TOOLINFOFc.right = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "right", "I");
6932 	TOOLINFOFc.bottom = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "bottom", "I");
6933 	TOOLINFOFc.hinst = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hinst", "J");
6934 	TOOLINFOFc.lpszText = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lpszText", "J");
6935 	TOOLINFOFc.lParam = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lParam", "J");
6936 	TOOLINFOFc.lpReserved = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lpReserved", "J");
6937 	TOOLINFOFc.cached = 1;
6938 }
6939 
getTOOLINFOFields(JNIEnv * env,jobject lpObject,TOOLINFO * lpStruct)6940 TOOLINFO *getTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)
6941 {
6942 	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);
6943 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TOOLINFOFc.cbSize);
6944 	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, TOOLINFOFc.uFlags);
6945 	lpStruct->hwnd = (HWND)(*env)->GetLongField(env, lpObject, TOOLINFOFc.hwnd);
6946 	lpStruct->uId = (*env)->GetLongField(env, lpObject, TOOLINFOFc.uId);
6947 	lpStruct->rect.left = (*env)->GetIntField(env, lpObject, TOOLINFOFc.left);
6948 	lpStruct->rect.top = (*env)->GetIntField(env, lpObject, TOOLINFOFc.top);
6949 	lpStruct->rect.right = (*env)->GetIntField(env, lpObject, TOOLINFOFc.right);
6950 	lpStruct->rect.bottom = (*env)->GetIntField(env, lpObject, TOOLINFOFc.bottom);
6951 	lpStruct->hinst = (HINSTANCE)(*env)->GetLongField(env, lpObject, TOOLINFOFc.hinst);
6952 	lpStruct->lpszText = (LPTSTR)(*env)->GetLongField(env, lpObject, TOOLINFOFc.lpszText);
6953 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, TOOLINFOFc.lParam);
6954 	lpStruct->lpReserved = (void *)(*env)->GetLongField(env, lpObject, TOOLINFOFc.lpReserved);
6955 	return lpStruct;
6956 }
6957 
setTOOLINFOFields(JNIEnv * env,jobject lpObject,TOOLINFO * lpStruct)6958 void setTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)
6959 {
6960 	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);
6961 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.cbSize, (jint)lpStruct->cbSize);
6962 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.uFlags, (jint)lpStruct->uFlags);
6963 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.hwnd, (jlong)lpStruct->hwnd);
6964 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.uId, (jlong)lpStruct->uId);
6965 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.left, (jint)lpStruct->rect.left);
6966 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.top, (jint)lpStruct->rect.top);
6967 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.right, (jint)lpStruct->rect.right);
6968 	(*env)->SetIntField(env, lpObject, TOOLINFOFc.bottom, (jint)lpStruct->rect.bottom);
6969 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.hinst, (jlong)lpStruct->hinst);
6970 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.lpszText, (jlong)lpStruct->lpszText);
6971 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.lParam, (jlong)lpStruct->lParam);
6972 	(*env)->SetLongField(env, lpObject, TOOLINFOFc.lpReserved, (jlong)lpStruct->lpReserved);
6973 }
6974 #endif
6975 
6976 #ifndef NO_TOUCHINPUT
6977 typedef struct TOUCHINPUT_FID_CACHE {
6978 	int cached;
6979 	jclass clazz;
6980 	jfieldID x, y, hSource, dwID, dwFlags, dwMask, dwTime, dwExtraInfo, cxContact, cyContact;
6981 } TOUCHINPUT_FID_CACHE;
6982 
6983 TOUCHINPUT_FID_CACHE TOUCHINPUTFc;
6984 
cacheTOUCHINPUTFields(JNIEnv * env,jobject lpObject)6985 void cacheTOUCHINPUTFields(JNIEnv *env, jobject lpObject)
6986 {
6987 	if (TOUCHINPUTFc.cached) return;
6988 	TOUCHINPUTFc.clazz = (*env)->GetObjectClass(env, lpObject);
6989 	TOUCHINPUTFc.x = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "x", "I");
6990 	TOUCHINPUTFc.y = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "y", "I");
6991 	TOUCHINPUTFc.hSource = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "hSource", "J");
6992 	TOUCHINPUTFc.dwID = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwID", "I");
6993 	TOUCHINPUTFc.dwFlags = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwFlags", "I");
6994 	TOUCHINPUTFc.dwMask = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwMask", "I");
6995 	TOUCHINPUTFc.dwTime = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwTime", "I");
6996 	TOUCHINPUTFc.dwExtraInfo = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "dwExtraInfo", "J");
6997 	TOUCHINPUTFc.cxContact = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "cxContact", "I");
6998 	TOUCHINPUTFc.cyContact = (*env)->GetFieldID(env, TOUCHINPUTFc.clazz, "cyContact", "I");
6999 	TOUCHINPUTFc.cached = 1;
7000 }
7001 
getTOUCHINPUTFields(JNIEnv * env,jobject lpObject,TOUCHINPUT * lpStruct)7002 TOUCHINPUT *getTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct)
7003 {
7004 	if (!TOUCHINPUTFc.cached) cacheTOUCHINPUTFields(env, lpObject);
7005 	lpStruct->x = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.x);
7006 	lpStruct->y = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.y);
7007 	lpStruct->hSource = (HWND)(*env)->GetLongField(env, lpObject, TOUCHINPUTFc.hSource);
7008 	lpStruct->dwID = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwID);
7009 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwFlags);
7010 	lpStruct->dwMask = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwMask);
7011 	lpStruct->dwTime = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.dwTime);
7012 	lpStruct->dwExtraInfo = (*env)->GetLongField(env, lpObject, TOUCHINPUTFc.dwExtraInfo);
7013 	lpStruct->cxContact = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.cxContact);
7014 	lpStruct->cyContact = (*env)->GetIntField(env, lpObject, TOUCHINPUTFc.cyContact);
7015 	return lpStruct;
7016 }
7017 
setTOUCHINPUTFields(JNIEnv * env,jobject lpObject,TOUCHINPUT * lpStruct)7018 void setTOUCHINPUTFields(JNIEnv *env, jobject lpObject, TOUCHINPUT *lpStruct)
7019 {
7020 	if (!TOUCHINPUTFc.cached) cacheTOUCHINPUTFields(env, lpObject);
7021 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.x, (jint)lpStruct->x);
7022 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.y, (jint)lpStruct->y);
7023 	(*env)->SetLongField(env, lpObject, TOUCHINPUTFc.hSource, (jlong)lpStruct->hSource);
7024 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwID, (jint)lpStruct->dwID);
7025 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwFlags, (jint)lpStruct->dwFlags);
7026 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwMask, (jint)lpStruct->dwMask);
7027 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.dwTime, (jint)lpStruct->dwTime);
7028 	(*env)->SetLongField(env, lpObject, TOUCHINPUTFc.dwExtraInfo, (jlong)lpStruct->dwExtraInfo);
7029 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.cxContact, (jint)lpStruct->cxContact);
7030 	(*env)->SetIntField(env, lpObject, TOUCHINPUTFc.cyContact, (jint)lpStruct->cyContact);
7031 }
7032 #endif
7033 
7034 #ifndef NO_TRACKMOUSEEVENT
7035 typedef struct TRACKMOUSEEVENT_FID_CACHE {
7036 	int cached;
7037 	jclass clazz;
7038 	jfieldID cbSize, dwFlags, hwndTrack, dwHoverTime;
7039 } TRACKMOUSEEVENT_FID_CACHE;
7040 
7041 TRACKMOUSEEVENT_FID_CACHE TRACKMOUSEEVENTFc;
7042 
cacheTRACKMOUSEEVENTFields(JNIEnv * env,jobject lpObject)7043 void cacheTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject)
7044 {
7045 	if (TRACKMOUSEEVENTFc.cached) return;
7046 	TRACKMOUSEEVENTFc.clazz = (*env)->GetObjectClass(env, lpObject);
7047 	TRACKMOUSEEVENTFc.cbSize = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "cbSize", "I");
7048 	TRACKMOUSEEVENTFc.dwFlags = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwFlags", "I");
7049 	TRACKMOUSEEVENTFc.hwndTrack = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "hwndTrack", "J");
7050 	TRACKMOUSEEVENTFc.dwHoverTime = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwHoverTime", "I");
7051 	TRACKMOUSEEVENTFc.cached = 1;
7052 }
7053 
getTRACKMOUSEEVENTFields(JNIEnv * env,jobject lpObject,TRACKMOUSEEVENT * lpStruct)7054 TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)
7055 {
7056 	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);
7057 	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize);
7058 	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags);
7059 	lpStruct->hwndTrack = (HWND)(*env)->GetLongField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack);
7060 	lpStruct->dwHoverTime = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime);
7061 	return lpStruct;
7062 }
7063 
setTRACKMOUSEEVENTFields(JNIEnv * env,jobject lpObject,TRACKMOUSEEVENT * lpStruct)7064 void setTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)
7065 {
7066 	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);
7067 	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize, (jint)lpStruct->cbSize);
7068 	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags, (jint)lpStruct->dwFlags);
7069 	(*env)->SetLongField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack, (jlong)lpStruct->hwndTrack);
7070 	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime, (jint)lpStruct->dwHoverTime);
7071 }
7072 #endif
7073 
7074 #ifndef NO_TRIVERTEX
7075 typedef struct TRIVERTEX_FID_CACHE {
7076 	int cached;
7077 	jclass clazz;
7078 	jfieldID x, y, Red, Green, Blue, Alpha;
7079 } TRIVERTEX_FID_CACHE;
7080 
7081 TRIVERTEX_FID_CACHE TRIVERTEXFc;
7082 
cacheTRIVERTEXFields(JNIEnv * env,jobject lpObject)7083 void cacheTRIVERTEXFields(JNIEnv *env, jobject lpObject)
7084 {
7085 	if (TRIVERTEXFc.cached) return;
7086 	TRIVERTEXFc.clazz = (*env)->GetObjectClass(env, lpObject);
7087 	TRIVERTEXFc.x = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "x", "I");
7088 	TRIVERTEXFc.y = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "y", "I");
7089 	TRIVERTEXFc.Red = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Red", "S");
7090 	TRIVERTEXFc.Green = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Green", "S");
7091 	TRIVERTEXFc.Blue = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Blue", "S");
7092 	TRIVERTEXFc.Alpha = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Alpha", "S");
7093 	TRIVERTEXFc.cached = 1;
7094 }
7095 
getTRIVERTEXFields(JNIEnv * env,jobject lpObject,TRIVERTEX * lpStruct)7096 TRIVERTEX *getTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)
7097 {
7098 	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);
7099 	lpStruct->x = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.x);
7100 	lpStruct->y = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.y);
7101 	lpStruct->Red = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Red);
7102 	lpStruct->Green = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Green);
7103 	lpStruct->Blue = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Blue);
7104 	lpStruct->Alpha = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Alpha);
7105 	return lpStruct;
7106 }
7107 
setTRIVERTEXFields(JNIEnv * env,jobject lpObject,TRIVERTEX * lpStruct)7108 void setTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)
7109 {
7110 	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);
7111 	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.x, (jint)lpStruct->x);
7112 	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.y, (jint)lpStruct->y);
7113 	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Red, (jshort)lpStruct->Red);
7114 	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Green, (jshort)lpStruct->Green);
7115 	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Blue, (jshort)lpStruct->Blue);
7116 	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Alpha, (jshort)lpStruct->Alpha);
7117 }
7118 #endif
7119 
7120 #ifndef NO_TVHITTESTINFO
7121 typedef struct TVHITTESTINFO_FID_CACHE {
7122 	int cached;
7123 	jclass clazz;
7124 	jfieldID x, y, flags, hItem;
7125 } TVHITTESTINFO_FID_CACHE;
7126 
7127 TVHITTESTINFO_FID_CACHE TVHITTESTINFOFc;
7128 
cacheTVHITTESTINFOFields(JNIEnv * env,jobject lpObject)7129 void cacheTVHITTESTINFOFields(JNIEnv *env, jobject lpObject)
7130 {
7131 	if (TVHITTESTINFOFc.cached) return;
7132 	TVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
7133 	TVHITTESTINFOFc.x = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "x", "I");
7134 	TVHITTESTINFOFc.y = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "y", "I");
7135 	TVHITTESTINFOFc.flags = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "flags", "I");
7136 	TVHITTESTINFOFc.hItem = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "hItem", "J");
7137 	TVHITTESTINFOFc.cached = 1;
7138 }
7139 
getTVHITTESTINFOFields(JNIEnv * env,jobject lpObject,TVHITTESTINFO * lpStruct)7140 TVHITTESTINFO *getTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)
7141 {
7142 	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);
7143 	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.x);
7144 	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.y);
7145 	lpStruct->flags = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.flags);
7146 	lpStruct->hItem = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVHITTESTINFOFc.hItem);
7147 	return lpStruct;
7148 }
7149 
setTVHITTESTINFOFields(JNIEnv * env,jobject lpObject,TVHITTESTINFO * lpStruct)7150 void setTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)
7151 {
7152 	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);
7153 	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.x, (jint)lpStruct->pt.x);
7154 	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.y, (jint)lpStruct->pt.y);
7155 	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.flags, (jint)lpStruct->flags);
7156 	(*env)->SetLongField(env, lpObject, TVHITTESTINFOFc.hItem, (jlong)lpStruct->hItem);
7157 }
7158 #endif
7159 
7160 #ifndef NO_TVINSERTSTRUCT
7161 typedef struct TVINSERTSTRUCT_FID_CACHE {
7162 	int cached;
7163 	jclass clazz;
7164 	jfieldID hParent, hInsertAfter, mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam, iIntegral;
7165 } TVINSERTSTRUCT_FID_CACHE;
7166 
7167 TVINSERTSTRUCT_FID_CACHE TVINSERTSTRUCTFc;
7168 
cacheTVINSERTSTRUCTFields(JNIEnv * env,jobject lpObject)7169 void cacheTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject)
7170 {
7171 	if (TVINSERTSTRUCTFc.cached) return;
7172 	TVINSERTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
7173 	TVINSERTSTRUCTFc.hParent = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hParent", "J");
7174 	TVINSERTSTRUCTFc.hInsertAfter = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hInsertAfter", "J");
7175 	TVINSERTSTRUCTFc.mask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "mask", "I");
7176 	TVINSERTSTRUCTFc.hItem = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hItem", "J");
7177 	TVINSERTSTRUCTFc.state = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "state", "I");
7178 	TVINSERTSTRUCTFc.stateMask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "stateMask", "I");
7179 	TVINSERTSTRUCTFc.pszText = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "pszText", "J");
7180 	TVINSERTSTRUCTFc.cchTextMax = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cchTextMax", "I");
7181 	TVINSERTSTRUCTFc.iImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iImage", "I");
7182 	TVINSERTSTRUCTFc.iSelectedImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iSelectedImage", "I");
7183 	TVINSERTSTRUCTFc.cChildren = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cChildren", "I");
7184 	TVINSERTSTRUCTFc.lParam = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "lParam", "J");
7185 	TVINSERTSTRUCTFc.iIntegral = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iIntegral", "I");
7186 	TVINSERTSTRUCTFc.cached = 1;
7187 }
7188 
getTVINSERTSTRUCTFields(JNIEnv * env,jobject lpObject,TVINSERTSTRUCT * lpStruct)7189 TVINSERTSTRUCT *getTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)
7190 {
7191 	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);
7192 	lpStruct->hParent = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVINSERTSTRUCTFc.hParent);
7193 	lpStruct->hInsertAfter = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter);
7194 	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.mask);
7195 	lpStruct->item.hItem = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVINSERTSTRUCTFc.hItem);
7196 	lpStruct->item.state = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.state);
7197 	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask);
7198 	lpStruct->item.pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, TVINSERTSTRUCTFc.pszText);
7199 	lpStruct->item.cchTextMax = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax);
7200 	lpStruct->item.iImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage);
7201 	lpStruct->item.iSelectedImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage);
7202 	lpStruct->item.cChildren = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren);
7203 	lpStruct->item.lParam = (*env)->GetLongField(env, lpObject, TVINSERTSTRUCTFc.lParam);
7204 	lpStruct->itemex.iIntegral = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iIntegral);
7205 	return lpStruct;
7206 }
7207 
setTVINSERTSTRUCTFields(JNIEnv * env,jobject lpObject,TVINSERTSTRUCT * lpStruct)7208 void setTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)
7209 {
7210 	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);
7211 	(*env)->SetLongField(env, lpObject, TVINSERTSTRUCTFc.hParent, (jlong)lpStruct->hParent);
7212 	(*env)->SetLongField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter, (jlong)lpStruct->hInsertAfter);
7213 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.mask, (jint)lpStruct->item.mask);
7214 	(*env)->SetLongField(env, lpObject, TVINSERTSTRUCTFc.hItem, (jlong)lpStruct->item.hItem);
7215 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.state, (jint)lpStruct->item.state);
7216 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask, (jint)lpStruct->item.stateMask);
7217 	(*env)->SetLongField(env, lpObject, TVINSERTSTRUCTFc.pszText, (jlong)lpStruct->item.pszText);
7218 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax, (jint)lpStruct->item.cchTextMax);
7219 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage, (jint)lpStruct->item.iImage);
7220 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage, (jint)lpStruct->item.iSelectedImage);
7221 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren, (jint)lpStruct->item.cChildren);
7222 	(*env)->SetLongField(env, lpObject, TVINSERTSTRUCTFc.lParam, (jlong)lpStruct->item.lParam);
7223 	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iIntegral, (jint)lpStruct->itemex.iIntegral);
7224 }
7225 #endif
7226 
7227 #ifndef NO_TVITEM
7228 typedef struct TVITEM_FID_CACHE {
7229 	int cached;
7230 	jclass clazz;
7231 	jfieldID mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;
7232 } TVITEM_FID_CACHE;
7233 
7234 TVITEM_FID_CACHE TVITEMFc;
7235 
cacheTVITEMFields(JNIEnv * env,jobject lpObject)7236 void cacheTVITEMFields(JNIEnv *env, jobject lpObject)
7237 {
7238 	if (TVITEMFc.cached) return;
7239 	TVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
7240 	TVITEMFc.mask = (*env)->GetFieldID(env, TVITEMFc.clazz, "mask", "I");
7241 	TVITEMFc.hItem = (*env)->GetFieldID(env, TVITEMFc.clazz, "hItem", "J");
7242 	TVITEMFc.state = (*env)->GetFieldID(env, TVITEMFc.clazz, "state", "I");
7243 	TVITEMFc.stateMask = (*env)->GetFieldID(env, TVITEMFc.clazz, "stateMask", "I");
7244 	TVITEMFc.pszText = (*env)->GetFieldID(env, TVITEMFc.clazz, "pszText", "J");
7245 	TVITEMFc.cchTextMax = (*env)->GetFieldID(env, TVITEMFc.clazz, "cchTextMax", "I");
7246 	TVITEMFc.iImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iImage", "I");
7247 	TVITEMFc.iSelectedImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iSelectedImage", "I");
7248 	TVITEMFc.cChildren = (*env)->GetFieldID(env, TVITEMFc.clazz, "cChildren", "I");
7249 	TVITEMFc.lParam = (*env)->GetFieldID(env, TVITEMFc.clazz, "lParam", "J");
7250 	TVITEMFc.cached = 1;
7251 }
7252 
getTVITEMFields(JNIEnv * env,jobject lpObject,TVITEM * lpStruct)7253 TVITEM *getTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)
7254 {
7255 	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);
7256 	lpStruct->mask = (*env)->GetIntField(env, lpObject, TVITEMFc.mask);
7257 	lpStruct->hItem = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVITEMFc.hItem);
7258 	lpStruct->state = (*env)->GetIntField(env, lpObject, TVITEMFc.state);
7259 	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, TVITEMFc.stateMask);
7260 	lpStruct->pszText = (LPTSTR)(*env)->GetLongField(env, lpObject, TVITEMFc.pszText);
7261 	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TVITEMFc.cchTextMax);
7262 	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iImage);
7263 	lpStruct->iSelectedImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iSelectedImage);
7264 	lpStruct->cChildren = (*env)->GetIntField(env, lpObject, TVITEMFc.cChildren);
7265 	lpStruct->lParam = (*env)->GetLongField(env, lpObject, TVITEMFc.lParam);
7266 	return lpStruct;
7267 }
7268 
setTVITEMFields(JNIEnv * env,jobject lpObject,TVITEM * lpStruct)7269 void setTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)
7270 {
7271 	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);
7272 	(*env)->SetIntField(env, lpObject, TVITEMFc.mask, (jint)lpStruct->mask);
7273 	(*env)->SetLongField(env, lpObject, TVITEMFc.hItem, (jlong)lpStruct->hItem);
7274 	(*env)->SetIntField(env, lpObject, TVITEMFc.state, (jint)lpStruct->state);
7275 	(*env)->SetIntField(env, lpObject, TVITEMFc.stateMask, (jint)lpStruct->stateMask);
7276 	(*env)->SetLongField(env, lpObject, TVITEMFc.pszText, (jlong)lpStruct->pszText);
7277 	(*env)->SetIntField(env, lpObject, TVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
7278 	(*env)->SetIntField(env, lpObject, TVITEMFc.iImage, (jint)lpStruct->iImage);
7279 	(*env)->SetIntField(env, lpObject, TVITEMFc.iSelectedImage, (jint)lpStruct->iSelectedImage);
7280 	(*env)->SetIntField(env, lpObject, TVITEMFc.cChildren, (jint)lpStruct->cChildren);
7281 	(*env)->SetLongField(env, lpObject, TVITEMFc.lParam, (jlong)lpStruct->lParam);
7282 }
7283 #endif
7284 
7285 #ifndef NO_TVITEMEX
7286 typedef struct TVITEMEX_FID_CACHE {
7287 	int cached;
7288 	jclass clazz;
7289 	jfieldID iIntegral;
7290 } TVITEMEX_FID_CACHE;
7291 
7292 TVITEMEX_FID_CACHE TVITEMEXFc;
7293 
cacheTVITEMEXFields(JNIEnv * env,jobject lpObject)7294 void cacheTVITEMEXFields(JNIEnv *env, jobject lpObject)
7295 {
7296 	if (TVITEMEXFc.cached) return;
7297 	cacheTVITEMFields(env, lpObject);
7298 	TVITEMEXFc.clazz = (*env)->GetObjectClass(env, lpObject);
7299 	TVITEMEXFc.iIntegral = (*env)->GetFieldID(env, TVITEMEXFc.clazz, "iIntegral", "I");
7300 	TVITEMEXFc.cached = 1;
7301 }
7302 
getTVITEMEXFields(JNIEnv * env,jobject lpObject,TVITEMEX * lpStruct)7303 TVITEMEX *getTVITEMEXFields(JNIEnv *env, jobject lpObject, TVITEMEX *lpStruct)
7304 {
7305 	if (!TVITEMEXFc.cached) cacheTVITEMEXFields(env, lpObject);
7306 	getTVITEMFields(env, lpObject, (TVITEM *)lpStruct);
7307 	lpStruct->iIntegral = (*env)->GetIntField(env, lpObject, TVITEMEXFc.iIntegral);
7308 	return lpStruct;
7309 }
7310 
setTVITEMEXFields(JNIEnv * env,jobject lpObject,TVITEMEX * lpStruct)7311 void setTVITEMEXFields(JNIEnv *env, jobject lpObject, TVITEMEX *lpStruct)
7312 {
7313 	if (!TVITEMEXFc.cached) cacheTVITEMEXFields(env, lpObject);
7314 	setTVITEMFields(env, lpObject, (TVITEM *)lpStruct);
7315 	(*env)->SetIntField(env, lpObject, TVITEMEXFc.iIntegral, (jint)lpStruct->iIntegral);
7316 }
7317 #endif
7318 
7319 #ifndef NO_TVSORTCB
7320 typedef struct TVSORTCB_FID_CACHE {
7321 	int cached;
7322 	jclass clazz;
7323 	jfieldID hParent, lpfnCompare, lParam;
7324 } TVSORTCB_FID_CACHE;
7325 
7326 TVSORTCB_FID_CACHE TVSORTCBFc;
7327 
cacheTVSORTCBFields(JNIEnv * env,jobject lpObject)7328 void cacheTVSORTCBFields(JNIEnv *env, jobject lpObject)
7329 {
7330 	if (TVSORTCBFc.cached) return;
7331 	TVSORTCBFc.clazz = (*env)->GetObjectClass(env, lpObject);
7332 	TVSORTCBFc.hParent = (*env)->GetFieldID(env, TVSORTCBFc.clazz, "hParent", "J");
7333 	TVSORTCBFc.lpfnCompare = (*env)->GetFieldID(env, TVSORTCBFc.clazz, "lpfnCompare", "J");
7334 	TVSORTCBFc.lParam = (*env)->GetFieldID(env, TVSORTCBFc.clazz, "lParam", "J");
7335 	TVSORTCBFc.cached = 1;
7336 }
7337 
getTVSORTCBFields(JNIEnv * env,jobject lpObject,TVSORTCB * lpStruct)7338 TVSORTCB *getTVSORTCBFields(JNIEnv *env, jobject lpObject, TVSORTCB *lpStruct)
7339 {
7340 	if (!TVSORTCBFc.cached) cacheTVSORTCBFields(env, lpObject);
7341 	lpStruct->hParent = (HTREEITEM)(*env)->GetLongField(env, lpObject, TVSORTCBFc.hParent);
7342 	lpStruct->lpfnCompare = (PFNTVCOMPARE)(*env)->GetLongField(env, lpObject, TVSORTCBFc.lpfnCompare);
7343 	lpStruct->lParam = (LPARAM)(*env)->GetLongField(env, lpObject, TVSORTCBFc.lParam);
7344 	return lpStruct;
7345 }
7346 
setTVSORTCBFields(JNIEnv * env,jobject lpObject,TVSORTCB * lpStruct)7347 void setTVSORTCBFields(JNIEnv *env, jobject lpObject, TVSORTCB *lpStruct)
7348 {
7349 	if (!TVSORTCBFc.cached) cacheTVSORTCBFields(env, lpObject);
7350 	(*env)->SetLongField(env, lpObject, TVSORTCBFc.hParent, (jlong)lpStruct->hParent);
7351 	(*env)->SetLongField(env, lpObject, TVSORTCBFc.lpfnCompare, (jlong)lpStruct->lpfnCompare);
7352 	(*env)->SetLongField(env, lpObject, TVSORTCBFc.lParam, (jlong)lpStruct->lParam);
7353 }
7354 #endif
7355 
7356 #ifndef NO_UDACCEL
7357 typedef struct UDACCEL_FID_CACHE {
7358 	int cached;
7359 	jclass clazz;
7360 	jfieldID nSec, nInc;
7361 } UDACCEL_FID_CACHE;
7362 
7363 UDACCEL_FID_CACHE UDACCELFc;
7364 
cacheUDACCELFields(JNIEnv * env,jobject lpObject)7365 void cacheUDACCELFields(JNIEnv *env, jobject lpObject)
7366 {
7367 	if (UDACCELFc.cached) return;
7368 	UDACCELFc.clazz = (*env)->GetObjectClass(env, lpObject);
7369 	UDACCELFc.nSec = (*env)->GetFieldID(env, UDACCELFc.clazz, "nSec", "I");
7370 	UDACCELFc.nInc = (*env)->GetFieldID(env, UDACCELFc.clazz, "nInc", "I");
7371 	UDACCELFc.cached = 1;
7372 }
7373 
getUDACCELFields(JNIEnv * env,jobject lpObject,UDACCEL * lpStruct)7374 UDACCEL *getUDACCELFields(JNIEnv *env, jobject lpObject, UDACCEL *lpStruct)
7375 {
7376 	if (!UDACCELFc.cached) cacheUDACCELFields(env, lpObject);
7377 	lpStruct->nSec = (*env)->GetIntField(env, lpObject, UDACCELFc.nSec);
7378 	lpStruct->nInc = (*env)->GetIntField(env, lpObject, UDACCELFc.nInc);
7379 	return lpStruct;
7380 }
7381 
setUDACCELFields(JNIEnv * env,jobject lpObject,UDACCEL * lpStruct)7382 void setUDACCELFields(JNIEnv *env, jobject lpObject, UDACCEL *lpStruct)
7383 {
7384 	if (!UDACCELFc.cached) cacheUDACCELFields(env, lpObject);
7385 	(*env)->SetIntField(env, lpObject, UDACCELFc.nSec, (jint)lpStruct->nSec);
7386 	(*env)->SetIntField(env, lpObject, UDACCELFc.nInc, (jint)lpStruct->nInc);
7387 }
7388 #endif
7389 
7390 #ifndef NO_WINDOWPLACEMENT
7391 typedef struct WINDOWPLACEMENT_FID_CACHE {
7392 	int cached;
7393 	jclass clazz;
7394 	jfieldID length, flags, showCmd, ptMinPosition_x, ptMinPosition_y, ptMaxPosition_x, ptMaxPosition_y, left, top, right, bottom;
7395 } WINDOWPLACEMENT_FID_CACHE;
7396 
7397 WINDOWPLACEMENT_FID_CACHE WINDOWPLACEMENTFc;
7398 
cacheWINDOWPLACEMENTFields(JNIEnv * env,jobject lpObject)7399 void cacheWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject)
7400 {
7401 	if (WINDOWPLACEMENTFc.cached) return;
7402 	WINDOWPLACEMENTFc.clazz = (*env)->GetObjectClass(env, lpObject);
7403 	WINDOWPLACEMENTFc.length = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "length", "I");
7404 	WINDOWPLACEMENTFc.flags = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "flags", "I");
7405 	WINDOWPLACEMENTFc.showCmd = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "showCmd", "I");
7406 	WINDOWPLACEMENTFc.ptMinPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_x", "I");
7407 	WINDOWPLACEMENTFc.ptMinPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_y", "I");
7408 	WINDOWPLACEMENTFc.ptMaxPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_x", "I");
7409 	WINDOWPLACEMENTFc.ptMaxPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_y", "I");
7410 	WINDOWPLACEMENTFc.left = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "left", "I");
7411 	WINDOWPLACEMENTFc.top = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "top", "I");
7412 	WINDOWPLACEMENTFc.right = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "right", "I");
7413 	WINDOWPLACEMENTFc.bottom = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "bottom", "I");
7414 	WINDOWPLACEMENTFc.cached = 1;
7415 }
7416 
getWINDOWPLACEMENTFields(JNIEnv * env,jobject lpObject,WINDOWPLACEMENT * lpStruct)7417 WINDOWPLACEMENT *getWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)
7418 {
7419 	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);
7420 	lpStruct->length = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.length);
7421 	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.flags);
7422 	lpStruct->showCmd = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd);
7423 	lpStruct->ptMinPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x);
7424 	lpStruct->ptMinPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y);
7425 	lpStruct->ptMaxPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x);
7426 	lpStruct->ptMaxPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y);
7427 	lpStruct->rcNormalPosition.left = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.left);
7428 	lpStruct->rcNormalPosition.top = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.top);
7429 	lpStruct->rcNormalPosition.right = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.right);
7430 	lpStruct->rcNormalPosition.bottom = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom);
7431 	return lpStruct;
7432 }
7433 
setWINDOWPLACEMENTFields(JNIEnv * env,jobject lpObject,WINDOWPLACEMENT * lpStruct)7434 void setWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)
7435 {
7436 	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);
7437 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.length, (jint)lpStruct->length);
7438 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.flags, (jint)lpStruct->flags);
7439 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd, (jint)lpStruct->showCmd);
7440 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x, (jint)lpStruct->ptMinPosition.x);
7441 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y, (jint)lpStruct->ptMinPosition.y);
7442 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x, (jint)lpStruct->ptMaxPosition.x);
7443 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y, (jint)lpStruct->ptMaxPosition.y);
7444 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.left, (jint)lpStruct->rcNormalPosition.left);
7445 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.top, (jint)lpStruct->rcNormalPosition.top);
7446 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.right, (jint)lpStruct->rcNormalPosition.right);
7447 	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom, (jint)lpStruct->rcNormalPosition.bottom);
7448 }
7449 #endif
7450 
7451 #ifndef NO_WINDOWPOS
7452 typedef struct WINDOWPOS_FID_CACHE {
7453 	int cached;
7454 	jclass clazz;
7455 	jfieldID hwnd, hwndInsertAfter, x, y, cx, cy, flags;
7456 } WINDOWPOS_FID_CACHE;
7457 
7458 WINDOWPOS_FID_CACHE WINDOWPOSFc;
7459 
cacheWINDOWPOSFields(JNIEnv * env,jobject lpObject)7460 void cacheWINDOWPOSFields(JNIEnv *env, jobject lpObject)
7461 {
7462 	if (WINDOWPOSFc.cached) return;
7463 	WINDOWPOSFc.clazz = (*env)->GetObjectClass(env, lpObject);
7464 	WINDOWPOSFc.hwnd = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwnd", "J");
7465 	WINDOWPOSFc.hwndInsertAfter = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwndInsertAfter", "J");
7466 	WINDOWPOSFc.x = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "x", "I");
7467 	WINDOWPOSFc.y = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "y", "I");
7468 	WINDOWPOSFc.cx = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cx", "I");
7469 	WINDOWPOSFc.cy = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cy", "I");
7470 	WINDOWPOSFc.flags = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "flags", "I");
7471 	WINDOWPOSFc.cached = 1;
7472 }
7473 
getWINDOWPOSFields(JNIEnv * env,jobject lpObject,WINDOWPOS * lpStruct)7474 WINDOWPOS *getWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)
7475 {
7476 	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);
7477 	lpStruct->hwnd = (HWND)(*env)->GetLongField(env, lpObject, WINDOWPOSFc.hwnd);
7478 	lpStruct->hwndInsertAfter = (HWND)(*env)->GetLongField(env, lpObject, WINDOWPOSFc.hwndInsertAfter);
7479 	lpStruct->x = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.x);
7480 	lpStruct->y = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.y);
7481 	lpStruct->cx = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cx);
7482 	lpStruct->cy = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cy);
7483 	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.flags);
7484 	return lpStruct;
7485 }
7486 
setWINDOWPOSFields(JNIEnv * env,jobject lpObject,WINDOWPOS * lpStruct)7487 void setWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)
7488 {
7489 	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);
7490 	(*env)->SetLongField(env, lpObject, WINDOWPOSFc.hwnd, (jlong)lpStruct->hwnd);
7491 	(*env)->SetLongField(env, lpObject, WINDOWPOSFc.hwndInsertAfter, (jlong)lpStruct->hwndInsertAfter);
7492 	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.x, (jint)lpStruct->x);
7493 	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.y, (jint)lpStruct->y);
7494 	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cx, (jint)lpStruct->cx);
7495 	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cy, (jint)lpStruct->cy);
7496 	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.flags, (jint)lpStruct->flags);
7497 }
7498 #endif
7499 
7500 #ifndef NO_WNDCLASS
7501 typedef struct WNDCLASS_FID_CACHE {
7502 	int cached;
7503 	jclass clazz;
7504 	jfieldID style, lpfnWndProc, cbClsExtra, cbWndExtra, hInstance, hIcon, hCursor, hbrBackground, lpszMenuName, lpszClassName;
7505 } WNDCLASS_FID_CACHE;
7506 
7507 WNDCLASS_FID_CACHE WNDCLASSFc;
7508 
cacheWNDCLASSFields(JNIEnv * env,jobject lpObject)7509 void cacheWNDCLASSFields(JNIEnv *env, jobject lpObject)
7510 {
7511 	if (WNDCLASSFc.cached) return;
7512 	WNDCLASSFc.clazz = (*env)->GetObjectClass(env, lpObject);
7513 	WNDCLASSFc.style = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "style", "I");
7514 	WNDCLASSFc.lpfnWndProc = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpfnWndProc", "J");
7515 	WNDCLASSFc.cbClsExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbClsExtra", "I");
7516 	WNDCLASSFc.cbWndExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbWndExtra", "I");
7517 	WNDCLASSFc.hInstance = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hInstance", "J");
7518 	WNDCLASSFc.hIcon = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hIcon", "J");
7519 	WNDCLASSFc.hCursor = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hCursor", "J");
7520 	WNDCLASSFc.hbrBackground = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hbrBackground", "J");
7521 	WNDCLASSFc.lpszMenuName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszMenuName", "J");
7522 	WNDCLASSFc.lpszClassName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszClassName", "J");
7523 	WNDCLASSFc.cached = 1;
7524 }
7525 
getWNDCLASSFields(JNIEnv * env,jobject lpObject,WNDCLASS * lpStruct)7526 WNDCLASS *getWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)
7527 {
7528 	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);
7529 	lpStruct->style = (*env)->GetIntField(env, lpObject, WNDCLASSFc.style);
7530 	lpStruct->lpfnWndProc = (WNDPROC)(*env)->GetLongField(env, lpObject, WNDCLASSFc.lpfnWndProc);
7531 	lpStruct->cbClsExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbClsExtra);
7532 	lpStruct->cbWndExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbWndExtra);
7533 	lpStruct->hInstance = (HINSTANCE)(*env)->GetLongField(env, lpObject, WNDCLASSFc.hInstance);
7534 	lpStruct->hIcon = (HICON)(*env)->GetLongField(env, lpObject, WNDCLASSFc.hIcon);
7535 	lpStruct->hCursor = (HCURSOR)(*env)->GetLongField(env, lpObject, WNDCLASSFc.hCursor);
7536 	lpStruct->hbrBackground = (HBRUSH)(*env)->GetLongField(env, lpObject, WNDCLASSFc.hbrBackground);
7537 	lpStruct->lpszMenuName = (LPCTSTR)(*env)->GetLongField(env, lpObject, WNDCLASSFc.lpszMenuName);
7538 	lpStruct->lpszClassName = (LPCTSTR)(*env)->GetLongField(env, lpObject, WNDCLASSFc.lpszClassName);
7539 	return lpStruct;
7540 }
7541 
setWNDCLASSFields(JNIEnv * env,jobject lpObject,WNDCLASS * lpStruct)7542 void setWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)
7543 {
7544 	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);
7545 	(*env)->SetIntField(env, lpObject, WNDCLASSFc.style, (jint)lpStruct->style);
7546 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.lpfnWndProc, (jlong)lpStruct->lpfnWndProc);
7547 	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbClsExtra, (jint)lpStruct->cbClsExtra);
7548 	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbWndExtra, (jint)lpStruct->cbWndExtra);
7549 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.hInstance, (jlong)lpStruct->hInstance);
7550 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.hIcon, (jlong)lpStruct->hIcon);
7551 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.hCursor, (jlong)lpStruct->hCursor);
7552 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.hbrBackground, (jlong)lpStruct->hbrBackground);
7553 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.lpszMenuName, (jlong)lpStruct->lpszMenuName);
7554 	(*env)->SetLongField(env, lpObject, WNDCLASSFc.lpszClassName, (jlong)lpStruct->lpszClassName);
7555 }
7556 #endif
7557 
7558