summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c106
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h24
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOA.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOW.java4
5 files changed, 138 insertions, 4 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties
index 73a219de8d..b0e1e5b1a6 100644
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties
+++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.win32.OS.properties
@@ -4460,8 +4460,12 @@ SHFILEINFO_iIcon=
SHFILEINFO_dwAttributes=
org_eclipse_swt_internal_win32_SHFILEINFOA=
+SHFILEINFOA_szDisplayName=
+SHFILEINFOA_szTypeName=
org_eclipse_swt_internal_win32_SHFILEINFOW=
+SHFILEINFOW_szDisplayName=
+SHFILEINFOW_szTypeName=
org_eclipse_swt_internal_win32_SHMENUBARINFO=
SHMENUBARINFO_cbSize=
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
index 5187c3ab1f..ae44828cb9 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
@@ -5268,6 +5268,112 @@ void setSHFILEINFOFields(JNIEnv *env, jobject lpObject, SHFILEINFO *lpStruct)
}
#endif
+#ifndef NO_SHFILEINFOA
+typedef struct SHFILEINFOA_FID_CACHE {
+ int cached;
+ jclass clazz;
+ jfieldID szDisplayName, szTypeName;
+} SHFILEINFOA_FID_CACHE;
+
+SHFILEINFOA_FID_CACHE SHFILEINFOAFc;
+
+void cacheSHFILEINFOAFields(JNIEnv *env, jobject lpObject)
+{
+ if (SHFILEINFOAFc.cached) return;
+ cacheSHFILEINFOFields(env, lpObject);
+ SHFILEINFOAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+ SHFILEINFOAFc.szDisplayName = (*env)->GetFieldID(env, SHFILEINFOAFc.clazz, "szDisplayName", "[B");
+ SHFILEINFOAFc.szTypeName = (*env)->GetFieldID(env, SHFILEINFOAFc.clazz, "szTypeName", "[B");
+ SHFILEINFOAFc.cached = 1;
+}
+
+SHFILEINFOA *getSHFILEINFOAFields(JNIEnv *env, jobject lpObject, SHFILEINFOA *lpStruct)
+{
+ if (!SHFILEINFOAFc.cached) cacheSHFILEINFOAFields(env, lpObject);
+ lpStruct->hIcon = (HICON)(*env)->GetIntField(env, lpObject, SHFILEINFOFc.hIcon);
+ lpStruct->iIcon = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.iIcon);
+ lpStruct->dwAttributes = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.dwAttributes);
+ {
+ jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOAFc.szDisplayName);
+ (*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName), (jbyte *)lpStruct->szDisplayName);
+ }
+ {
+ jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOAFc.szTypeName);
+ (*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName), (jbyte *)lpStruct->szTypeName);
+ }
+ return lpStruct;
+}
+
+void setSHFILEINFOAFields(JNIEnv *env, jobject lpObject, SHFILEINFOA *lpStruct)
+{
+ if (!SHFILEINFOAFc.cached) cacheSHFILEINFOAFields(env, lpObject);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.hIcon, (jint)lpStruct->hIcon);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.iIcon, (jint)lpStruct->iIcon);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.dwAttributes, (jint)lpStruct->dwAttributes);
+ {
+ jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOAFc.szDisplayName);
+ (*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName), (jbyte *)lpStruct->szDisplayName);
+ }
+ {
+ jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOAFc.szTypeName);
+ (*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName), (jbyte *)lpStruct->szTypeName);
+ }
+}
+#endif
+
+#ifndef NO_SHFILEINFOW
+typedef struct SHFILEINFOW_FID_CACHE {
+ int cached;
+ jclass clazz;
+ jfieldID szDisplayName, szTypeName;
+} SHFILEINFOW_FID_CACHE;
+
+SHFILEINFOW_FID_CACHE SHFILEINFOWFc;
+
+void cacheSHFILEINFOWFields(JNIEnv *env, jobject lpObject)
+{
+ if (SHFILEINFOWFc.cached) return;
+ cacheSHFILEINFOFields(env, lpObject);
+ SHFILEINFOWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+ SHFILEINFOWFc.szDisplayName = (*env)->GetFieldID(env, SHFILEINFOWFc.clazz, "szDisplayName", "[C");
+ SHFILEINFOWFc.szTypeName = (*env)->GetFieldID(env, SHFILEINFOWFc.clazz, "szTypeName", "[C");
+ SHFILEINFOWFc.cached = 1;
+}
+
+SHFILEINFOW *getSHFILEINFOWFields(JNIEnv *env, jobject lpObject, SHFILEINFOW *lpStruct)
+{
+ if (!SHFILEINFOWFc.cached) cacheSHFILEINFOWFields(env, lpObject);
+ lpStruct->hIcon = (HICON)(*env)->GetIntField(env, lpObject, SHFILEINFOFc.hIcon);
+ lpStruct->iIcon = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.iIcon);
+ lpStruct->dwAttributes = (*env)->GetIntField(env, lpObject, SHFILEINFOFc.dwAttributes);
+ {
+ jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOWFc.szDisplayName);
+ (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName) / 2, (jchar *)lpStruct->szDisplayName);
+ }
+ {
+ jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOWFc.szTypeName);
+ (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName) / 2, (jchar *)lpStruct->szTypeName);
+ }
+ return lpStruct;
+}
+
+void setSHFILEINFOWFields(JNIEnv *env, jobject lpObject, SHFILEINFOW *lpStruct)
+{
+ if (!SHFILEINFOWFc.cached) cacheSHFILEINFOWFields(env, lpObject);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.hIcon, (jint)lpStruct->hIcon);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.iIcon, (jint)lpStruct->iIcon);
+ (*env)->SetIntField(env, lpObject, SHFILEINFOFc.dwAttributes, (jint)lpStruct->dwAttributes);
+ {
+ jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOWFc.szDisplayName);
+ (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szDisplayName) / 2, (jchar *)lpStruct->szDisplayName);
+ }
+ {
+ jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, SHFILEINFOWFc.szTypeName);
+ (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szTypeName) / 2, (jchar *)lpStruct->szTypeName);
+ }
+}
+#endif
+
#ifndef NO_SHMENUBARINFO
typedef struct SHMENUBARINFO_FID_CACHE {
int cached;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
index 49b4d92d31..cce2b214a2 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
@@ -1187,6 +1187,30 @@ void setSHFILEINFOFields(JNIEnv *env, jobject lpObject, SHFILEINFO *lpStruct);
#define SHFILEINFO_sizeof() 0
#endif
+#ifndef NO_SHFILEINFOA
+void cacheSHFILEINFOAFields(JNIEnv *env, jobject lpObject);
+SHFILEINFOA *getSHFILEINFOAFields(JNIEnv *env, jobject lpObject, SHFILEINFOA *lpStruct);
+void setSHFILEINFOAFields(JNIEnv *env, jobject lpObject, SHFILEINFOA *lpStruct);
+#define SHFILEINFOA_sizeof() sizeof(SHFILEINFOA)
+#else
+#define cacheSHFILEINFOAFields(a,b)
+#define getSHFILEINFOAFields(a,b,c) NULL
+#define setSHFILEINFOAFields(a,b,c)
+#define SHFILEINFOA_sizeof() 0
+#endif
+
+#ifndef NO_SHFILEINFOW
+void cacheSHFILEINFOWFields(JNIEnv *env, jobject lpObject);
+SHFILEINFOW *getSHFILEINFOWFields(JNIEnv *env, jobject lpObject, SHFILEINFOW *lpStruct);
+void setSHFILEINFOWFields(JNIEnv *env, jobject lpObject, SHFILEINFOW *lpStruct);
+#define SHFILEINFOW_sizeof() sizeof(SHFILEINFOW)
+#else
+#define cacheSHFILEINFOWFields(a,b)
+#define getSHFILEINFOWFields(a,b,c) NULL
+#define setSHFILEINFOWFields(a,b,c)
+#define SHFILEINFOW_sizeof() 0
+#endif
+
#ifndef NO_SHMENUBARINFO
void cacheSHMENUBARINFOFields(JNIEnv *env, jobject lpObject);
SHMENUBARINFO *getSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOA.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOA.java
index 110e79daee..e79376b4e6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOA.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOA.java
@@ -11,7 +11,7 @@
package org.eclipse.swt.internal.win32;
public class SHFILEINFOA extends SHFILEINFO {
- byte [] szDisplayName = new byte [OS.MAX_PATH];
- byte [] szTypeName = new byte [80];
+ public byte [] szDisplayName = new byte [OS.MAX_PATH];
+ public byte [] szTypeName = new byte [80];
public static int sizeof = 352;
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOW.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOW.java
index 20e44c9524..b8b7c21ce5 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOW.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SHFILEINFOW.java
@@ -11,7 +11,7 @@
package org.eclipse.swt.internal.win32;
public class SHFILEINFOW extends SHFILEINFO {
- char [] szDisplayName = new char [OS.MAX_PATH];
- char [] szTypeName = new char [80];
+ public char [] szDisplayName = new char [OS.MAX_PATH];
+ public char [] szTypeName = new char [80];
public static int sizeof = 692;
}