# This .cfg file is used to generate the JOAL interface. Include joal-common.cfg Style InterfaceAndImpl JavaClass AL ImplPackage net.java.games.joal.impl ImplJavaClass ALImpl Extends AL ALConstants Implements ALImpl DynamicLookupHelper EmitProcAddressTable true ProcAddressTableClassName ALProcAddressTable GetProcAddressTableExpr ALProcAddressLookup.getALProcAddressTable() ProcAddressNameExpr LP $UPPERCASE({0}) Import net.java.games.joal.* Import net.java.games.joal.impl.* Import com.sun.gluegen.runtime.* # Factor out the OpenAL constants into their own interface Ignore ^AL_.+ # alGetProcAddress is broken for core OpenAL routines at least up # through OpenAL 1.1, so we have to implement our own dlsym() # operation in order to populate the ALProcAddressTable and # ALCProcAddressTable. If / when it is fixed and we don't need # compatibility with preexisting OpenAL 1.0 and 1.1 installations we # can enable the code below and delete the custom C code for # dynamicLookupFunction0. Ignore alGetProcAddress # This routine is not exposed in the public API # AccessControl alGetProcAddress PACKAGE_PRIVATE # And it's also statically linked for bootstrapping # (could also consider looking it up via dlsym to more fully allow # unloading of OpenAL, but that doesn't seem necessary and requires # more native code to load/unload libraries) # SkipProcAddressGen alGetProcAddress # We also have to hack its return type for now because we can't make # just that void* opaque # Opaque long ALproc # This routine doesn't seem to exist Ignore alHint # Mappings for data types Opaque boolean ALboolean # These routines use or return strings ReturnsString alGetString ArgumentIsString alIsExtensionPresent 0 ArgumentIsString alGetEnumValue 0 ArgumentIsString alGetProcAddress 0 # Provide #includes to native code CustomCCode #include "al.h" CustomCCode #ifndef _MSC_VER /* Non-Windows platforms */ CustomCCode #define __cdecl /* Trim non-standard keyword */ CustomCCode #endif CustomCCode #include "efx.h" CustomJavaCode ALImpl /** Provides dlsym() capabilities because alGetProcAddress is CustomJavaCode ALImpl broken for core OpenAL routines at least up through OpenAL 1.1. */ CustomJavaCode ALImpl public long dynamicLookupFunction(String functionName) { CustomJavaCode ALImpl return dynamicLookupFunction0(functionName); CustomJavaCode ALImpl } CustomJavaCode ALImpl private native long dynamicLookupFunction0(String functionName); IncludeAs CustomCCode joal-common-CustomCCode.c IncludeAs CustomCCode joal-CustomCCode.c