# Inform the glue code generator of the association between #defines
# and functions and the extensions in which they are defined
GLHeader EGL/egl.h
GLHeader EGL/eglext.h

# Imports needed by all glue code
Import java.util.*
Import javax.media.opengl.*
Import javax.media.opengl.fixedfunc.*
Import jogamp.opengl.*

# Treat all of the EGL types as opaque longs
Opaque long EGLConfig
Opaque long EGLContext
Opaque long EGLDisplay
Opaque long EGLSurface
Opaque long EGLNativeDisplayType
Opaque long EGLNativeWindowType
Opaque long EGLNativePixmapType
Opaque long EGLImageKHR
#Opaque long EGLPerfMonitorNV
#Opaque long EGLPerfCounterNV
#Opaque long EGLPerfMarkerNV
Opaque long EGLSyncKHR
Opaque boolean EGLBoolean

# Make eglGetProcAddress return an opaque long
Opaque long __EGLFuncPtr

# Implement the first argument to eglGetProcAddress as String instead
# of byte[]
ArgumentIsString eglGetProcAddress 0
ReturnsString eglQueryString

# Force all of the methods to be emitted using dynamic linking so we
# don't need to link against any emulation library on the desktop or
# depend on the presence of an import library for a particular device
ForceProcAddressGen __ALL__

# Also force the calling conventions of the locally generated function
# pointer typedefs for these routines to EGLAPIENTRY
LocalProcAddressCallingConvention __ALL__ EGLAPIENTRY

# Using EGLClientBuffer as argument, 
# which native pointer exceeds the native function call lifetime
NIODirectOnly eglCreatePbufferFromClientBuffer
NIODirectOnly eglCreateImageKHR