blob: 54cfe03c001637f0e0ec33f063065f0bc6f5c4f5 [file] [log] [blame]
/*******************************************************************************
* 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