<?xml version="1.0"?>
<def format="2">
  <!-- OpenGL Library Configuration -->
  <!-- OpenGL library is typically included by "#include <gl/GL.h>" or "#include <GL/gl.h>", but can
       also be indirectly include by the GLU or GLUT library ("#include <GL/glu.h>" or
       "#include <GL/glut.h>")-->
  <!-- ########## OpenGL Types ########## -->
  <!-- https://www.khronos.org/opengl/wiki/OpenGL_Type -->
  <podtype name="GLboolean" sign="u" size="1"/>
  <podtype name="GLbyte" sign="s" size="1"/>
  <podtype name="GLubyte" sign="u" size="1"/>
  <podtype name="GLshort" sign="s" size="2"/>
  <podtype name="GLushort" sign="u" size="2"/>
  <podtype name="GLint" sign="s" size="4"/>
  <podtype name="GLuint" sign="u" size="4"/>
  <!-- TODO: GLfixed -->
  <podtype name="GLint64" sign="s" size="8"/>
  <podtype name="GLuint64" sign="u" size="8"/>
  <podtype name="GLsizei" sign="u" size="4"/>
  <podtype name="GLenum" sign="u" size="4"/>
  <!-- TODO: GLintptr -->
  <!-- TODO: GLsizeiptr -->
  <!-- TODO: GLsync -->
  <podtype name="GLbitfield" sign="u" size="4"/>
  <!-- TODO: GLhalf -->
  <define name="GLfloat" value="float"/>
  <define name="GLclampf" value="float"/>
  <define name="GLdouble" value="double"/>
  <define name="GLclampd" value="double"/>
  <!-- ########## OpenGL values / defines ########## -->
  <define name="GL_TRUE" value="1"/>
  <define name="GL_FALSE" value="0"/>
  <!-- ########## OpenGL Functions ########## -->
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml -->
  <!-- void glBegin( GLenum mode ); -->
  <function name="glBegin">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
      <not-bool/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glClear.xml -->
  <!-- void glClear( GLbitfield mask ); -->
  <function name="glClear">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
      <not-bool/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEnable.xml -->
  <!-- void glDisable( GLenum cap); -->
  <function name="glDisable">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
      <not-bool/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEnable.xml -->
  <!-- void glEnable( GLenum cap ); -->
  <function name="glEnable">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
      <not-bool/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml -->
  <!-- void glEnd(void); -->
  <function name="glEnd">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glIsEnabled.xml -->
  <!-- GLboolean glIsEnabled( GLenum cap ); -->
  <function name="glIsEnabled">
    <noreturn>false</noreturn>
    <returnValue type="GLboolean"/>
    <use-retval/>
    <arg nr="1" direction="in">
      <not-uninit/>
      <not-bool/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRotate.xml -->
  <!-- void glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ); -->
  <!-- void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ); -->
  <function name="glRotated,glRotatef">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="2" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="3" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="4" direction="in">
      <not-uninit/>
    </arg>
  </function>
  <!-- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glVertex.xml -->
  <!-- void glVertex2s( GLshort x, GLshort y ); -->
  <!-- void glVertex2i( GLint x, GLint y ); -->
  <!-- void glVertex2f( GLfloat x, GLfloat y ); -->
  <!-- void glVertex2d( GLdouble x, GLdouble y );-->
  <function name="glVertex2s,glVertex2i,glVertex2f,glVertex2d">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="2" direction="in">
      <not-uninit/>
    </arg>
  </function>
  <!-- void glVertex3s( GLshort x, GLshort y, GLshort z ); -->
  <!-- void glVertex3i(	GLint x, GLint y, GLint z ); -->
  <!-- void glVertex3f( GLfloat x, GLfloat y, GLfloat z ); -->
  <!-- void glVertex3d(	GLdouble x, GLdouble y, GLdouble z); -->
  <function name="glVertex3s,glVertex3i,glVertex3f,glVertex3d">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="2" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="3" direction="in">
      <not-uninit/>
    </arg>
  </function>
  <!-- void glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); -->
  <!-- void glVertex4i(	GLint x, GLint y, GLint z, GLint w ); -->
  <!-- void glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); -->
  <!-- void glVertex4d(	GLdouble x, GLdouble y, GLdouble z, GLdouble w); -->
  <function name="glVertex4s,glVertex4i,glVertex4f,glVertex4d">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="2" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="3" direction="in">
      <not-uninit/>
    </arg>
    <arg nr="4" direction="in">
      <not-uninit/>
    </arg>
  </function>
  <!-- void glVertex2sv( const GLshort * v ); -->
  <!-- void glVertex2iv( const GLint * v ); -->
  <!-- void glVertex2fv( const GLfloat * v ); -->
  <!-- void glVertex2dv( const GLdouble * v ); -->
  <!-- void glVertex3sv( const GLshort * v ); -->
  <!-- void glVertex3iv( const GLint * v ); -->
  <!-- void glVertex3fv( const GLfloat * v ); -->
  <!-- void glVertex3dv( const GLdouble * v ); -->
  <!-- void glVertex4sv( const GLshort * v ); -->
  <!-- void glVertex4iv( const GLint * v ); -->
  <!-- void glVertex4fv( const GLfloat * v ); -->
  <!-- void glVertex4dv( const GLdouble * v ); -->
  <function name="glVertex2sv,glVertex2iv,glVertex2fv,glVertex2dv,glVertex3sv,glVertex3iv,glVertex3fv,glVertex3dv,glVertex4sv,glVertex4iv,glVertex4fv,glVertex4dv">
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1" direction="in">
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
</def>