Include cl-common.cfg

Style ImplOnly

#imports for all generated java files
Import com.jogamp.opencl.*
Import com.jogamp.opencl.gl.CLGLI

ClassJavadoc CLImpl /**
ClassJavadoc CLImpl  * Java bindings to OpenCL, the Open Computing Language.
ClassJavadoc CLImpl  * @author Michael Bien
ClassJavadoc CLImpl  */

ImplJavaClass CLImpl
Implements CLImpl CLGLI

EmitProcAddressTable true
ProcAddressTableClassName CLProcAddressTable
GetProcAddressTableExpr addressTable
ProcAddressNameExpr $UpperCase(arg)

#dynamic binding for OpenGL specific functions
ForceProcAddressGen clGetGLContextInfoKHR
ForceProcAddressGen clCreateFromGLBuffer
ForceProcAddressGen clCreateFromGLRenderbuffer
ForceProcAddressGen clCreateFromGLTexture2D
ForceProcAddressGen clCreateFromGLTexture3D
ForceProcAddressGen clEnqueueAcquireGLObjects
ForceProcAddressGen clEnqueueReleaseGLObjects
ForceProcAddressGen clGetGLObjectInfo
ForceProcAddressGen clGetGLTextureInfo
ForceProcAddressGen clIcdGetPlatformIDsKHR

Unignore clGetExtensionFunctionAddress
#AccessControl clGetExtensionFunctionAddress PACKAGE_PRIVATE
ArgumentIsString clGetExtensionFunctionAddress 0

#append to generated c files
CustomCCode #include <CL/cl.h>
CustomCCode #include <GL3/gl3.h>
CustomCCode #include <inttypes.h>

# implement manually via custom code
Ignore clCreateContext
Ignore clCreateContextFromType
Ignore clBuildProgram
Ignore clEnqueueNativeKernel

#take buffer capacity from input param 5
ReturnValueCapacity clEnqueueMapBuffer {5}

#this one is more complicated, we have to calculate the capacity with custom code
ManuallyImplement clEnqueueMapImage

#include custom code
IncludeAs CustomJavaCode CLImpl clImplCustomCode.java
IncludeAs CustomCCode clImplCustomCode.c

#JavaEpilogue clCreateKernelsInProgram if(kernels!=null && CPU.is32Bit() && kernels.lenght > 1) { convert32To64(kernels); }