Moved ALC error check to java. Fix linux type cast warnings

This commit is contained in:
Elias Naur 2005-04-12 10:55:23 +00:00
parent f5cf0ef2a4
commit f3d3ce7ce5
6 changed files with 54 additions and 103 deletions

View File

@ -164,10 +164,11 @@ public final class ALC {
* @return String property from device * @return String property from device
*/ */
public static String alcGetString(int pname) { public static String alcGetString(int pname) {
return nalcGetString(AL.device.device, pname); String result = nalcGetString(AL.device.device, pname);
Util.checkALCError();
return result;
} }
private native static String nalcGetString(long device, int pname);
native static String nalcGetString(long device, int pname);
/** /**
* The application can query ALC for information using an integer query function. * The application can query ALC for information using an integer query function.
@ -192,9 +193,9 @@ public final class ALC {
public static void alcGetInteger(int pname, IntBuffer integerdata) { public static void alcGetInteger(int pname, IntBuffer integerdata) {
BufferChecks.checkDirect(integerdata); BufferChecks.checkDirect(integerdata);
nalcGetIntegerv(AL.device.device, pname, integerdata.remaining(), integerdata, integerdata.position()); nalcGetIntegerv(AL.device.device, pname, integerdata.remaining(), integerdata, integerdata.position());
Util.checkALCError();
} }
private native static void nalcGetIntegerv(long device, int pname, int size, Buffer integerdata, int offset);
native static void nalcGetIntegerv(long device, int pname, int size, Buffer integerdata, int offset);
/** /**
* The <code>alcOpenDevice</code> function allows the application (i.e. the client program) to * The <code>alcOpenDevice</code> function allows the application (i.e. the client program) to
@ -236,7 +237,12 @@ public final class ALC {
* @param attrList Buffer to read attributes from * @param attrList Buffer to read attributes from
* @return New context, or null if creation failed * @return New context, or null if creation failed
*/ */
native static ALCcontext alcCreateContext(long device, IntBuffer attrList); static ALCcontext alcCreateContext(long device, IntBuffer attrList) {
ALCcontext result = nalcCreateContext(device, attrList);
Util.checkALCError();
return result;
}
private native static ALCcontext nalcCreateContext(long device, IntBuffer attrList);
/** /**
* To make a Context current with respect to AL Operation (state changes by issueing * To make a Context current with respect to AL Operation (state changes by issueing
@ -268,8 +274,7 @@ public final class ALC {
public static void alcProcessContext() { public static void alcProcessContext() {
nalcProcessContext(AL.context.context); nalcProcessContext(AL.context.context);
} }
private native static void nalcProcessContext(long context);
native static void nalcProcessContext(long context);
/** /**
* The application can query for, and obtain an handle to, the current context for the * The application can query for, and obtain an handle to, the current context for the
@ -302,7 +307,7 @@ public final class ALC {
public static void alcSuspendContext() { public static void alcSuspendContext() {
nalcSuspendContext(AL.context.context); nalcSuspendContext(AL.context.context);
} }
native static void nalcSuspendContext(long context); private native static void nalcSuspendContext(long context);
/** /**
* The correct way to destroy a context is to first release it using <code>alcMakeCurrent</code> and * The correct way to destroy a context is to first release it using <code>alcMakeCurrent</code> and
@ -330,8 +335,7 @@ public final class ALC {
public static int alcGetError() { public static int alcGetError() {
return nalcGetError(AL.device.device); return nalcGetError(AL.device.device);
} }
private native static int nalcGetError(long device);
native static int nalcGetError(long device);
/** /**
* Verify that a given extension is available for the current context and the device it * Verify that a given extension is available for the current context and the device it
@ -343,10 +347,11 @@ public final class ALC {
* @return true if extension is available, false if not * @return true if extension is available, false if not
*/ */
public static boolean alcIsExtensionPresent(String extName) { public static boolean alcIsExtensionPresent(String extName) {
return nalcIsExtensionPresent(AL.device.device, extName); boolean result = nalcIsExtensionPresent(AL.device.device, extName);
Util.checkALCError();
return result;
} }
private native static boolean nalcIsExtensionPresent(long device, String extName);
native static boolean nalcIsExtensionPresent(long device, String extName);
/** /**
* Enumeration/token values are device independend, but tokens defined for * Enumeration/token values are device independend, but tokens defined for
@ -359,8 +364,9 @@ public final class ALC {
* @return value of enumeration * @return value of enumeration
*/ */
public static int alcGetEnumValue(String enumName) { public static int alcGetEnumValue(String enumName) {
return nalcGetEnumValue(AL.device.device, enumName); int result = nalcGetEnumValue(AL.device.device, enumName);
Util.checkALCError();
return result;
} }
private native static int nalcGetEnumValue(long device, String enumName);
native static int nalcGetEnumValue(long device, String enumName);
} }

