diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT PI/wpf_win32/library/win32.c')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT PI/wpf_win32/library/win32.c | 413 |
1 files changed, 413 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/wpf_win32/library/win32.c b/bundles/org.eclipse.swt/Eclipse SWT PI/wpf_win32/library/win32.c new file mode 100644 index 0000000000..54cfe03c00 --- /dev/null +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/wpf_win32/library/win32.c @@ -0,0 +1,413 @@ +/******************************************************************************* + * Copyright (c) 2000, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +#include "swt.h" +#include "win32_structs.h" +#include "win32_stats.h" + +#define Win32_NATIVE(func) Java_org_eclipse_swt_internal_win32_Win32_##func + +#ifndef NO_CloseHandle +JNIEXPORT jboolean JNICALL Win32_NATIVE(CloseHandle) + (JNIEnv *env, jclass that, jint arg0) +{ + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, CloseHandle_FUNC); + rc = (jboolean)CloseHandle((HANDLE)arg0); + Win32_NATIVE_EXIT(env, that, CloseHandle_FUNC); + return rc; +} +#endif + +#ifndef NO_CreateCursor +JNIEXPORT jint JNICALL Win32_NATIVE(CreateCursor) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jbyteArray arg5, jbyteArray arg6) +{ + jbyte *lparg5=NULL; + jbyte *lparg6=NULL; + jint rc = 0; + Win32_NATIVE_ENTER(env, that, CreateCursor_FUNC); +#ifdef JNI_VERSION_1_2 + if (IS_JNI_1_2) { + if (arg5) if ((lparg5 = (*env)->GetPrimitiveArrayCritical(env, arg5, NULL)) == NULL) goto fail; + if (arg6) if ((lparg6 = (*env)->GetPrimitiveArrayCritical(env, arg6, NULL)) == NULL) goto fail; + } else +#endif + { + if (arg5) if ((lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL)) == NULL) goto fail; + if (arg6) if ((lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL)) == NULL) goto fail; + } + rc = (jint)CreateCursor((HINSTANCE)arg0, arg1, arg2, arg3, arg4, (CONST VOID *)lparg5, (CONST VOID *)lparg6); +fail: +#ifdef JNI_VERSION_1_2 + if (IS_JNI_1_2) { + if (arg6 && lparg6) (*env)->ReleasePrimitiveArrayCritical(env, arg6, lparg6, JNI_ABORT); + if (arg5 && lparg5) (*env)->ReleasePrimitiveArrayCritical(env, arg5, lparg5, JNI_ABORT); + } else +#endif + { + if (arg6 && lparg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, JNI_ABORT); + if (arg5 && lparg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, JNI_ABORT); + } + Win32_NATIVE_EXIT(env, that, CreateCursor_FUNC); + return rc; +} +#endif + +#ifndef NO_CreateIconIndirect +JNIEXPORT jint JNICALL Win32_NATIVE(CreateIconIndirect) + (JNIEnv *env, jclass that, jobject arg0) +{ + ICONINFO _arg0, *lparg0=NULL; + jint rc = 0; + Win32_NATIVE_ENTER(env, that, CreateIconIndirect_FUNC); + if (arg0) if ((lparg0 = getICONINFOFields(env, arg0, &_arg0)) == NULL) goto fail; + rc = (jint)CreateIconIndirect(lparg0); +fail: + if (arg0 && lparg0) setICONINFOFields(env, arg0, lparg0); + Win32_NATIVE_EXIT(env, that, CreateIconIndirect_FUNC); + return rc; +} +#endif + +#ifndef NO_CreateProcessW +JNIEXPORT jboolean JNICALL Win32_NATIVE(CreateProcessW) + (JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jboolean arg4, jint arg5, jint arg6, jint arg7, jobject arg8, jobject arg9) +{ + jchar *lparg1=NULL; + STARTUPINFOW _arg8, *lparg8=NULL; + PROCESS_INFORMATION _arg9, *lparg9=NULL; + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, CreateProcessW_FUNC); + if (arg1) if ((lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL)) == NULL) goto fail; + if (arg8) if ((lparg8 = getSTARTUPINFOWFields(env, arg8, &_arg8)) == NULL) goto fail; + if (arg9) if ((lparg9 = getPROCESS_INFORMATIONFields(env, arg9, &_arg9)) == NULL) goto fail; + rc = (jboolean)CreateProcessW((LPCWSTR)arg0, (LPWSTR)lparg1, (LPSECURITY_ATTRIBUTES)arg2, (LPSECURITY_ATTRIBUTES)arg3, arg4, (DWORD)arg5, (LPVOID)arg6, (LPCWSTR)arg7, (LPSTARTUPINFOW)lparg8, (LPPROCESS_INFORMATION)lparg9); +fail: + if (arg9 && lparg9) setPROCESS_INFORMATIONFields(env, arg9, lparg9); + if (arg8 && lparg8) setSTARTUPINFOWFields(env, arg8, lparg8); + if (arg1 && lparg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0); + Win32_NATIVE_EXIT(env, that, CreateProcessW_FUNC); + return rc; +} +#endif + +#ifndef NO_DeleteObject +JNIEXPORT jboolean JNICALL Win32_NATIVE(DeleteObject) + (JNIEnv *env, jclass that, jint arg0) +{ + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, DeleteObject_FUNC); + rc = (jboolean)DeleteObject((HGDIOBJ)arg0); + Win32_NATIVE_EXIT(env, that, DeleteObject_FUNC); + return rc; +} +#endif + +#ifndef NO_DestroyIcon +JNIEXPORT jboolean JNICALL Win32_NATIVE(DestroyIcon) + (JNIEnv *env, jclass that, jint arg0) +{ + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, DestroyIcon_FUNC); + rc = (jboolean)DestroyIcon((HICON)arg0); + Win32_NATIVE_EXIT(env, that, DestroyIcon_FUNC); + return rc; +} +#endif + +#ifndef NO_EnableWindow +JNIEXPORT void JNICALL Win32_NATIVE(EnableWindow) + (JNIEnv *env, jclass that, jint arg0, jboolean arg1) +{ + Win32_NATIVE_ENTER(env, that, EnableWindow_FUNC); + EnableWindow((HWND)arg0, arg1); + Win32_NATIVE_EXIT(env, that, EnableWindow_FUNC); +} +#endif + +#ifndef NO_ExtractIconExW +JNIEXPORT jint JNICALL Win32_NATIVE(ExtractIconExW) + (JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jintArray arg2, jintArray arg3, jint arg4) +{ + jchar *lparg0=NULL; + jint *lparg2=NULL; + jint *lparg3=NULL; + jint rc = 0; + Win32_NATIVE_ENTER(env, that, ExtractIconExW_FUNC); + if (arg0) if ((lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL)) == NULL) goto fail; + if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail; + if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail; + rc = (jint)ExtractIconExW((LPCWSTR)lparg0, arg1, (HICON*)lparg2, (HICON*)lparg3, (UINT)arg4); +fail: + if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0); + if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0); + if (arg0 && lparg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0); + Win32_NATIVE_EXIT(env, that, ExtractIconExW_FUNC); + return rc; +} +#endif + +#ifndef NO_GetCursorPos +JNIEXPORT void JNICALL Win32_NATIVE(GetCursorPos) + (JNIEnv *env, jclass that, jobject arg0) +{ + POINT _arg0, *lparg0=NULL; + Win32_NATIVE_ENTER(env, that, GetCursorPos_FUNC); + if (arg0) if ((lparg0 = getPOINTFields(env, arg0, &_arg0)) == NULL) goto fail; + GetCursorPos((LPPOINT)lparg0); +fail: + if (arg0 && lparg0) setPOINTFields(env, arg0, lparg0); + Win32_NATIVE_EXIT(env, that, GetCursorPos_FUNC); +} +#endif + +#ifndef NO_GetIconInfo +JNIEXPORT jboolean JNICALL Win32_NATIVE(GetIconInfo) + (JNIEnv *env, jclass that, jint arg0, jobject arg1) +{ + ICONINFO _arg1, *lparg1=NULL; + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, GetIconInfo_FUNC); + if (arg1) if ((lparg1 = getICONINFOFields(env, arg1, &_arg1)) == NULL) goto fail; + rc = (jboolean)GetIconInfo((HICON)arg0, lparg1); +fail: + if (arg1 && lparg1) setICONINFOFields(env, arg1, lparg1); + Win32_NATIVE_EXIT(env, that, GetIconInfo_FUNC); + return rc; +} +#endif + +#ifndef NO_GetKeyboardState +JNIEXPORT jboolean JNICALL Win32_NATIVE(GetKeyboardState) + (JNIEnv *env, jclass that, jbyteArray arg0) +{ + jbyte *lparg0=NULL; + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, GetKeyboardState_FUNC); + if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail; + rc = (jboolean)GetKeyboardState((PBYTE)lparg0); +fail: + if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0); + Win32_NATIVE_EXIT(env, that, GetKeyboardState_FUNC); + return rc; +} +#endif + +#ifndef NO_GetModuleHandleW +JNIEXPORT jint JNICALL Win32_NATIVE(GetModuleHandleW) + (JNIEnv *env, jclass that, jcharArray arg0) +{ + jchar *lparg0=NULL; + jint rc = 0; + Win32_NATIVE_ENTER(env, that, GetModuleHandleW_FUNC); + if (arg0) if ((lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL)) == NULL) goto fail; + rc = (jint)GetModuleHandleW((LPCWSTR)lparg0); +fail: + if (arg0 && lparg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0); + Win32_NATIVE_EXIT(env, that, GetModuleHandleW_FUNC); + return rc; +} +#endif + +#ifndef NO_GetProcessHeap +JNIEXPORT jint JNICALL Win32_NATIVE(GetProcessHeap) + (JNIEnv *env, jclass that) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, GetProcessHeap_FUNC); + rc = (jint)GetProcessHeap(); + Win32_NATIVE_EXIT(env, that, GetProcessHeap_FUNC); + return rc; +} +#endif + +#ifndef NO_HeapAlloc +JNIEXPORT jint JNICALL Win32_NATIVE(HeapAlloc) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, HeapAlloc_FUNC); + rc = (jint)HeapAlloc((HANDLE)arg0, arg1, arg2); + Win32_NATIVE_EXIT(env, that, HeapAlloc_FUNC); + return rc; +} +#endif + +#ifndef NO_HeapFree +JNIEXPORT jboolean JNICALL Win32_NATIVE(HeapFree) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2) +{ + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, HeapFree_FUNC); + rc = (jboolean)HeapFree((HANDLE)arg0, arg1, (LPVOID)arg2); + Win32_NATIVE_EXIT(env, that, HeapFree_FUNC); + return rc; +} +#endif + +#ifndef NO_LoadImage +JNIEXPORT jint JNICALL Win32_NATIVE(LoadImage) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, LoadImage_FUNC); + rc = (jint)LoadImage((HINSTANCE)arg0, (LPCTSTR)arg1, (UINT)arg2, arg3, arg4, (UINT)arg5); + Win32_NATIVE_EXIT(env, that, LoadImage_FUNC); + return rc; +} +#endif + +#ifndef NO_MapVirtualKeyW +JNIEXPORT jint JNICALL Win32_NATIVE(MapVirtualKeyW) + (JNIEnv *env, jclass that, jint arg0, jint arg1) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, MapVirtualKeyW_FUNC); + rc = (jint)MapVirtualKeyW(arg0, arg1); + Win32_NATIVE_EXIT(env, that, MapVirtualKeyW_FUNC); + return rc; +} +#endif + +#ifndef NO_MoveMemory +JNIEXPORT void JNICALL Win32_NATIVE(MoveMemory) + (JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2) +{ + jchar *lparg1=NULL; + Win32_NATIVE_ENTER(env, that, MoveMemory_FUNC); +#ifdef JNI_VERSION_1_2 + if (IS_JNI_1_2) { + if (arg1) if ((lparg1 = (*env)->GetPrimitiveArrayCritical(env, arg1, NULL)) == NULL) goto fail; + } else +#endif + { + if (arg1) if ((lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL)) == NULL) goto fail; + } + MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2); +fail: +#ifdef JNI_VERSION_1_2 + if (IS_JNI_1_2) { + if (arg1 && lparg1) (*env)->ReleasePrimitiveArrayCritical(env, arg1, lparg1, JNI_ABORT); + } else +#endif + { + if (arg1 && lparg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, JNI_ABORT); + } + Win32_NATIVE_EXIT(env, that, MoveMemory_FUNC); +} +#endif + +#ifndef NO_OleInitialize +JNIEXPORT jint JNICALL Win32_NATIVE(OleInitialize) + (JNIEnv *env, jclass that, jint arg0) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, OleInitialize_FUNC); + rc = (jint)OleInitialize((LPVOID)arg0); + Win32_NATIVE_EXIT(env, that, OleInitialize_FUNC); + return rc; +} +#endif + +#ifndef NO_OleUninitialize +JNIEXPORT void JNICALL Win32_NATIVE(OleUninitialize) + (JNIEnv *env, jclass that) +{ + Win32_NATIVE_ENTER(env, that, OleUninitialize_FUNC); + OleUninitialize(); + Win32_NATIVE_EXIT(env, that, OleUninitialize_FUNC); +} +#endif + +#ifndef NO_PROCESS_1INFORMATION_1sizeof +JNIEXPORT jint JNICALL Win32_NATIVE(PROCESS_1INFORMATION_1sizeof) + (JNIEnv *env, jclass that) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, PROCESS_1INFORMATION_1sizeof_FUNC); + rc = (jint)PROCESS_INFORMATION_sizeof(); + Win32_NATIVE_EXIT(env, that, PROCESS_1INFORMATION_1sizeof_FUNC); + return rc; +} +#endif + +#ifndef NO_SHELLEXECUTEINFOW_1sizeof +JNIEXPORT jint JNICALL Win32_NATIVE(SHELLEXECUTEINFOW_1sizeof) + (JNIEnv *env, jclass that) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, SHELLEXECUTEINFOW_1sizeof_FUNC); + rc = (jint)SHELLEXECUTEINFOW_sizeof(); + Win32_NATIVE_EXIT(env, that, SHELLEXECUTEINFOW_1sizeof_FUNC); + return rc; +} +#endif + +#ifndef NO_STARTUPINFOW_1sizeof +JNIEXPORT jint JNICALL Win32_NATIVE(STARTUPINFOW_1sizeof) + (JNIEnv *env, jclass that) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, STARTUPINFOW_1sizeof_FUNC); + rc = (jint)STARTUPINFOW_sizeof(); + Win32_NATIVE_EXIT(env, that, STARTUPINFOW_1sizeof_FUNC); + return rc; +} +#endif + +#ifndef NO_SetCursorPos +JNIEXPORT jint JNICALL Win32_NATIVE(SetCursorPos) + (JNIEnv *env, jclass that, jint arg0, jint arg1) +{ + jint rc = 0; + Win32_NATIVE_ENTER(env, that, SetCursorPos_FUNC); + rc = (jint)SetCursorPos(arg0, arg1); + Win32_NATIVE_EXIT(env, that, SetCursorPos_FUNC); + return rc; +} +#endif + +#ifndef NO_ShellExecuteExW +JNIEXPORT jboolean JNICALL Win32_NATIVE(ShellExecuteExW) + (JNIEnv *env, jclass that, jobject arg0) +{ + SHELLEXECUTEINFOW _arg0, *lparg0=NULL; + jboolean rc = 0; + Win32_NATIVE_ENTER(env, that, ShellExecuteExW_FUNC); + if (arg0) if ((lparg0 = getSHELLEXECUTEINFOWFields(env, arg0, &_arg0)) == NULL) goto fail; + rc = (jboolean)ShellExecuteExW((LPSHELLEXECUTEINFOW)lparg0); +fail: + if (arg0 && lparg0) setSHELLEXECUTEINFOWFields(env, arg0, lparg0); + Win32_NATIVE_EXIT(env, that, ShellExecuteExW_FUNC); + return rc; +} +#endif + +#ifndef NO_ToUnicode +JNIEXPORT jint JNICALL Win32_NATIVE(ToUnicode) + (JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jcharArray arg3, jint arg4, jint arg5) +{ + jbyte *lparg2=NULL; + jchar *lparg3=NULL; + jint rc = 0; + Win32_NATIVE_ENTER(env, that, ToUnicode_FUNC); + if (arg2) if ((lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL)) == NULL) goto fail; + if (arg3) if ((lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL)) == NULL) goto fail; + rc = (jint)ToUnicode(arg0, arg1, (PBYTE)lparg2, (LPWSTR)lparg3, arg4, arg5); +fail: + if (arg3 && lparg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0); + if (arg2 && lparg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0); + Win32_NATIVE_EXIT(env, that, ToUnicode_FUNC); + return rc; +} +#endif + |