###############################################################################
# Copyright (c) 2000, 2007 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
###############################################################################
org_eclipse_swt_internal_opengl_glx_GLX=
GLX_XVisualInfo_sizeof=

GLX__glGetIntegerv=
GLX__glGetIntegerv_0=cast=(GLenum)
GLX__glGetIntegerv_1=cast=(GLint *),flags=no_in

GLX__glViewport=
GLX__glViewport_0=cast=(GLint)
GLX__glViewport_1=cast=(GLint)
GLX__glViewport_2=cast=(GLsizei)
GLX__glViewport_3=cast=(GLsizei)

GLX__glXChooseVisual=
GLX__glXChooseVisual_0=cast=(Display *)
GLX__glXChooseVisual_1=
GLX__glXChooseVisual_2=

GLX__glXCopyContext=
GLX__glXCopyContext_0=cast=(Display *)
GLX__glXCopyContext_1=cast=(GLXContext)
GLX__glXCopyContext_2=cast=(GLXContext)
GLX__glXCopyContext_3=

GLX__glXCreateContext=
GLX__glXCreateContext_0=cast=(Display *)
GLX__glXCreateContext_1=
GLX__glXCreateContext_2=cast=(GLXContext)
GLX__glXCreateContext_3=

GLX__glXCreateGLXPixmap=
GLX__glXCreateGLXPixmap_0=cast=(Display *)
GLX__glXCreateGLXPixmap_1=
GLX__glXCreateGLXPixmap_2=cast=(Pixmap)

GLX__glXDestroyContext=
GLX__glXDestroyContext_0=cast=(Display *)
GLX__glXDestroyContext_1=cast=(GLXContext)

GLX__glXDestroyGLXPixmap=
GLX__glXDestroyGLXPixmap_0=cast=(Display *)
GLX__glXDestroyGLXPixmap_1=cast=(GLXPixmap)

GLX__glXGetClientString=
GLX__glXGetClientString_0=cast=(Display *)
GLX__glXGetClientString_1=

GLX__glXGetConfig=
GLX__glXGetConfig_0=cast=(Display *)
GLX__glXGetConfig_1=
GLX__glXGetConfig_2=
GLX__glXGetConfig_3=

GLX__glXGetCurrentContext=

GLX__glXGetCurrentDrawable=

GLX__glXIsDirect=
GLX__glXIsDirect_0=cast=(Display *)
GLX__glXIsDirect_1=cast=(GLXContext)

GLX__glXMakeCurrent=
GLX__glXMakeCurrent_0=cast=(Display *)
GLX__glXMakeCurrent_1=cast=(GLXDrawable)
GLX__glXMakeCurrent_2=cast=(GLXContext)

GLX__glXQueryExtension=
GLX__glXQueryExtension_0=cast=(Display *)
GLX__glXQueryExtension_1=
GLX__glXQueryExtension_2=

GLX__glXQueryExtensionsString=
GLX__glXQueryExtensionsString_0=cast=(Display *)
GLX__glXQueryExtensionsString_1=

GLX__glXQueryServerString=
GLX__glXQueryServerString_0=cast=(Display *)
GLX__glXQueryServerString_1=
GLX__glXQueryServerString_2=

GLX__glXQueryVersion=
GLX__glXQueryVersion_0=cast=(Display *)
GLX__glXQueryVersion_1=flags=no_in
GLX__glXQueryVersion_2=flags=no_in

GLX__glXSwapBuffers=
GLX__glXSwapBuffers_0=cast=(Display *)
GLX__glXSwapBuffers_1=cast=(GLXDrawable)

GLX__glXWaitGL=

GLX__glXWaitX=

GLX_memmove=
GLX_memmove_0=
GLX_memmove_1=cast=(const void *)
GLX_memmove_2=cast=(size_t)


org_eclipse_swt_internal_opengl_glx_XVisualInfo=
XVisualInfo_visual=cast=(Visual *)
XVisualInfo_visualid=
XVisualInfo_screen=
XVisualInfo_depth=
XVisualInfo_cclass=accessor=class
XVisualInfo_red_mask=
XVisualInfo_green_mask=
XVisualInfo_blue_mask=
XVisualInfo_colormap_size=
XVisualInfo_bits_per_rgb=