View File

@ -47,6 +47,12 @@ public final class Util {
private Util() { private Util() {
} }
public static void checkALCError() {
int err = ALC.alcGetError();
if (err != ALC.ALC_NO_ERROR)
throw new OpenALException(ALC.alcGetString(err));
}
public static void checkALError() { public static void checkALError() {
int err = AL10.alGetError(); int err = AL10.alGetError();
if (err != AL10.AL_NO_ERROR) if (err != AL10.AL_NO_ERROR)

View File

@ -1,51 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _CHECKALERROR_H_INCLUDED_
#define _CHECKALERROR_H_INCLUDED_
#include <jni.h>
#include "extal.h"
#include "common_tools.h"
/* only available if deviceaddress is specified in method */
#define CHECK_ALC_ERROR \
{ \
int err = alcGetError((ALCdevice*) deviceaddress); \
if (err != AL_NO_ERROR) { \
jclass cls = (*env)->FindClass(env, "org/lwjgl/openal/OpenALException"); \
(*env)->ThrowNew(env, cls, (const char*) alcGetString((ALCdevice*) deviceaddress, err)); \
(*env)->DeleteLocalRef(env, cls); \
} \
}
#endif /* _CHECKALERROR_H_INCLUDED_ */

View File

@ -33,7 +33,6 @@
#include "org_lwjgl_openal_AL.h" #include "org_lwjgl_openal_AL.h"
/* OpenAL includes */ /* OpenAL includes */
#include "checkALerror.h"
#include "extal.h" #include "extal.h"
JNIEXPORT void JNICALL Java_org_lwjgl_openal_AL_nCreate (JNIEnv *env, jclass clazz, jobjectArray oalPaths) { JNIEXPORT void JNICALL Java_org_lwjgl_openal_AL_nCreate (JNIEnv *env, jclass clazz, jobjectArray oalPaths) {

View File

@ -1,7 +1,6 @@
/* MACHINE GENERATED FILE, DO NOT EDIT */ /* MACHINE GENERATED FILE, DO NOT EDIT */
#include <jni.h> #include <jni.h>
#include "checkALerror.h"
#include "extal.h" #include "extal.h"
typedef ALvoid (ALAPIENTRY *alDopplerVelocityPROC) (ALfloat value); typedef ALvoid (ALAPIENTRY *alDopplerVelocityPROC) (ALfloat value);

View File

@ -40,7 +40,6 @@
*/ */
/* OpenAL includes */ /* OpenAL includes */
#include "checkALerror.h"
#include "extal.h" #include "extal.h"
//alc //alc
@ -82,7 +81,7 @@ static alcGetEnumValuePROC alcGetEnumValue;
* ALubyte * alcGetString(ALCdevice *device, ALenum token); * ALubyte * alcGetString(ALCdevice *device, ALenum token);
*/ */
static jstring JNICALL Java_org_lwjgl_openal_ALC_nalcGetString (JNIEnv *env, jclass clazz, jlong deviceaddress, jint token) { static jstring JNICALL Java_org_lwjgl_openal_ALC_nalcGetString (JNIEnv *env, jclass clazz, jlong deviceaddress, jint token) {
const char* alcString = (const char*) alcGetString((ALCdevice*) deviceaddress, (ALenum) token); const char* alcString = (const char*) alcGetString((ALCdevice*)((intptr_t)deviceaddress), (ALenum) token);
jstring string; jstring string;
if(alcString == NULL) { if(alcString == NULL) {
@ -91,7 +90,6 @@ static jstring JNICALL Java_org_lwjgl_openal_ALC_nalcGetString (JNIEnv *env, jcl
string = NewStringNative(env, alcString); string = NewStringNative(env, alcString);
CHECK_ALC_ERROR
return string; return string;
} }
@ -106,8 +104,7 @@ static void JNICALL Java_org_lwjgl_openal_ALC_nalcGetIntegerv (JNIEnv *env, jcla
if (dest != NULL) { if (dest != NULL) {
address = offset + (ALint*) (*env)->GetDirectBufferAddress(env, dest); address = offset + (ALint*) (*env)->GetDirectBufferAddress(env, dest);
} }
alcGetIntegerv((ALCdevice*) deviceaddress, (ALenum) token, (ALsizei) size, address); alcGetIntegerv((ALCdevice*)((intptr_t)deviceaddress), (ALenum) token, (ALsizei) size, address);
CHECK_ALC_ERROR
} }
/** /**
@ -146,7 +143,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcOpenDevice (JNIEnv *env, jcl
alcDevice_method = (*env)->GetMethodID(env, alcDevice_class, "<init>", "(J)V"); alcDevice_method = (*env)->GetMethodID(env, alcDevice_class, "<init>", "(J)V");
/* create instance */ /* create instance */
alcDevice_object = (*env)->NewObject(env, alcDevice_class, alcDevice_method, (jlong) device); alcDevice_object = (*env)->NewObject(env, alcDevice_class, alcDevice_method, (jlong)((intptr_t)device));
/* clean up */ /* clean up */
if (tokenstring != NULL) if (tokenstring != NULL)
@ -162,7 +159,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcOpenDevice (JNIEnv *env, jcl
* void alcCloseDevice( ALCdevice *dev ); * void alcCloseDevice( ALCdevice *dev );
*/ */
static void JNICALL Java_org_lwjgl_openal_ALC_alcCloseDevice (JNIEnv *env, jclass clazz, jlong deviceaddress) { static void JNICALL Java_org_lwjgl_openal_ALC_alcCloseDevice (JNIEnv *env, jclass clazz, jlong deviceaddress) {
alcCloseDevice((ALCdevice*) deviceaddress); alcCloseDevice((ALCdevice*)((intptr_t)deviceaddress));
} }
/** /**
@ -171,7 +168,7 @@ static void JNICALL Java_org_lwjgl_openal_ALC_alcCloseDevice (JNIEnv *env, jclas
* C Specification: * C Specification:
* ALCcontext* alcCreateContext( ALCdevice *dev, ALint* attrlist ); * ALCcontext* alcCreateContext( ALCdevice *dev, ALint* attrlist );
*/ */
static jobject JNICALL Java_org_lwjgl_openal_ALC_alcCreateContext (JNIEnv *env, jclass clazz, jlong deviceaddress, jobject attrlist) { static jobject JNICALL Java_org_lwjgl_openal_ALC_nalcCreateContext (JNIEnv *env, jclass clazz, jlong deviceaddress, jobject attrlist) {
ALint* address = NULL; ALint* address = NULL;
ALCcontext* context; ALCcontext* context;
/* get ready to create ALCcontext instance */ /* get ready to create ALCcontext instance */
@ -182,7 +179,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcCreateContext (JNIEnv *env,
if (attrlist != NULL) { if (attrlist != NULL) {
address = (ALint*) (*env)->GetDirectBufferAddress(env, attrlist); address = (ALint*) (*env)->GetDirectBufferAddress(env, attrlist);
} }
context = alcCreateContext((ALCdevice*) deviceaddress, address); context = alcCreateContext((ALCdevice*)((intptr_t)deviceaddress), address);
/* if error - get out */ /* if error - get out */
if(context == NULL) { if(context == NULL) {
@ -194,9 +191,8 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcCreateContext (JNIEnv *env,
alcContext_method = (*env)->GetMethodID(env, alcContext_class, "<init>", "(J)V"); alcContext_method = (*env)->GetMethodID(env, alcContext_class, "<init>", "(J)V");
/* create instance */ /* create instance */
alcContext_object = (*env)->NewObject(env, alcContext_class, alcContext_method, (jlong)context); alcContext_object = (*env)->NewObject(env, alcContext_class, alcContext_method, (jlong)((intptr_t)context));
CHECK_ALC_ERROR
return alcContext_object; return alcContext_object;
} }
@ -207,7 +203,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcCreateContext (JNIEnv *env,
* ALCboolean alcMakeContextCurrent(ALCcontext *context); * ALCboolean alcMakeContextCurrent(ALCcontext *context);
*/ */
static jint JNICALL Java_org_lwjgl_openal_ALC_alcMakeContextCurrent (JNIEnv *env, jclass clazz, jlong contextaddress) { static jint JNICALL Java_org_lwjgl_openal_ALC_alcMakeContextCurrent (JNIEnv *env, jclass clazz, jlong contextaddress) {
ALCcontext* context = (ALCcontext*) contextaddress; ALCcontext* context = (ALCcontext*)((intptr_t)contextaddress);
ALCenum result; ALCenum result;
if(context == NULL) { if(context == NULL) {
result = alcMakeContextCurrent(NULL); result = alcMakeContextCurrent(NULL);
@ -224,7 +220,7 @@ static jint JNICALL Java_org_lwjgl_openal_ALC_alcMakeContextCurrent (JNIEnv *env
* void alcProcessContext(ALCcontext *context); * void alcProcessContext(ALCcontext *context);
*/ */
static void JNICALL Java_org_lwjgl_openal_ALC_nalcProcessContext (JNIEnv *env, jclass clazz, jlong contextaddress) { static void JNICALL Java_org_lwjgl_openal_ALC_nalcProcessContext (JNIEnv *env, jclass clazz, jlong contextaddress) {
alcProcessContext((ALCcontext*) contextaddress); alcProcessContext((ALCcontext*)((intptr_t)contextaddress));
} }
/** /**
@ -249,7 +245,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetCurrentContext (JNIEnv *e
alcContext_method = (*env)->GetMethodID(env, alcContext_class, "<init>", "(J)V"); alcContext_method = (*env)->GetMethodID(env, alcContext_class, "<init>", "(J)V");
/* create instance */ /* create instance */
alcContext_object = (*env)->NewObject(env, alcContext_class, alcContext_method, (jlong) context); alcContext_object = (*env)->NewObject(env, alcContext_class, alcContext_method, (jlong)((intptr_t)context));
return alcContext_object; return alcContext_object;
} }
@ -261,8 +257,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetCurrentContext (JNIEnv *e
* ALCdevice* alcGetContextsDevice(ALCcontext *context); * ALCdevice* alcGetContextsDevice(ALCcontext *context);
*/ */
static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetContextsDevice (JNIEnv *env, jclass clazz, jlong contextaddress) { static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetContextsDevice (JNIEnv *env, jclass clazz, jlong contextaddress) {
ALCdevice* device = alcGetContextsDevice((ALCcontext*)((intptr_t)contextaddress));
ALCdevice* device = alcGetContextsDevice((ALCcontext*) contextaddress);
/* get ready to create ALCdevice instance */ /* get ready to create ALCdevice instance */
jobject alcDevice_object = NULL; jobject alcDevice_object = NULL;
jclass alcDevice_class = NULL; jclass alcDevice_class = NULL;
@ -277,7 +272,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetContextsDevice (JNIEnv *e
alcDevice_method = (*env)->GetMethodID(env, alcDevice_class, "<init>", "(J)V"); alcDevice_method = (*env)->GetMethodID(env, alcDevice_class, "<init>", "(J)V");
/* create instance */ /* create instance */
alcDevice_object = (*env)->NewObject(env, alcDevice_class, alcDevice_method, (jlong) device); alcDevice_object = (*env)->NewObject(env, alcDevice_class, alcDevice_method, (jlong)((intptr_t)device));
return alcDevice_object; return alcDevice_object;
} }
@ -289,7 +284,7 @@ static jobject JNICALL Java_org_lwjgl_openal_ALC_alcGetContextsDevice (JNIEnv *e
* void alcSuspendContext(ALCcontext *context); * void alcSuspendContext(ALCcontext *context);
*/ */
static void JNICALL Java_org_lwjgl_openal_ALC_nalcSuspendContext (JNIEnv *env, jclass clazz, jlong contextaddress) { static void JNICALL Java_org_lwjgl_openal_ALC_nalcSuspendContext (JNIEnv *env, jclass clazz, jlong contextaddress) {
alcSuspendContext((ALCcontext*) contextaddress); alcSuspendContext((ALCcontext*)((intptr_t)contextaddress));
} }
/** /**
@ -299,7 +294,7 @@ static void JNICALL Java_org_lwjgl_openal_ALC_nalcSuspendContext (JNIEnv *env, j
* void alcDestroyContext(ALCcontext *context); * void alcDestroyContext(ALCcontext *context);
*/ */
static void JNICALL Java_org_lwjgl_openal_ALC_alcDestroyContext (JNIEnv *env, jclass clazz, jlong contextaddress) { static void JNICALL Java_org_lwjgl_openal_ALC_alcDestroyContext (JNIEnv *env, jclass clazz, jlong contextaddress) {
alcDestroyContext((ALCcontext*) contextaddress); alcDestroyContext((ALCcontext*)((intptr_t)contextaddress));
} }
/** /**
@ -309,8 +304,7 @@ static void JNICALL Java_org_lwjgl_openal_ALC_alcDestroyContext (JNIEnv *env, jc
* ALCenum alcGetError(ALCdevice *device); * ALCenum alcGetError(ALCdevice *device);
*/ */
static jint JNICALL Java_org_lwjgl_openal_ALC_nalcGetError (JNIEnv *env, jclass clazz, jlong deviceaddress) { static jint JNICALL Java_org_lwjgl_openal_ALC_nalcGetError (JNIEnv *env, jclass clazz, jlong deviceaddress) {
jint result = alcGetError((ALCdevice*) deviceaddress); jint result = alcGetError((ALCdevice*)((intptr_t)deviceaddress));
CHECK_ALC_ERROR
return result; return result;
} }
@ -324,11 +318,10 @@ static jboolean JNICALL Java_org_lwjgl_openal_ALC_nalcIsExtensionPresent (JNIEnv
/* get extension */ /* get extension */
ALubyte* functionname = (ALubyte*) GetStringNativeChars(env, extName); ALubyte* functionname = (ALubyte*) GetStringNativeChars(env, extName);
jboolean result = (jboolean) alcIsExtensionPresent((ALCdevice*) deviceaddress, functionname); jboolean result = (jboolean) alcIsExtensionPresent((ALCdevice*)((intptr_t)deviceaddress), functionname);
free(functionname); free(functionname);
CHECK_ALC_ERROR
return result; return result;
} }
@ -342,11 +335,10 @@ static jint JNICALL Java_org_lwjgl_openal_ALC_nalcGetEnumValue (JNIEnv *env, jcl
/* get extension */ /* get extension */
ALubyte* enumerationname = (ALubyte*) GetStringNativeChars(env, enumName); ALubyte* enumerationname = (ALubyte*) GetStringNativeChars(env, enumName);
jint result = (jint) alcGetEnumValue((ALCdevice*) deviceaddress, enumerationname); jint result = (jint) alcGetEnumValue((ALCdevice*)((intptr_t)deviceaddress), enumerationname);
free(enumerationname); free(enumerationname);
CHECK_ALC_ERROR
return result; return result;
} }
@ -364,7 +356,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_initNativeStubs(JNIEnv *env, jc
{"nalcGetIntegerv", "(JIILjava/nio/Buffer;I)V", (void*)&Java_org_lwjgl_openal_ALC_nalcGetIntegerv, "alcGetIntegerv", (void*)&alcGetIntegerv}, {"nalcGetIntegerv", "(JIILjava/nio/Buffer;I)V", (void*)&Java_org_lwjgl_openal_ALC_nalcGetIntegerv, "alcGetIntegerv", (void*)&alcGetIntegerv},
{"alcOpenDevice", "(Ljava/lang/String;)Lorg/lwjgl/openal/ALCdevice;", (void*)&Java_org_lwjgl_openal_ALC_alcOpenDevice, "alcOpenDevice", (void*)&alcOpenDevice}, {"alcOpenDevice", "(Ljava/lang/String;)Lorg/lwjgl/openal/ALCdevice;", (void*)&Java_org_lwjgl_openal_ALC_alcOpenDevice, "alcOpenDevice", (void*)&alcOpenDevice},
{"alcCloseDevice", "(J)V", (void*)&Java_org_lwjgl_openal_ALC_alcCloseDevice, "alcCloseDevice", (void*)&alcCloseDevice}, {"alcCloseDevice", "(J)V", (void*)&Java_org_lwjgl_openal_ALC_alcCloseDevice, "alcCloseDevice", (void*)&alcCloseDevice},
{"alcCreateContext", "(JLjava/nio/IntBuffer;)Lorg/lwjgl/openal/ALCcontext;", (void*)&Java_org_lwjgl_openal_ALC_alcCreateContext, "alcCreateContext", (void*)&alcCreateContext}, {"nalcCreateContext", "(JLjava/nio/IntBuffer;)Lorg/lwjgl/openal/ALCcontext;", (void*)&Java_org_lwjgl_openal_ALC_nalcCreateContext, "alcCreateContext", (void*)&alcCreateContext},
{"alcMakeContextCurrent", "(J)I", (void*)&Java_org_lwjgl_openal_ALC_alcMakeContextCurrent, "alcMakeContextCurrent", (void*)&alcMakeContextCurrent}, {"alcMakeContextCurrent", "(J)I", (void*)&Java_org_lwjgl_openal_ALC_alcMakeContextCurrent, "alcMakeContextCurrent", (void*)&alcMakeContextCurrent},
{"nalcProcessContext", "(J)V", (void*)&Java_org_lwjgl_openal_ALC_nalcProcessContext, "alcProcessContext", (void*)&alcProcessContext}, {"nalcProcessContext", "(J)V", (void*)&Java_org_lwjgl_openal_ALC_nalcProcessContext, "alcProcessContext", (void*)&alcProcessContext},
{"alcGetCurrentContext", "()Lorg/lwjgl/openal/ALCcontext;", (void*)&Java_org_lwjgl_openal_ALC_alcGetCurrentContext, "alcGetCurrentContext", (void*)&alcGetCurrentContext}, {"alcGetCurrentContext", "()Lorg/lwjgl/openal/ALCcontext;", (void*)&Java_org_lwjgl_openal_ALC_alcGetCurrentContext, "alcGetCurrentContext", (void*)&alcGetCurrentContext},