Blender V2.61 - r43446

bgl.c

Go to the documentation of this file.
00001 /*
00002  * ***** BEGIN GPL LICENSE BLOCK *****
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software Foundation,
00016  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00017  *
00018  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
00019  * All rights reserved.
00020  *
00021  * This is a new part of Blender.
00022  *
00023  * Contributor(s): Willian P. Germano, Campbell Barton
00024  *
00025  * ***** END GPL LICENSE BLOCK *****
00026  */
00027 
00038 #include <Python.h>
00039 
00040 #include "bgl.h" /*This must come first */
00041 #include <GL/glew.h>
00042 #include "MEM_guardedalloc.h"
00043 
00044 #include "BLI_utildefines.h"
00045 
00046 static PyObject *Buffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
00047 
00048 /* Buffer sequence methods */
00049 
00050 static int Buffer_len(Buffer *self);
00051 static PyObject *Buffer_item(Buffer *self, int i);
00052 static PyObject *Buffer_slice(Buffer *self, int begin, int end);
00053 static int Buffer_ass_item(Buffer *self, int i, PyObject *v);
00054 static int Buffer_ass_slice(Buffer *self, int begin, int end, PyObject *seq);
00055 static PyObject *Buffer_subscript(Buffer *self, PyObject *item);
00056 static int Buffer_ass_subscript(Buffer *self, PyObject *item, PyObject *value);
00057 
00058 static PySequenceMethods Buffer_SeqMethods = {
00059     (lenfunc) Buffer_len,                       /*sq_length */
00060     (binaryfunc) NULL,                          /*sq_concat */
00061     (ssizeargfunc) NULL,                        /*sq_repeat */
00062     (ssizeargfunc) Buffer_item,                 /*sq_item */
00063     (ssizessizeargfunc) NULL,                   /*sq_slice, deprecated, handled in Buffer_item */
00064     (ssizeobjargproc) Buffer_ass_item,          /*sq_ass_item */
00065     (ssizessizeobjargproc) NULL,                /*sq_ass_slice, deprecated handled in Buffer_ass_item */
00066     (objobjproc) NULL,                          /* sq_contains */
00067     (binaryfunc) NULL,                          /* sq_inplace_concat */
00068     (ssizeargfunc) NULL,                        /* sq_inplace_repeat */
00069 };
00070 
00071 
00072 static PyMappingMethods Buffer_AsMapping = {
00073     (lenfunc)Buffer_len,
00074     (binaryfunc)Buffer_subscript,
00075     (objobjargproc)Buffer_ass_subscript
00076 };
00077 
00078 static void Buffer_dealloc(Buffer *self);
00079 static PyObject *Buffer_repr(Buffer *self);
00080 
00081 static PyObject *Buffer_to_list(Buffer *self)
00082 {
00083     int i, len= self->dimensions[0];
00084     PyObject *list= PyList_New(len);
00085 
00086     for (i=0; i<len; i++) {
00087         PyList_SET_ITEM(list, i, Buffer_item(self, i));
00088     }
00089 
00090     return list;
00091 }
00092 
00093 static PyObject *Buffer_to_list_recursive(Buffer *self)
00094 {
00095     PyObject *list;
00096 
00097     if (self->ndimensions > 1) {
00098         int i, len= self->dimensions[0];
00099         list= PyList_New(len);
00100 
00101         for (i=0; i<len; i++) {
00102             Buffer *sub= (Buffer *)Buffer_item(self, i);
00103             PyList_SET_ITEM(list, i, Buffer_to_list_recursive(sub));
00104             Py_DECREF(sub);
00105         }
00106     }
00107     else {
00108         list= Buffer_to_list(self);
00109     }
00110 
00111     return list;
00112 }
00113 
00114 static PyObject *Buffer_dimensions(Buffer *self, void *UNUSED(arg))
00115 {
00116     PyObject *list= PyList_New(self->ndimensions);
00117     int i;
00118 
00119     for (i= 0; i<self->ndimensions; i++) {
00120         PyList_SET_ITEM(list, i, PyLong_FromLong(self->dimensions[i]));
00121     }
00122 
00123     return list;
00124 }
00125 
00126 static PyMethodDef Buffer_methods[] = {
00127     {"to_list", (PyCFunction)Buffer_to_list_recursive, METH_NOARGS,
00128      "return the buffer as a list"},
00129     {NULL, NULL, 0, NULL}
00130 };
00131 
00132 static PyGetSetDef Buffer_getseters[] = {
00133     {(char *)"dimensions", (getter)Buffer_dimensions, NULL, NULL, NULL},
00134      {NULL, NULL, NULL, NULL, NULL}
00135 };
00136 
00137 
00138 PyTypeObject BGL_bufferType = {
00139     PyVarObject_HEAD_INIT(NULL, 0)
00140     "bgl.Buffer",               /*tp_name */
00141     sizeof(Buffer),             /*tp_basicsize */
00142     0,                          /*tp_itemsize */
00143     (destructor)Buffer_dealloc, /*tp_dealloc */
00144     (printfunc)NULL,            /*tp_print */
00145     NULL,                       /*tp_getattr */
00146     NULL,                       /*tp_setattr */
00147     NULL,       /*tp_compare */
00148     (reprfunc) Buffer_repr, /*tp_repr */
00149     NULL,           /*tp_as_number */
00150     &Buffer_SeqMethods, /*tp_as_sequence */
00151     &Buffer_AsMapping,      /* PyMappingMethods *tp_as_mapping; */
00152 
00153     /* More standard operations (here for binary compatibility) */
00154 
00155     NULL, /* hashfunc tp_hash; */
00156     NULL,                       /* ternaryfunc tp_call; */
00157     NULL,                       /* reprfunc tp_str; */
00158     NULL,                       /* getattrofunc tp_getattro; */
00159     NULL,                       /* setattrofunc tp_setattro; */
00160 
00161     /* Functions to access object as input/output buffer */
00162     NULL,                       /* PyBufferProcs *tp_as_buffer; */
00163 
00164     /*** Flags to define presence of optional/expanded features ***/
00165     Py_TPFLAGS_DEFAULT,         /* long tp_flags; */
00166 
00167     NULL,                       /*  char *tp_doc;  Documentation string */
00168     /*** Assigned meaning in release 2.0 ***/
00169     /* call function for all accessible objects */
00170     NULL,                       /* traverseproc tp_traverse; */
00171 
00172     /* delete references to contained objects */
00173     NULL,                       /* inquiry tp_clear; */
00174 
00175     /***  Assigned meaning in release 2.1 ***/
00176     /*** rich comparisons ***/
00177     NULL,                       /* richcmpfunc tp_richcompare; */
00178 
00179     /***  weak reference enabler ***/
00180     0,                          /* long tp_weaklistoffset; */
00181 
00182     /*** Added in release 2.2 ***/
00183     /*   Iterators */
00184     NULL, /* getiterfunc tp_iter; */
00185     NULL,                       /* iternextfunc tp_iternext; */
00186     /*** Attribute descriptor and subclassing stuff ***/
00187     Buffer_methods,             /* struct PyMethodDef *tp_methods; */
00188     NULL,                       /* struct PyMemberDef *tp_members; */
00189     Buffer_getseters,           /* struct PyGetSetDef *tp_getset; */
00190     NULL,                       /*tp_base*/
00191     NULL,                       /*tp_dict*/
00192     NULL,                       /*tp_descr_get*/
00193     NULL,                       /*tp_descr_set*/
00194     0,                          /*tp_dictoffset*/
00195     NULL,                       /*tp_init*/
00196     NULL,                       /*tp_alloc*/
00197     Buffer_new,                 /*tp_new*/
00198     NULL,                       /*tp_free*/
00199     NULL,                       /*tp_is_gc*/
00200     NULL,                       /*tp_bases*/
00201     NULL,                       /*tp_mro*/
00202     NULL,                       /*tp_cache*/
00203     NULL,                       /*tp_subclasses*/
00204     NULL,                       /*tp_weaklist*/
00205     NULL                        /*tp_del*/
00206 };
00207 
00208 #define BGL_Wrap(nargs, funcname, ret, arg_list)                              \
00209 static PyObject *Method_##funcname (PyObject *UNUSED(self), PyObject *args)   \
00210 {                                                                             \
00211     arg_def##nargs arg_list;                                                  \
00212     ret_def_##ret;                                                            \
00213     if (!PyArg_ParseTuple(args,                                               \
00214                           arg_str##nargs arg_list,                            \
00215                           arg_ref##nargs arg_list))                           \
00216     {                                                                         \
00217         return NULL;                                                          \
00218     }                                                                         \
00219     ret_set_##ret gl##funcname (arg_var##nargs arg_list);                     \
00220     ret_ret_##ret;                                                            \
00221 }
00222 
00223 #define BGLU_Wrap(nargs, funcname, ret, arg_list)                             \
00224 static PyObject *Method_##funcname (PyObject *UNUSED(self), PyObject *args)   \
00225 {                                                                             \
00226     arg_def##nargs arg_list;                                                  \
00227     ret_def_##ret;                                                            \
00228     if (!PyArg_ParseTuple(args,                                               \
00229                           arg_str##nargs arg_list,                            \
00230                           arg_ref##nargs arg_list))                           \
00231     {                                                                         \
00232         return NULL;                                                          \
00233     }                                                                         \
00234     ret_set_##ret glu##funcname (arg_var##nargs arg_list);                    \
00235     ret_ret_##ret;                                                            \
00236 }
00237 
00238 /********/
00239 int BGL_typeSize(int type)
00240 {
00241     switch (type) {
00242     case GL_BYTE:
00243         return sizeof(char);
00244     case GL_SHORT:
00245         return sizeof(short);
00246     case GL_INT:
00247         return sizeof(int);
00248     case GL_FLOAT:
00249         return sizeof(float);
00250     case GL_DOUBLE:
00251         return sizeof(double);
00252     }
00253     return -1;
00254 }
00255 
00256 Buffer *BGL_MakeBuffer(int type, int ndimensions, int *dimensions, void *initbuffer)
00257 {
00258     Buffer *buffer;
00259     void *buf= NULL;
00260     int i, size, length;
00261  
00262     length= 1;
00263     for (i=0; i<ndimensions; i++) 
00264         length*= dimensions[i];
00265  
00266     size= BGL_typeSize(type);
00267  
00268     buf= MEM_mallocN(length*size, "Buffer buffer");
00269 
00270     buffer= (Buffer *) PyObject_NEW(Buffer, &BGL_bufferType);
00271     buffer->parent= NULL;
00272     buffer->ndimensions= ndimensions;
00273     buffer->dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
00274     memcpy(buffer->dimensions, dimensions, ndimensions*sizeof(int));
00275     buffer->type= type;
00276     buffer->buf.asvoid= buf;
00277 
00278     if (initbuffer) {
00279         memcpy(buffer->buf.asvoid, initbuffer, length*size);
00280     }
00281     else {
00282         memset(buffer->buf.asvoid, 0, length*size);
00283     }
00284     return buffer;
00285 }
00286 
00287 
00288 #define MAX_DIMENSIONS  256
00289 static PyObject *Buffer_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject *kwds)
00290 {
00291     PyObject *length_ob= NULL, *init= NULL;
00292     Buffer *buffer;
00293     int dimensions[MAX_DIMENSIONS];
00294     
00295     int type;
00296     Py_ssize_t i, ndimensions = 0;
00297 
00298     if (kwds && PyDict_Size(kwds)) {
00299         PyErr_SetString(PyExc_TypeError,
00300                         "bgl.Buffer(): takes no keyword args");
00301         return NULL;
00302     }
00303 
00304     if (!PyArg_ParseTuple(args, "iO|O: bgl.Buffer", &type, &length_ob, &init)) {
00305         return NULL;
00306     }
00307     if (!ELEM5(type, GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE)) {
00308         PyErr_SetString(PyExc_AttributeError,
00309                         "invalid first argument type, should be one of "
00310                         "GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT or GL_DOUBLE");
00311         return NULL;
00312     }
00313 
00314     if (PyLong_Check(length_ob)) {
00315         ndimensions= 1;
00316         if (((dimensions[0]= PyLong_AsLong(length_ob)) < 1)) {
00317             PyErr_SetString(PyExc_AttributeError,
00318                             "dimensions must be between 1 and "STRINGIFY(MAX_DIMENSIONS));
00319             return NULL;
00320         }
00321     }
00322     else if (PySequence_Check(length_ob)) {
00323         ndimensions= PySequence_Size(length_ob);
00324         if (ndimensions > MAX_DIMENSIONS) {
00325             PyErr_SetString(PyExc_AttributeError,
00326                             "too many dimensions, max is "STRINGIFY(MAX_DIMENSIONS));
00327             return NULL;
00328         }
00329         else if (ndimensions < 1) {
00330             PyErr_SetString(PyExc_AttributeError,
00331                             "sequence must have at least one dimension");
00332             return NULL;
00333         }
00334         for (i=0; i<ndimensions; i++) {
00335             PyObject *ob= PySequence_GetItem(length_ob, i);
00336 
00337             if (!PyLong_Check(ob)) dimensions[i]= 1;
00338             else dimensions[i]= PyLong_AsLong(ob);
00339             Py_DECREF(ob);
00340 
00341             if (dimensions[i] < 1) {
00342                 PyErr_SetString(PyExc_AttributeError,
00343                                 "dimensions must be between 1 and "STRINGIFY(MAX_DIMENSIONS));
00344                 return NULL;
00345             }
00346         }
00347     }
00348     else {
00349         PyErr_Format(PyExc_TypeError,
00350                      "invalid second argument argument expected a sequence "
00351                      "or an int, not a %.200s", Py_TYPE(length_ob)->tp_name);
00352         return NULL;
00353     }
00354     
00355     buffer= BGL_MakeBuffer(type, ndimensions, dimensions, NULL);
00356     if (init && ndimensions) {
00357         if (Buffer_ass_slice(buffer, 0, dimensions[0], init)) {
00358             Py_DECREF(buffer);
00359             return NULL;
00360         }
00361     }
00362     
00363     return (PyObject *) buffer;
00364 }
00365 
00366 /*@ Buffer sequence methods */
00367 
00368 static int Buffer_len(Buffer *self)
00369 {
00370     return self->dimensions[0];
00371 }
00372 
00373 static PyObject *Buffer_item(Buffer *self, int i)
00374 {
00375     if (i >= self->dimensions[0] || i < 0) {
00376         PyErr_SetString(PyExc_IndexError, "array index out of range");
00377         return NULL;
00378     }
00379 
00380     if (self->ndimensions==1) {
00381         switch (self->type) {
00382             case GL_BYTE: return Py_BuildValue("b", self->buf.asbyte[i]);
00383             case GL_SHORT: return Py_BuildValue("h", self->buf.asshort[i]);
00384             case GL_INT: return Py_BuildValue("i", self->buf.asint[i]);
00385             case GL_FLOAT: return PyFloat_FromDouble(self->buf.asfloat[i]);
00386             case GL_DOUBLE: return Py_BuildValue("d", self->buf.asdouble[i]);
00387         }
00388     }
00389     else {
00390         Buffer *newbuf;
00391         int j, length, size;
00392 
00393         length= 1;
00394         for (j=1; j < self->ndimensions; j++) {
00395             length *= self->dimensions[j];
00396         }
00397         size= BGL_typeSize(self->type);
00398 
00399         newbuf= (Buffer *) PyObject_NEW(Buffer, &BGL_bufferType);
00400 
00401         Py_INCREF(self);
00402         newbuf->parent= (PyObject *)self;
00403 
00404         newbuf->ndimensions= self->ndimensions - 1;
00405         newbuf->type= self->type;
00406         newbuf->buf.asvoid= self->buf.asbyte + i*length*size;
00407         newbuf->dimensions= MEM_mallocN(newbuf->ndimensions*sizeof(int),
00408             "Buffer dimensions");
00409         memcpy(newbuf->dimensions, self->dimensions+1,
00410             newbuf->ndimensions*sizeof(int));
00411 
00412         return (PyObject *) newbuf;
00413     }
00414 
00415     return NULL;
00416 }
00417 
00418 static PyObject *Buffer_slice(Buffer *self, int begin, int end)
00419 {
00420     PyObject *list;
00421     int count;
00422     
00423     if (begin < 0) begin= 0;
00424     if (end > self->dimensions[0]) end= self->dimensions[0];
00425     if (begin > end) begin= end;
00426       
00427     list= PyList_New(end-begin);
00428 
00429     for (count= begin; count<end; count++) {
00430         PyList_SET_ITEM(list, count-begin, Buffer_item(self, count));
00431     }
00432     return list;
00433 }
00434 
00435 static int Buffer_ass_item(Buffer *self, int i, PyObject *v)
00436 {
00437     if (i >= self->dimensions[0] || i < 0) {
00438         PyErr_SetString(PyExc_IndexError,
00439                         "array assignment index out of range");
00440         return -1;
00441     }
00442 
00443     if (self->ndimensions!=1) {
00444         Buffer *row= (Buffer *)Buffer_item(self, i);
00445 
00446         if (row) {
00447             int ret= Buffer_ass_slice(row, 0, self->dimensions[1], v);
00448             Py_DECREF(row);
00449             return ret;
00450         }
00451         else {
00452             return -1;
00453         }
00454     }
00455 
00456     switch (self->type) {
00457     case GL_BYTE:
00458         return PyArg_Parse(v, "b:Expected ints", &self->buf.asbyte[i]) ? 0:-1;
00459     case GL_SHORT:
00460         return PyArg_Parse(v, "h:Expected ints", &self->buf.asshort[i]) ? 0:-1;
00461     case GL_INT:
00462         return PyArg_Parse(v, "i:Expected ints", &self->buf.asint[i]) ? 0:-1;
00463     case GL_FLOAT:
00464         return PyArg_Parse(v, "f:Expected floats", &self->buf.asfloat[i]) ? 0:-1;
00465     case GL_DOUBLE:
00466         return PyArg_Parse(v, "d:Expected floats", &self->buf.asdouble[i]) ? 0:-1;
00467     default:
00468         return 0; /* should never happen */
00469     }
00470 }
00471 
00472 static int Buffer_ass_slice(Buffer *self, int begin, int end, PyObject *seq)
00473 {
00474     PyObject *item;
00475     int count, err=0;
00476     
00477     if (begin < 0) begin= 0;
00478     if (end > self->dimensions[0]) end= self->dimensions[0];
00479     if (begin > end) begin= end;
00480     
00481     if (!PySequence_Check(seq)) {
00482         PyErr_Format(PyExc_TypeError,
00483                      "buffer[:] = value, invalid assignment. "
00484                      "Expected a sequence, not an %.200s type",
00485                      Py_TYPE(seq)->tp_name);
00486         return -1;
00487     }
00488 
00489     /* re-use count var */
00490     if ((count= PySequence_Size(seq)) != (end - begin)) {
00491         PyErr_Format(PyExc_TypeError,
00492                      "buffer[:] = value, size mismatch in assignment. "
00493                      "Expected: %d (given: %d)", count, end - begin);
00494         return -1;
00495     }
00496     
00497     for (count= begin; count < end; count++) {
00498         item= PySequence_GetItem(seq, count - begin);
00499         if (item) {
00500             err= Buffer_ass_item(self, count, item);
00501             Py_DECREF(item);
00502         }
00503         else {
00504             err= -1;
00505         }
00506         if (err) break;
00507     }
00508     return err;
00509 }
00510 
00511 static PyObject *Buffer_subscript(Buffer *self, PyObject *item)
00512 {
00513     if (PyIndex_Check(item)) {
00514         Py_ssize_t i;
00515         i = PyNumber_AsSsize_t(item, PyExc_IndexError);
00516         if (i == -1 && PyErr_Occurred())
00517             return NULL;
00518         if (i < 0)
00519             i += self->dimensions[0];
00520         return Buffer_item(self, i);
00521     }
00522     else if (PySlice_Check(item)) {
00523         Py_ssize_t start, stop, step, slicelength;
00524 
00525         if (PySlice_GetIndicesEx((void *)item, self->dimensions[0], &start, &stop, &step, &slicelength) < 0)
00526             return NULL;
00527 
00528         if (slicelength <= 0) {
00529             return PyTuple_New(0);
00530         }
00531         else if (step == 1) {
00532             return Buffer_slice(self, start, stop);
00533         }
00534         else {
00535             PyErr_SetString(PyExc_IndexError,
00536                             "slice steps not supported with vectors");
00537             return NULL;
00538         }
00539     }
00540     else {
00541         PyErr_Format(PyExc_TypeError,
00542                      "buffer indices must be integers, not %.200s",
00543                      Py_TYPE(item)->tp_name);
00544         return NULL;
00545     }
00546 }
00547 
00548 static int Buffer_ass_subscript(Buffer *self, PyObject *item, PyObject *value)
00549 {
00550     if (PyIndex_Check(item)) {
00551         Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
00552         if (i == -1 && PyErr_Occurred())
00553             return -1;
00554         if (i < 0)
00555             i += self->dimensions[0];
00556         return Buffer_ass_item(self, i, value);
00557     }
00558     else if (PySlice_Check(item)) {
00559         Py_ssize_t start, stop, step, slicelength;
00560 
00561         if (PySlice_GetIndicesEx((void *)item, self->dimensions[0], &start, &stop, &step, &slicelength) < 0)
00562             return -1;
00563 
00564         if (step == 1)
00565             return Buffer_ass_slice(self, start, stop, value);
00566         else {
00567             PyErr_SetString(PyExc_IndexError,
00568                             "slice steps not supported with vectors");
00569             return -1;
00570         }
00571     }
00572     else {
00573         PyErr_Format(PyExc_TypeError,
00574                      "buffer indices must be integers, not %.200s",
00575                      Py_TYPE(item)->tp_name);
00576         return -1;
00577     }
00578 }
00579 
00580 
00581 static void Buffer_dealloc(Buffer *self)
00582 {
00583     if (self->parent) Py_DECREF(self->parent);
00584     else MEM_freeN (self->buf.asvoid);
00585 
00586     MEM_freeN(self->dimensions);
00587 
00588     PyObject_DEL(self);
00589 }
00590 
00591 
00592 static PyObject *Buffer_repr(Buffer *self)
00593 {
00594     PyObject *list= Buffer_to_list_recursive(self);
00595     PyObject *repr;
00596     const char *typestr= "UNKNOWN";
00597 
00598     switch (self->type) {
00599     case GL_BYTE:   typestr= "GL_BYTE"; break;
00600     case GL_SHORT:  typestr= "GL_SHORT"; break;
00601     case GL_INT:    typestr= "GL_BYTE"; break;
00602     case GL_FLOAT:  typestr= "GL_FLOAT"; break;
00603     case GL_DOUBLE: typestr= "GL_DOUBLE"; break;
00604     }
00605 
00606     repr= PyUnicode_FromFormat("Buffer(%s, %R)", typestr, list);
00607     Py_DECREF(list);
00608 
00609     return repr;
00610 }
00611 
00612 
00613 BGL_Wrap(2, Accum,          void,     (GLenum, GLfloat))
00614 BGL_Wrap(2, AlphaFunc,      void,     (GLenum, GLclampf))
00615 BGL_Wrap(3, AreTexturesResident,  GLboolean,  (GLsizei, GLuintP, GLbooleanP))
00616 BGL_Wrap(1, Begin,          void,     (GLenum))
00617 BGL_Wrap(2, BindTexture,    void,   (GLenum, GLuint))
00618 BGL_Wrap(7, Bitmap,         void,     (GLsizei, GLsizei, GLfloat,
00619                         GLfloat, GLfloat, GLfloat, GLubyteP))
00620 BGL_Wrap(2, BlendFunc,        void,     (GLenum, GLenum))
00621 BGL_Wrap(1, CallList,         void,     (GLuint))
00622 BGL_Wrap(3, CallLists,        void,     (GLsizei, GLenum, GLvoidP))
00623 BGL_Wrap(1, Clear,            void,     (GLbitfield))
00624 BGL_Wrap(4, ClearAccum,       void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00625 BGL_Wrap(4, ClearColor,       void,     (GLclampf, GLclampf, GLclampf, GLclampf))
00626 BGL_Wrap(1, ClearDepth,       void,     (GLclampd))
00627 BGL_Wrap(1, ClearIndex,       void,     (GLfloat))
00628 BGL_Wrap(1, ClearStencil,     void,     (GLint))
00629 BGL_Wrap(2, ClipPlane,        void,     (GLenum, GLdoubleP))
00630 BGL_Wrap(3, Color3b,          void,     (GLbyte, GLbyte, GLbyte))
00631 BGL_Wrap(1, Color3bv,         void,     (GLbyteP))
00632 BGL_Wrap(3, Color3d,          void,     (GLdouble, GLdouble, GLdouble))
00633 BGL_Wrap(1, Color3dv,         void,     (GLdoubleP))
00634 BGL_Wrap(3, Color3f,          void,     (GLfloat, GLfloat, GLfloat))
00635 BGL_Wrap(1, Color3fv,         void,     (GLfloatP))
00636 BGL_Wrap(3, Color3i,          void,     (GLint, GLint, GLint))
00637 BGL_Wrap(1, Color3iv,         void,     (GLintP))
00638 BGL_Wrap(3, Color3s,          void,     (GLshort, GLshort, GLshort))
00639 BGL_Wrap(1, Color3sv,         void,     (GLshortP))
00640 BGL_Wrap(3, Color3ub,         void,     (GLubyte, GLubyte, GLubyte))
00641 BGL_Wrap(1, Color3ubv,        void,     (GLubyteP))
00642 BGL_Wrap(3, Color3ui,         void,     (GLuint, GLuint, GLuint))
00643 BGL_Wrap(1, Color3uiv,        void,     (GLuintP))
00644 BGL_Wrap(3, Color3us,         void,     (GLushort, GLushort, GLushort))
00645 BGL_Wrap(1, Color3usv,        void,     (GLushortP))
00646 BGL_Wrap(4, Color4b,          void,     (GLbyte, GLbyte, GLbyte, GLbyte))
00647 BGL_Wrap(1, Color4bv,         void,     (GLbyteP))
00648 BGL_Wrap(4, Color4d,          void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00649 BGL_Wrap(1, Color4dv,         void,     (GLdoubleP))
00650 BGL_Wrap(4, Color4f,          void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00651 BGL_Wrap(1, Color4fv,         void,     (GLfloatP))
00652 BGL_Wrap(4, Color4i,          void,     (GLint, GLint, GLint, GLint))
00653 BGL_Wrap(1, Color4iv,         void,     (GLintP))
00654 BGL_Wrap(4, Color4s,          void,     (GLshort, GLshort, GLshort, GLshort))
00655 BGL_Wrap(1, Color4sv,         void,     (GLshortP))
00656 BGL_Wrap(4, Color4ub,         void,     (GLubyte, GLubyte, GLubyte, GLubyte))
00657 BGL_Wrap(1, Color4ubv,        void,     (GLubyteP))
00658 BGL_Wrap(4, Color4ui,         void,     (GLuint, GLuint, GLuint, GLuint))
00659 BGL_Wrap(1, Color4uiv,        void,     (GLuintP))
00660 BGL_Wrap(4, Color4us,         void,     (GLushort, GLushort, GLushort, GLushort))
00661 BGL_Wrap(1, Color4usv,        void,     (GLushortP))
00662 BGL_Wrap(4, ColorMask,        void,     (GLboolean, GLboolean, GLboolean, GLboolean))
00663 BGL_Wrap(2, ColorMaterial,    void,     (GLenum, GLenum))
00664 BGL_Wrap(5, CopyPixels,       void,     (GLint, GLint, GLsizei, GLsizei, GLenum))
00665 BGL_Wrap(8, CopyTexImage2D,   void,     (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint))
00666 BGL_Wrap(1, CullFace,         void,     (GLenum))
00667 BGL_Wrap(2, DeleteLists,      void,     (GLuint, GLsizei))
00668 BGL_Wrap(2, DeleteTextures,   void,   (GLsizei, GLuintP))
00669 BGL_Wrap(1, DepthFunc,        void,     (GLenum))
00670 BGL_Wrap(1, DepthMask,        void,     (GLboolean))
00671 BGL_Wrap(2, DepthRange,       void,     (GLclampd, GLclampd))
00672 BGL_Wrap(1, Disable,          void,     (GLenum))
00673 BGL_Wrap(1, DrawBuffer,       void,     (GLenum))
00674 BGL_Wrap(5, DrawPixels,       void,     (GLsizei, GLsizei, GLenum, GLenum, GLvoidP))
00675 BGL_Wrap(1, EdgeFlag,         void,     (GLboolean))
00676 BGL_Wrap(1, EdgeFlagv,        void,     (GLbooleanP))
00677 BGL_Wrap(1, Enable,           void,     (GLenum))
00678 BGL_Wrap(1, End,              void,     (void))
00679 BGL_Wrap(1, EndList,          void,     (void))
00680 BGL_Wrap(1, EvalCoord1d,      void,     (GLdouble))
00681 BGL_Wrap(1, EvalCoord1dv,     void,     (GLdoubleP))
00682 BGL_Wrap(1, EvalCoord1f,      void,     (GLfloat))
00683 BGL_Wrap(1, EvalCoord1fv,     void,     (GLfloatP))
00684 BGL_Wrap(2, EvalCoord2d,      void,     (GLdouble, GLdouble))
00685 BGL_Wrap(1, EvalCoord2dv,     void,     (GLdoubleP))
00686 BGL_Wrap(2, EvalCoord2f,      void,     (GLfloat, GLfloat))
00687 BGL_Wrap(1, EvalCoord2fv,     void,     (GLfloatP))
00688 BGL_Wrap(3, EvalMesh1,        void,     (GLenum, GLint, GLint))
00689 BGL_Wrap(5, EvalMesh2,        void,     (GLenum, GLint, GLint, GLint, GLint))
00690 BGL_Wrap(1, EvalPoint1,       void,     (GLint))
00691 BGL_Wrap(2, EvalPoint2,       void,     (GLint, GLint))
00692 BGL_Wrap(3, FeedbackBuffer,   void,     (GLsizei, GLenum, GLfloatP))
00693 BGL_Wrap(1, Finish,           void,     (void))
00694 BGL_Wrap(1, Flush,            void,     (void))
00695 BGL_Wrap(2, Fogf,             void,     (GLenum, GLfloat))
00696 BGL_Wrap(2, Fogfv,            void,     (GLenum, GLfloatP))
00697 BGL_Wrap(2, Fogi,             void,     (GLenum, GLint))
00698 BGL_Wrap(2, Fogiv,            void,     (GLenum, GLintP))
00699 BGL_Wrap(1, FrontFace,        void,     (GLenum))
00700 BGL_Wrap(6, Frustum,          void,     (GLdouble, GLdouble,
00701                         GLdouble, GLdouble, GLdouble, GLdouble))
00702 BGL_Wrap(1, GenLists,         GLuint,   (GLsizei))
00703 BGL_Wrap(2, GenTextures,      void,   (GLsizei, GLuintP))
00704 BGL_Wrap(2, GetBooleanv,      void,     (GLenum, GLbooleanP))
00705 BGL_Wrap(2, GetClipPlane,     void,     (GLenum, GLdoubleP))
00706 BGL_Wrap(2, GetDoublev,       void,     (GLenum, GLdoubleP))
00707 BGL_Wrap(1, GetError,         GLenum,   (void))
00708 BGL_Wrap(2, GetFloatv,        void,     (GLenum, GLfloatP))
00709 BGL_Wrap(2, GetIntegerv,      void,     (GLenum, GLintP))
00710 BGL_Wrap(3, GetLightfv,       void,     (GLenum, GLenum, GLfloatP))
00711 BGL_Wrap(3, GetLightiv,       void,     (GLenum, GLenum, GLintP))
00712 BGL_Wrap(3, GetMapdv,         void,     (GLenum, GLenum, GLdoubleP))
00713 BGL_Wrap(3, GetMapfv,         void,     (GLenum, GLenum, GLfloatP))
00714 BGL_Wrap(3, GetMapiv,         void,     (GLenum, GLenum, GLintP))
00715 BGL_Wrap(3, GetMaterialfv,    void,     (GLenum, GLenum, GLfloatP))
00716 BGL_Wrap(3, GetMaterialiv,    void,     (GLenum, GLenum, GLintP))
00717 BGL_Wrap(2, GetPixelMapfv,    void,     (GLenum, GLfloatP))
00718 BGL_Wrap(2, GetPixelMapuiv,   void,     (GLenum, GLuintP))
00719 BGL_Wrap(2, GetPixelMapusv,   void,     (GLenum, GLushortP))
00720 BGL_Wrap(1, GetPolygonStipple,void,     (GLubyteP))
00721 BGL_Wrap(1, GetString,        GLstring,   (GLenum))
00722 BGL_Wrap(3, GetTexEnvfv,      void,     (GLenum, GLenum, GLfloatP))
00723 BGL_Wrap(3, GetTexEnviv,      void,     (GLenum, GLenum, GLintP))
00724 BGL_Wrap(3, GetTexGendv,      void,     (GLenum, GLenum, GLdoubleP))
00725 BGL_Wrap(3, GetTexGenfv,      void,     (GLenum, GLenum, GLfloatP))
00726 BGL_Wrap(3, GetTexGeniv,      void,     (GLenum, GLenum, GLintP))
00727 BGL_Wrap(5, GetTexImage,      void,     (GLenum, GLint, GLenum, GLenum, GLvoidP))
00728 BGL_Wrap(4, GetTexLevelParameterfv, void,     (GLenum, GLint, GLenum, GLfloatP))
00729 BGL_Wrap(4, GetTexLevelParameteriv, void,     (GLenum, GLint, GLenum, GLintP))
00730 BGL_Wrap(3, GetTexParameterfv,    void,     (GLenum, GLenum, GLfloatP))
00731 BGL_Wrap(3, GetTexParameteriv,    void,     (GLenum, GLenum, GLintP))
00732 BGL_Wrap(2, Hint,           void,     (GLenum, GLenum))
00733 BGL_Wrap(1, IndexMask,      void,     (GLuint))
00734 BGL_Wrap(1, Indexd,         void,     (GLdouble))
00735 BGL_Wrap(1, Indexdv,        void,     (GLdoubleP))
00736 BGL_Wrap(1, Indexf,         void,     (GLfloat))
00737 BGL_Wrap(1, Indexfv,        void,     (GLfloatP))
00738 BGL_Wrap(1, Indexi,         void,     (GLint))
00739 BGL_Wrap(1, Indexiv,        void,     (GLintP))
00740 BGL_Wrap(1, Indexs,         void,     (GLshort))
00741 BGL_Wrap(1, Indexsv,        void,     (GLshortP))
00742 BGL_Wrap(1, InitNames,      void,     (void))
00743 BGL_Wrap(1, IsEnabled,      GLboolean,  (GLenum))
00744 BGL_Wrap(1, IsList,         GLboolean,  (GLuint))
00745 BGL_Wrap(1, IsTexture,      GLboolean,  (GLuint))
00746 BGL_Wrap(2, LightModelf,    void,     (GLenum, GLfloat))
00747 BGL_Wrap(2, LightModelfv,   void,     (GLenum, GLfloatP))
00748 BGL_Wrap(2, LightModeli,    void,     (GLenum, GLint))
00749 BGL_Wrap(2, LightModeliv,   void,     (GLenum, GLintP))
00750 BGL_Wrap(3, Lightf,         void,     (GLenum, GLenum, GLfloat))
00751 BGL_Wrap(3, Lightfv,        void,     (GLenum, GLenum, GLfloatP))
00752 BGL_Wrap(3, Lighti,         void,     (GLenum, GLenum, GLint))
00753 BGL_Wrap(3, Lightiv,        void,     (GLenum, GLenum, GLintP))
00754 BGL_Wrap(2, LineStipple,    void,     (GLint, GLushort))
00755 BGL_Wrap(1, LineWidth,      void,     (GLfloat))
00756 BGL_Wrap(1, ListBase,       void,     (GLuint))
00757 BGL_Wrap(1, LoadIdentity,   void,     (void))
00758 BGL_Wrap(1, LoadMatrixd,    void,     (GLdoubleP))
00759 BGL_Wrap(1, LoadMatrixf,    void,     (GLfloatP))
00760 BGL_Wrap(1, LoadName,       void,     (GLuint))
00761 BGL_Wrap(1, LogicOp,        void,     (GLenum))
00762 BGL_Wrap(6, Map1d,          void,     (GLenum, GLdouble, GLdouble,
00763                         GLint, GLint, GLdoubleP))
00764 BGL_Wrap(6, Map1f,          void,     (GLenum, GLfloat, GLfloat,
00765                         GLint, GLint, GLfloatP))
00766 BGL_Wrap(10, Map2d,         void,     (GLenum, GLdouble, GLdouble,
00767                         GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdoubleP))
00768 BGL_Wrap(10, Map2f,         void,     (GLenum, GLfloat, GLfloat,
00769                         GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloatP))
00770 BGL_Wrap(3, MapGrid1d,        void,     (GLint, GLdouble, GLdouble))
00771 BGL_Wrap(3, MapGrid1f,        void,     (GLint, GLfloat, GLfloat))
00772 BGL_Wrap(6, MapGrid2d,        void,     (GLint, GLdouble, GLdouble,
00773                         GLint, GLdouble, GLdouble))
00774 BGL_Wrap(6, MapGrid2f,        void,     (GLint, GLfloat, GLfloat,
00775                         GLint, GLfloat, GLfloat))
00776 BGL_Wrap(3, Materialf,        void,     (GLenum, GLenum, GLfloat))
00777 BGL_Wrap(3, Materialfv,       void,     (GLenum, GLenum, GLfloatP))
00778 BGL_Wrap(3, Materiali,        void,     (GLenum, GLenum, GLint))
00779 BGL_Wrap(3, Materialiv,       void,     (GLenum, GLenum, GLintP))
00780 BGL_Wrap(1, MatrixMode,       void,     (GLenum))
00781 BGL_Wrap(1, MultMatrixd,      void,     (GLdoubleP))
00782 BGL_Wrap(1, MultMatrixf,      void,     (GLfloatP))
00783 BGL_Wrap(2, NewList,          void,     (GLuint, GLenum))
00784 BGL_Wrap(3, Normal3b,         void,     (GLbyte, GLbyte, GLbyte))
00785 BGL_Wrap(1, Normal3bv,        void,     (GLbyteP))
00786 BGL_Wrap(3, Normal3d,         void,     (GLdouble, GLdouble, GLdouble))
00787 BGL_Wrap(1, Normal3dv,        void,     (GLdoubleP))
00788 BGL_Wrap(3, Normal3f,         void,     (GLfloat, GLfloat, GLfloat))
00789 BGL_Wrap(1, Normal3fv,        void,     (GLfloatP))
00790 BGL_Wrap(3, Normal3i,         void,     (GLint, GLint, GLint))
00791 BGL_Wrap(1, Normal3iv,        void,     (GLintP))
00792 BGL_Wrap(3, Normal3s,         void,     (GLshort, GLshort, GLshort))
00793 BGL_Wrap(1, Normal3sv,        void,     (GLshortP))
00794 BGL_Wrap(6, Ortho,            void,     (GLdouble, GLdouble,
00795                         GLdouble, GLdouble, GLdouble, GLdouble))
00796 BGL_Wrap(1, PassThrough,      void,     (GLfloat))
00797 BGL_Wrap(3, PixelMapfv,       void,     (GLenum, GLint, GLfloatP))
00798 BGL_Wrap(3, PixelMapuiv,      void,     (GLenum, GLint, GLuintP))
00799 BGL_Wrap(3, PixelMapusv,      void,     (GLenum, GLint, GLushortP))
00800 BGL_Wrap(2, PixelStoref,      void,     (GLenum, GLfloat))
00801 BGL_Wrap(2, PixelStorei,      void,     (GLenum, GLint))
00802 BGL_Wrap(2, PixelTransferf,   void,     (GLenum, GLfloat))
00803 BGL_Wrap(2, PixelTransferi,   void,     (GLenum, GLint))
00804 BGL_Wrap(2, PixelZoom,        void,     (GLfloat, GLfloat))
00805 BGL_Wrap(1, PointSize,        void,     (GLfloat))
00806 BGL_Wrap(2, PolygonMode,      void,     (GLenum, GLenum))
00807 BGL_Wrap(2, PolygonOffset,    void,     (GLfloat, GLfloat))
00808 BGL_Wrap(1, PolygonStipple,   void,     (GLubyteP))
00809 BGL_Wrap(1, PopAttrib,        void,     (void))
00810 BGL_Wrap(1, PopClientAttrib,  void,     (void))
00811 BGL_Wrap(1, PopMatrix,        void,     (void))
00812 BGL_Wrap(1, PopName,          void,     (void))
00813 BGL_Wrap(3, PrioritizeTextures,   void,   (GLsizei, GLuintP, GLclampfP))
00814 BGL_Wrap(1, PushAttrib,       void,     (GLbitfield))
00815 BGL_Wrap(1, PushClientAttrib, void,     (GLbitfield))
00816 BGL_Wrap(1, PushMatrix,       void,     (void))
00817 BGL_Wrap(1, PushName,         void,     (GLuint))
00818 BGL_Wrap(2, RasterPos2d,      void,     (GLdouble, GLdouble))
00819 BGL_Wrap(1, RasterPos2dv,     void,     (GLdoubleP))
00820 BGL_Wrap(2, RasterPos2f,      void,     (GLfloat, GLfloat))
00821 BGL_Wrap(1, RasterPos2fv,     void,     (GLfloatP))
00822 BGL_Wrap(2, RasterPos2i,      void,     (GLint, GLint))
00823 BGL_Wrap(1, RasterPos2iv,     void,     (GLintP))
00824 BGL_Wrap(2, RasterPos2s,      void,     (GLshort, GLshort))
00825 BGL_Wrap(1, RasterPos2sv,     void,     (GLshortP))
00826 BGL_Wrap(3, RasterPos3d,      void,     (GLdouble, GLdouble, GLdouble))
00827 BGL_Wrap(1, RasterPos3dv,     void,     (GLdoubleP))
00828 BGL_Wrap(3, RasterPos3f,      void,     (GLfloat, GLfloat, GLfloat))
00829 BGL_Wrap(1, RasterPos3fv,     void,     (GLfloatP))
00830 BGL_Wrap(3, RasterPos3i,      void,     (GLint, GLint, GLint))
00831 BGL_Wrap(1, RasterPos3iv,     void,     (GLintP))
00832 BGL_Wrap(3, RasterPos3s,      void,     (GLshort, GLshort, GLshort))
00833 BGL_Wrap(1, RasterPos3sv,     void,     (GLshortP))
00834 BGL_Wrap(4, RasterPos4d,      void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00835 BGL_Wrap(1, RasterPos4dv,     void,     (GLdoubleP))
00836 BGL_Wrap(4, RasterPos4f,      void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00837 BGL_Wrap(1, RasterPos4fv,     void,     (GLfloatP))
00838 BGL_Wrap(4, RasterPos4i,      void,     (GLint, GLint, GLint, GLint))
00839 BGL_Wrap(1, RasterPos4iv,     void,     (GLintP))
00840 BGL_Wrap(4, RasterPos4s,      void,     (GLshort, GLshort, GLshort, GLshort))
00841 BGL_Wrap(1, RasterPos4sv,     void,     (GLshortP))
00842 BGL_Wrap(1, ReadBuffer,       void,     (GLenum))
00843 BGL_Wrap(7, ReadPixels,       void,     (GLint, GLint, GLsizei,
00844                         GLsizei, GLenum, GLenum, GLvoidP))
00845 BGL_Wrap(4, Rectd,          void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00846 BGL_Wrap(2, Rectdv,         void,     (GLdoubleP, GLdoubleP))
00847 BGL_Wrap(4, Rectf,          void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00848 BGL_Wrap(2, Rectfv,         void,     (GLfloatP, GLfloatP))
00849 BGL_Wrap(4, Recti,          void,     (GLint, GLint, GLint, GLint))
00850 BGL_Wrap(2, Rectiv,         void,     (GLintP, GLintP))
00851 BGL_Wrap(4, Rects,          void,     (GLshort, GLshort, GLshort, GLshort))
00852 BGL_Wrap(2, Rectsv,         void,     (GLshortP, GLshortP))
00853 BGL_Wrap(1, RenderMode,     GLint,    (GLenum))
00854 BGL_Wrap(4, Rotated,        void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00855 BGL_Wrap(4, Rotatef,        void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00856 BGL_Wrap(3, Scaled,         void,     (GLdouble, GLdouble, GLdouble))
00857 BGL_Wrap(3, Scalef,         void,     (GLfloat, GLfloat, GLfloat))
00858 BGL_Wrap(4, Scissor,        void,     (GLint, GLint, GLsizei, GLsizei))
00859 BGL_Wrap(2, SelectBuffer,   void,     (GLsizei, GLuintP))
00860 BGL_Wrap(1, ShadeModel,       void,     (GLenum))
00861 BGL_Wrap(3, StencilFunc,      void,     (GLenum, GLint, GLuint))
00862 BGL_Wrap(1, StencilMask,      void,     (GLuint))
00863 BGL_Wrap(3, StencilOp,        void,     (GLenum, GLenum, GLenum))
00864 BGL_Wrap(1, TexCoord1d,       void,     (GLdouble))
00865 BGL_Wrap(1, TexCoord1dv,      void,     (GLdoubleP))
00866 BGL_Wrap(1, TexCoord1f,       void,     (GLfloat))
00867 BGL_Wrap(1, TexCoord1fv,      void,     (GLfloatP))
00868 BGL_Wrap(1, TexCoord1i,       void,     (GLint))
00869 BGL_Wrap(1, TexCoord1iv,      void,     (GLintP))
00870 BGL_Wrap(1, TexCoord1s,       void,     (GLshort))
00871 BGL_Wrap(1, TexCoord1sv,      void,     (GLshortP))
00872 BGL_Wrap(2, TexCoord2d,       void,     (GLdouble, GLdouble))
00873 BGL_Wrap(1, TexCoord2dv,      void,     (GLdoubleP))
00874 BGL_Wrap(2, TexCoord2f,       void,     (GLfloat, GLfloat))
00875 BGL_Wrap(1, TexCoord2fv,      void,     (GLfloatP))
00876 BGL_Wrap(2, TexCoord2i,       void,     (GLint, GLint))
00877 BGL_Wrap(1, TexCoord2iv,      void,     (GLintP))
00878 BGL_Wrap(2, TexCoord2s,       void,     (GLshort, GLshort))
00879 BGL_Wrap(1, TexCoord2sv,      void,     (GLshortP))
00880 BGL_Wrap(3, TexCoord3d,       void,     (GLdouble, GLdouble, GLdouble))
00881 BGL_Wrap(1, TexCoord3dv,      void,     (GLdoubleP))
00882 BGL_Wrap(3, TexCoord3f,       void,     (GLfloat, GLfloat, GLfloat))
00883 BGL_Wrap(1, TexCoord3fv,      void,     (GLfloatP))
00884 BGL_Wrap(3, TexCoord3i,       void,     (GLint, GLint, GLint))
00885 BGL_Wrap(1, TexCoord3iv,      void,     (GLintP))
00886 BGL_Wrap(3, TexCoord3s,       void,     (GLshort, GLshort, GLshort))
00887 BGL_Wrap(1, TexCoord3sv,      void,     (GLshortP))
00888 BGL_Wrap(4, TexCoord4d,       void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00889 BGL_Wrap(1, TexCoord4dv,      void,     (GLdoubleP))
00890 BGL_Wrap(4, TexCoord4f,       void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00891 BGL_Wrap(1, TexCoord4fv,      void,     (GLfloatP))
00892 BGL_Wrap(4, TexCoord4i,       void,     (GLint, GLint, GLint, GLint))
00893 BGL_Wrap(1, TexCoord4iv,      void,     (GLintP))
00894 BGL_Wrap(4, TexCoord4s,       void,     (GLshort, GLshort, GLshort, GLshort))
00895 BGL_Wrap(1, TexCoord4sv,      void,     (GLshortP))
00896 BGL_Wrap(3, TexEnvf,        void,     (GLenum, GLenum, GLfloat))
00897 BGL_Wrap(3, TexEnvfv,       void,     (GLenum, GLenum, GLfloatP))
00898 BGL_Wrap(3, TexEnvi,        void,     (GLenum, GLenum, GLint))
00899 BGL_Wrap(3, TexEnviv,       void,     (GLenum, GLenum, GLintP))
00900 BGL_Wrap(3, TexGend,        void,     (GLenum, GLenum, GLdouble))
00901 BGL_Wrap(3, TexGendv,       void,     (GLenum, GLenum, GLdoubleP))
00902 BGL_Wrap(3, TexGenf,        void,     (GLenum, GLenum, GLfloat))
00903 BGL_Wrap(3, TexGenfv,       void,     (GLenum, GLenum, GLfloatP))
00904 BGL_Wrap(3, TexGeni,        void,     (GLenum, GLenum, GLint))
00905 BGL_Wrap(3, TexGeniv,       void,     (GLenum, GLenum, GLintP))
00906 BGL_Wrap(8, TexImage1D,     void,     (GLenum, GLint, GLint,
00907                         GLsizei, GLint, GLenum, GLenum, GLvoidP))
00908 BGL_Wrap(9, TexImage2D,     void,     (GLenum, GLint, GLint,
00909                         GLsizei, GLsizei, GLint, GLenum, GLenum, GLvoidP))
00910 BGL_Wrap(3, TexParameterf,      void,     (GLenum, GLenum, GLfloat))
00911 BGL_Wrap(3, TexParameterfv,     void,     (GLenum, GLenum, GLfloatP))
00912 BGL_Wrap(3, TexParameteri,      void,     (GLenum, GLenum, GLint))
00913 BGL_Wrap(3, TexParameteriv,     void,     (GLenum, GLenum, GLintP))
00914 BGL_Wrap(3, Translated,         void,     (GLdouble, GLdouble, GLdouble))
00915 BGL_Wrap(3, Translatef,         void,     (GLfloat, GLfloat, GLfloat))
00916 BGL_Wrap(2, Vertex2d,           void,     (GLdouble, GLdouble))
00917 BGL_Wrap(1, Vertex2dv,          void,     (GLdoubleP))
00918 BGL_Wrap(2, Vertex2f,           void,     (GLfloat, GLfloat))
00919 BGL_Wrap(1, Vertex2fv,          void,     (GLfloatP))
00920 BGL_Wrap(2, Vertex2i,           void,     (GLint, GLint))
00921 BGL_Wrap(1, Vertex2iv,          void,     (GLintP))
00922 BGL_Wrap(2, Vertex2s,           void,     (GLshort, GLshort))
00923 BGL_Wrap(1, Vertex2sv,          void,     (GLshortP))
00924 BGL_Wrap(3, Vertex3d,           void,     (GLdouble, GLdouble, GLdouble))
00925 BGL_Wrap(1, Vertex3dv,          void,     (GLdoubleP))
00926 BGL_Wrap(3, Vertex3f,           void,     (GLfloat, GLfloat, GLfloat))
00927 BGL_Wrap(1, Vertex3fv,          void,     (GLfloatP))
00928 BGL_Wrap(3, Vertex3i,           void,     (GLint, GLint, GLint))
00929 BGL_Wrap(1, Vertex3iv,          void,     (GLintP))
00930 BGL_Wrap(3, Vertex3s,           void,     (GLshort, GLshort, GLshort))
00931 BGL_Wrap(1, Vertex3sv,          void,     (GLshortP))
00932 BGL_Wrap(4, Vertex4d,           void,     (GLdouble, GLdouble, GLdouble, GLdouble))
00933 BGL_Wrap(1, Vertex4dv,          void,     (GLdoubleP))
00934 BGL_Wrap(4, Vertex4f,           void,     (GLfloat, GLfloat, GLfloat, GLfloat))
00935 BGL_Wrap(1, Vertex4fv,          void,     (GLfloatP))
00936 BGL_Wrap(4, Vertex4i,           void,     (GLint, GLint, GLint, GLint))
00937 BGL_Wrap(1, Vertex4iv,          void,     (GLintP))
00938 BGL_Wrap(4, Vertex4s,           void,     (GLshort, GLshort, GLshort, GLshort))
00939 BGL_Wrap(1, Vertex4sv,          void,     (GLshortP))
00940 BGL_Wrap(4, Viewport,           void,     (GLint, GLint, GLsizei, GLsizei))
00941 BGLU_Wrap(4, Perspective,       void,       (GLdouble, GLdouble, GLdouble, GLdouble))
00942 BGLU_Wrap(9, LookAt,            void,       (GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))
00943 BGLU_Wrap(4, Ortho2D,           void,       (GLdouble, GLdouble, GLdouble, GLdouble))
00944 BGLU_Wrap(5, PickMatrix,        void,       (GLdouble, GLdouble, GLdouble, GLdouble, GLintP))
00945 BGLU_Wrap(9, Project,           GLint,      (GLdouble, GLdouble, GLdouble, GLdoubleP, GLdoubleP, GLintP, GLdoubleP, GLdoubleP, GLdoubleP))
00946 BGLU_Wrap(9, UnProject,         GLint,      (GLdouble, GLdouble, GLdouble, GLdoubleP, GLdoubleP, GLintP, GLdoubleP, GLdoubleP, GLdoubleP))
00947 
00948 #undef MethodDef
00949 #define MethodDef(func) {"gl"#func, Method_##func, METH_VARARGS, "no string"}
00950 #define MethodDefu(func) {"glu"#func, Method_##func, METH_VARARGS, "no string"}
00951 /* So that MethodDef(Accum) becomes:
00952  * {"glAccum", Method_Accumfunc, METH_VARARGS} */
00953 
00954 static struct PyMethodDef BGL_methods[] = {
00955 
00956 /* #ifndef __APPLE__ */
00957     MethodDef(Accum),
00958     MethodDef(AlphaFunc),
00959     MethodDef(AreTexturesResident), 
00960     MethodDef(Begin),
00961     MethodDef(BindTexture), 
00962     MethodDef(Bitmap),
00963     MethodDef(BlendFunc),
00964     MethodDef(CallList),
00965     MethodDef(CallLists),
00966     MethodDef(Clear),
00967     MethodDef(ClearAccum),
00968     MethodDef(ClearColor),
00969     MethodDef(ClearDepth),
00970     MethodDef(ClearIndex),
00971     MethodDef(ClearStencil),
00972     MethodDef(ClipPlane),
00973     MethodDef(Color3b),
00974     MethodDef(Color3bv),
00975     MethodDef(Color3d),
00976     MethodDef(Color3dv),
00977     MethodDef(Color3f),
00978     MethodDef(Color3fv),
00979     MethodDef(Color3i),
00980     MethodDef(Color3iv),
00981     MethodDef(Color3s),
00982     MethodDef(Color3sv),
00983     MethodDef(Color3ub),
00984     MethodDef(Color3ubv),
00985     MethodDef(Color3ui),
00986     MethodDef(Color3uiv),
00987     MethodDef(Color3us),
00988     MethodDef(Color3usv),
00989     MethodDef(Color4b),
00990     MethodDef(Color4bv),
00991     MethodDef(Color4d),
00992     MethodDef(Color4dv),
00993     MethodDef(Color4f),
00994     MethodDef(Color4fv),
00995     MethodDef(Color4i),
00996     MethodDef(Color4iv),
00997     MethodDef(Color4s),
00998     MethodDef(Color4sv),
00999     MethodDef(Color4ub),
01000     MethodDef(Color4ubv),
01001     MethodDef(Color4ui),
01002     MethodDef(Color4uiv),
01003     MethodDef(Color4us),
01004     MethodDef(Color4usv),
01005     MethodDef(ColorMask),
01006     MethodDef(ColorMaterial),
01007     MethodDef(CopyPixels),
01008     MethodDef(CopyTexImage2D),
01009     MethodDef(CullFace),
01010     MethodDef(DeleteLists),
01011     MethodDef(DeleteTextures),
01012     MethodDef(DepthFunc),
01013     MethodDef(DepthMask),
01014     MethodDef(DepthRange),
01015     MethodDef(Disable),
01016     MethodDef(DrawBuffer),
01017     MethodDef(DrawPixels),
01018     MethodDef(EdgeFlag),
01019     MethodDef(EdgeFlagv),
01020     MethodDef(Enable),
01021     MethodDef(End),
01022     MethodDef(EndList),
01023     MethodDef(EvalCoord1d),
01024     MethodDef(EvalCoord1dv),
01025     MethodDef(EvalCoord1f),
01026     MethodDef(EvalCoord1fv),
01027     MethodDef(EvalCoord2d),
01028     MethodDef(EvalCoord2dv),
01029     MethodDef(EvalCoord2f),
01030     MethodDef(EvalCoord2fv),
01031     MethodDef(EvalMesh1),
01032     MethodDef(EvalMesh2),
01033     MethodDef(EvalPoint1),
01034     MethodDef(EvalPoint2),
01035     MethodDef(FeedbackBuffer),
01036     MethodDef(Finish),
01037     MethodDef(Flush),
01038     MethodDef(Fogf),
01039     MethodDef(Fogfv),
01040     MethodDef(Fogi),
01041     MethodDef(Fogiv),
01042     MethodDef(FrontFace),
01043     MethodDef(Frustum),
01044     MethodDef(GenLists),
01045     MethodDef(GenTextures), 
01046     MethodDef(GetBooleanv),
01047     MethodDef(GetClipPlane),
01048     MethodDef(GetDoublev),
01049     MethodDef(GetError),
01050     MethodDef(GetFloatv),
01051     MethodDef(GetIntegerv),
01052     MethodDef(GetLightfv),
01053     MethodDef(GetLightiv),
01054     MethodDef(GetMapdv),
01055     MethodDef(GetMapfv),
01056     MethodDef(GetMapiv),
01057     MethodDef(GetMaterialfv),
01058     MethodDef(GetMaterialiv),
01059     MethodDef(GetPixelMapfv),
01060     MethodDef(GetPixelMapuiv),
01061     MethodDef(GetPixelMapusv),
01062     MethodDef(GetPolygonStipple),
01063     MethodDef(GetString),
01064     MethodDef(GetTexEnvfv),
01065     MethodDef(GetTexEnviv),
01066     MethodDef(GetTexGendv),
01067     MethodDef(GetTexGenfv),
01068     MethodDef(GetTexGeniv),
01069     MethodDef(GetTexImage),
01070     MethodDef(GetTexLevelParameterfv),
01071     MethodDef(GetTexLevelParameteriv),
01072     MethodDef(GetTexParameterfv),
01073     MethodDef(GetTexParameteriv),
01074     MethodDef(Hint),
01075     MethodDef(IndexMask),
01076     MethodDef(Indexd),
01077     MethodDef(Indexdv),
01078     MethodDef(Indexf),
01079     MethodDef(Indexfv),
01080     MethodDef(Indexi),
01081     MethodDef(Indexiv),
01082     MethodDef(Indexs),
01083     MethodDef(Indexsv),
01084     MethodDef(InitNames),
01085     MethodDef(IsEnabled),
01086     MethodDef(IsList),
01087     MethodDef(IsTexture), 
01088     MethodDef(LightModelf),
01089     MethodDef(LightModelfv),
01090     MethodDef(LightModeli),
01091     MethodDef(LightModeliv),
01092     MethodDef(Lightf),
01093     MethodDef(Lightfv),
01094     MethodDef(Lighti),
01095     MethodDef(Lightiv),
01096     MethodDef(LineStipple),
01097     MethodDef(LineWidth),
01098     MethodDef(ListBase),
01099     MethodDef(LoadIdentity),
01100     MethodDef(LoadMatrixd),
01101     MethodDef(LoadMatrixf),
01102     MethodDef(LoadName),
01103     MethodDef(LogicOp),
01104     MethodDef(Map1d),
01105     MethodDef(Map1f),
01106     MethodDef(Map2d),
01107     MethodDef(Map2f),
01108     MethodDef(MapGrid1d),
01109     MethodDef(MapGrid1f),
01110     MethodDef(MapGrid2d),
01111     MethodDef(MapGrid2f),
01112     MethodDef(Materialf),
01113     MethodDef(Materialfv),
01114     MethodDef(Materiali),
01115     MethodDef(Materialiv),
01116     MethodDef(MatrixMode),
01117     MethodDef(MultMatrixd),
01118     MethodDef(MultMatrixf),
01119     MethodDef(NewList),
01120     MethodDef(Normal3b),
01121     MethodDef(Normal3bv),
01122     MethodDef(Normal3d),
01123     MethodDef(Normal3dv),
01124     MethodDef(Normal3f),
01125     MethodDef(Normal3fv),
01126     MethodDef(Normal3i),
01127     MethodDef(Normal3iv),
01128     MethodDef(Normal3s),
01129     MethodDef(Normal3sv),
01130     MethodDef(Ortho),
01131     MethodDef(PassThrough),
01132     MethodDef(PixelMapfv),
01133     MethodDef(PixelMapuiv),
01134     MethodDef(PixelMapusv),
01135     MethodDef(PixelStoref),
01136     MethodDef(PixelStorei),
01137     MethodDef(PixelTransferf),
01138     MethodDef(PixelTransferi),
01139     MethodDef(PixelZoom),
01140     MethodDef(PointSize),
01141     MethodDef(PolygonMode),
01142     MethodDef(PolygonOffset),
01143     MethodDef(PolygonStipple),
01144     MethodDef(PopAttrib),
01145     MethodDef(PopClientAttrib),
01146     MethodDef(PopMatrix),
01147     MethodDef(PopName),
01148     MethodDef(PrioritizeTextures), 
01149     MethodDef(PushAttrib),
01150     MethodDef(PushClientAttrib),
01151     MethodDef(PushMatrix),
01152     MethodDef(PushName),
01153     MethodDef(RasterPos2d),
01154     MethodDef(RasterPos2dv),
01155     MethodDef(RasterPos2f),
01156     MethodDef(RasterPos2fv),
01157     MethodDef(RasterPos2i),
01158     MethodDef(RasterPos2iv),
01159     MethodDef(RasterPos2s),
01160     MethodDef(RasterPos2sv),
01161     MethodDef(RasterPos3d),
01162     MethodDef(RasterPos3dv),
01163     MethodDef(RasterPos3f),
01164     MethodDef(RasterPos3fv),
01165     MethodDef(RasterPos3i),
01166     MethodDef(RasterPos3iv),
01167     MethodDef(RasterPos3s),
01168     MethodDef(RasterPos3sv),
01169     MethodDef(RasterPos4d),
01170     MethodDef(RasterPos4dv),
01171     MethodDef(RasterPos4f),
01172     MethodDef(RasterPos4fv),
01173     MethodDef(RasterPos4i),
01174     MethodDef(RasterPos4iv),
01175     MethodDef(RasterPos4s),
01176     MethodDef(RasterPos4sv),
01177     MethodDef(ReadBuffer),
01178     MethodDef(ReadPixels),
01179     MethodDef(Rectd),
01180     MethodDef(Rectdv),
01181     MethodDef(Rectf),
01182     MethodDef(Rectfv),
01183     MethodDef(Recti),
01184     MethodDef(Rectiv),
01185     MethodDef(Rects),
01186     MethodDef(Rectsv),
01187     MethodDef(RenderMode),
01188     MethodDef(Rotated),
01189     MethodDef(Rotatef),
01190     MethodDef(Scaled),
01191     MethodDef(Scalef),
01192     MethodDef(Scissor),
01193     MethodDef(SelectBuffer),
01194     MethodDef(ShadeModel),
01195     MethodDef(StencilFunc),
01196     MethodDef(StencilMask),
01197     MethodDef(StencilOp),
01198     MethodDef(TexCoord1d),
01199     MethodDef(TexCoord1dv),
01200     MethodDef(TexCoord1f),
01201     MethodDef(TexCoord1fv),
01202     MethodDef(TexCoord1i),
01203     MethodDef(TexCoord1iv),
01204     MethodDef(TexCoord1s),
01205     MethodDef(TexCoord1sv),
01206     MethodDef(TexCoord2d),
01207     MethodDef(TexCoord2dv),
01208     MethodDef(TexCoord2f),
01209     MethodDef(TexCoord2fv),
01210     MethodDef(TexCoord2i),
01211     MethodDef(TexCoord2iv),
01212     MethodDef(TexCoord2s),
01213     MethodDef(TexCoord2sv),
01214     MethodDef(TexCoord3d),
01215     MethodDef(TexCoord3dv),
01216     MethodDef(TexCoord3f),
01217     MethodDef(TexCoord3fv),
01218     MethodDef(TexCoord3i),
01219     MethodDef(TexCoord3iv),
01220     MethodDef(TexCoord3s),
01221     MethodDef(TexCoord3sv),
01222     MethodDef(TexCoord4d),
01223     MethodDef(TexCoord4dv),
01224     MethodDef(TexCoord4f),
01225     MethodDef(TexCoord4fv),
01226     MethodDef(TexCoord4i),
01227     MethodDef(TexCoord4iv),
01228     MethodDef(TexCoord4s),
01229     MethodDef(TexCoord4sv),
01230     MethodDef(TexEnvf),
01231     MethodDef(TexEnvfv),
01232     MethodDef(TexEnvi),
01233     MethodDef(TexEnviv),
01234     MethodDef(TexGend),
01235     MethodDef(TexGendv),
01236     MethodDef(TexGenf),
01237     MethodDef(TexGenfv),
01238     MethodDef(TexGeni),
01239     MethodDef(TexGeniv),
01240     MethodDef(TexImage1D),
01241     MethodDef(TexImage2D),
01242     MethodDef(TexParameterf),
01243     MethodDef(TexParameterfv),
01244     MethodDef(TexParameteri),
01245     MethodDef(TexParameteriv),
01246     MethodDef(Translated),
01247     MethodDef(Translatef),
01248     MethodDef(Vertex2d),
01249     MethodDef(Vertex2dv),
01250     MethodDef(Vertex2f),
01251     MethodDef(Vertex2fv),
01252     MethodDef(Vertex2i),
01253     MethodDef(Vertex2iv),
01254     MethodDef(Vertex2s),
01255     MethodDef(Vertex2sv),
01256     MethodDef(Vertex3d),
01257     MethodDef(Vertex3dv),
01258     MethodDef(Vertex3f),
01259     MethodDef(Vertex3fv),
01260     MethodDef(Vertex3i),
01261     MethodDef(Vertex3iv),
01262     MethodDef(Vertex3s),
01263     MethodDef(Vertex3sv),
01264     MethodDef(Vertex4d),
01265     MethodDef(Vertex4dv),
01266     MethodDef(Vertex4f),
01267     MethodDef(Vertex4fv),
01268     MethodDef(Vertex4i),
01269     MethodDef(Vertex4iv),
01270     MethodDef(Vertex4s),
01271     MethodDef(Vertex4sv),
01272     MethodDef(Viewport),
01273     MethodDefu(Perspective),
01274     MethodDefu(LookAt),
01275     MethodDefu(Ortho2D),
01276     MethodDefu(PickMatrix),
01277     MethodDefu(Project),
01278     MethodDefu(UnProject),
01279 /* #endif */
01280     {NULL, NULL, 0, NULL}
01281 };
01282 
01283 static struct PyModuleDef BGL_module_def = {
01284     PyModuleDef_HEAD_INIT,
01285     "bgl",  /* m_name */
01286     NULL,  /* m_doc */
01287     0,  /* m_size */
01288     BGL_methods,  /* m_methods */
01289     NULL,  /* m_reload */
01290     NULL,  /* m_traverse */
01291     NULL,  /* m_clear */
01292     NULL,  /* m_free */
01293 };
01294 
01295 
01296 PyObject *BPyInit_bgl(void)
01297 {
01298     PyObject *submodule, *dict, *item;
01299     submodule= PyModule_Create(&BGL_module_def);
01300     dict= PyModule_GetDict(submodule);
01301     
01302     if (PyType_Ready(&BGL_bufferType) < 0)
01303         return NULL; /* should never happen */
01304 
01305 
01306     PyModule_AddObject(submodule, "Buffer", (PyObject *)&BGL_bufferType);
01307     Py_INCREF((PyObject *)&BGL_bufferType);
01308 
01309 #define EXPP_ADDCONST(x) PyDict_SetItemString(dict, #x, item=PyLong_FromLong((int)x)); Py_DECREF(item)
01310 
01311 /* So, for example:
01312  * EXPP_ADDCONST(GL_CURRENT_BIT) becomes
01313  * PyDict_SetItemString(dict, "GL_CURRENT_BIT", item=PyLong_FromLong(GL_CURRENT_BIT)); Py_DECREF(item) */
01314 
01315     EXPP_ADDCONST(GL_CURRENT_BIT);
01316     EXPP_ADDCONST(GL_POINT_BIT);
01317     EXPP_ADDCONST(GL_LINE_BIT);
01318     EXPP_ADDCONST(GL_POLYGON_BIT);
01319     EXPP_ADDCONST(GL_POLYGON_STIPPLE_BIT);
01320     EXPP_ADDCONST(GL_PIXEL_MODE_BIT);
01321     EXPP_ADDCONST(GL_LIGHTING_BIT);
01322     EXPP_ADDCONST(GL_FOG_BIT);
01323     EXPP_ADDCONST(GL_DEPTH_BUFFER_BIT);
01324     EXPP_ADDCONST(GL_ACCUM_BUFFER_BIT);
01325     EXPP_ADDCONST(GL_STENCIL_BUFFER_BIT);
01326     EXPP_ADDCONST(GL_VIEWPORT_BIT);
01327     EXPP_ADDCONST(GL_TRANSFORM_BIT);
01328     EXPP_ADDCONST(GL_ENABLE_BIT);
01329     EXPP_ADDCONST(GL_COLOR_BUFFER_BIT);
01330     EXPP_ADDCONST(GL_HINT_BIT);
01331     EXPP_ADDCONST(GL_EVAL_BIT);
01332     EXPP_ADDCONST(GL_LIST_BIT);
01333     EXPP_ADDCONST(GL_TEXTURE_BIT);
01334     EXPP_ADDCONST(GL_SCISSOR_BIT);
01335     EXPP_ADDCONST(GL_ALL_ATTRIB_BITS);
01336     EXPP_ADDCONST(GL_CLIENT_ALL_ATTRIB_BITS);
01337     
01338     EXPP_ADDCONST(GL_FALSE);
01339     EXPP_ADDCONST(GL_TRUE);
01340 
01341     EXPP_ADDCONST(GL_POINTS);
01342     EXPP_ADDCONST(GL_LINES);
01343     EXPP_ADDCONST(GL_LINE_LOOP);
01344     EXPP_ADDCONST(GL_LINE_STRIP);
01345     EXPP_ADDCONST(GL_TRIANGLES);
01346     EXPP_ADDCONST(GL_TRIANGLE_STRIP);
01347     EXPP_ADDCONST(GL_TRIANGLE_FAN);
01348     EXPP_ADDCONST(GL_QUADS);
01349     EXPP_ADDCONST(GL_QUAD_STRIP);
01350     EXPP_ADDCONST(GL_POLYGON);
01351 
01352     EXPP_ADDCONST(GL_ACCUM);
01353     EXPP_ADDCONST(GL_LOAD);
01354     EXPP_ADDCONST(GL_RETURN);
01355     EXPP_ADDCONST(GL_MULT);
01356     EXPP_ADDCONST(GL_ADD);
01357 
01358     EXPP_ADDCONST(GL_NEVER);
01359     EXPP_ADDCONST(GL_LESS);
01360     EXPP_ADDCONST(GL_EQUAL);
01361     EXPP_ADDCONST(GL_LEQUAL);
01362     EXPP_ADDCONST(GL_GREATER);
01363     EXPP_ADDCONST(GL_NOTEQUAL);
01364     EXPP_ADDCONST(GL_GEQUAL);
01365     EXPP_ADDCONST(GL_ALWAYS);
01366 
01367     EXPP_ADDCONST(GL_ZERO);
01368     EXPP_ADDCONST(GL_ONE);
01369     EXPP_ADDCONST(GL_SRC_COLOR);
01370     EXPP_ADDCONST(GL_ONE_MINUS_SRC_COLOR);
01371     EXPP_ADDCONST(GL_SRC_ALPHA);
01372     EXPP_ADDCONST(GL_ONE_MINUS_SRC_ALPHA);
01373     EXPP_ADDCONST(GL_DST_ALPHA);
01374     EXPP_ADDCONST(GL_ONE_MINUS_DST_ALPHA);
01375 
01376     EXPP_ADDCONST(GL_DST_COLOR);
01377     EXPP_ADDCONST(GL_ONE_MINUS_DST_COLOR);
01378     EXPP_ADDCONST(GL_SRC_ALPHA_SATURATE);
01379 
01380     EXPP_ADDCONST(GL_NONE);
01381     EXPP_ADDCONST(GL_FRONT_LEFT);
01382     EXPP_ADDCONST(GL_FRONT_RIGHT);
01383     EXPP_ADDCONST(GL_BACK_LEFT);
01384     EXPP_ADDCONST(GL_BACK_RIGHT);
01385     EXPP_ADDCONST(GL_FRONT);
01386     EXPP_ADDCONST(GL_BACK);
01387     EXPP_ADDCONST(GL_LEFT);
01388     EXPP_ADDCONST(GL_RIGHT);
01389     EXPP_ADDCONST(GL_FRONT_AND_BACK);
01390     EXPP_ADDCONST(GL_AUX0);
01391     EXPP_ADDCONST(GL_AUX1);
01392     EXPP_ADDCONST(GL_AUX2);
01393     EXPP_ADDCONST(GL_AUX3);
01394 
01395     EXPP_ADDCONST(GL_NO_ERROR);
01396     EXPP_ADDCONST(GL_INVALID_ENUM);
01397     EXPP_ADDCONST(GL_INVALID_VALUE);
01398     EXPP_ADDCONST(GL_INVALID_OPERATION);
01399     EXPP_ADDCONST(GL_STACK_OVERFLOW);
01400     EXPP_ADDCONST(GL_STACK_UNDERFLOW);
01401     EXPP_ADDCONST(GL_OUT_OF_MEMORY);
01402 
01403     EXPP_ADDCONST(GL_2D);
01404     EXPP_ADDCONST(GL_3D);
01405     EXPP_ADDCONST(GL_3D_COLOR);
01406     EXPP_ADDCONST(GL_3D_COLOR_TEXTURE);
01407     EXPP_ADDCONST(GL_4D_COLOR_TEXTURE);
01408 
01409     EXPP_ADDCONST(GL_PASS_THROUGH_TOKEN);
01410     EXPP_ADDCONST(GL_POINT_TOKEN);
01411     EXPP_ADDCONST(GL_LINE_TOKEN);
01412     EXPP_ADDCONST(GL_POLYGON_TOKEN);
01413     EXPP_ADDCONST(GL_BITMAP_TOKEN);
01414     EXPP_ADDCONST(GL_DRAW_PIXEL_TOKEN);
01415     EXPP_ADDCONST(GL_COPY_PIXEL_TOKEN);
01416     EXPP_ADDCONST(GL_LINE_RESET_TOKEN);
01417 
01418     EXPP_ADDCONST(GL_EXP);
01419     EXPP_ADDCONST(GL_EXP2);
01420 
01421     EXPP_ADDCONST(GL_CW);
01422     EXPP_ADDCONST(GL_CCW);
01423 
01424     EXPP_ADDCONST(GL_COEFF);
01425     EXPP_ADDCONST(GL_ORDER);
01426     EXPP_ADDCONST(GL_DOMAIN);
01427 
01428     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_I);
01429     EXPP_ADDCONST(GL_PIXEL_MAP_S_TO_S);
01430     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_R);
01431     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_G);
01432     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_B);
01433     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_A);
01434     EXPP_ADDCONST(GL_PIXEL_MAP_R_TO_R);
01435     EXPP_ADDCONST(GL_PIXEL_MAP_G_TO_G);
01436     EXPP_ADDCONST(GL_PIXEL_MAP_B_TO_B);
01437     EXPP_ADDCONST(GL_PIXEL_MAP_A_TO_A);
01438 
01439     EXPP_ADDCONST(GL_CURRENT_COLOR);
01440     EXPP_ADDCONST(GL_CURRENT_INDEX);
01441     EXPP_ADDCONST(GL_CURRENT_NORMAL);
01442     EXPP_ADDCONST(GL_CURRENT_TEXTURE_COORDS);
01443     EXPP_ADDCONST(GL_CURRENT_RASTER_COLOR);
01444     EXPP_ADDCONST(GL_CURRENT_RASTER_INDEX);
01445     EXPP_ADDCONST(GL_CURRENT_RASTER_TEXTURE_COORDS);
01446     EXPP_ADDCONST(GL_CURRENT_RASTER_POSITION);
01447     EXPP_ADDCONST(GL_CURRENT_RASTER_POSITION_VALID);
01448     EXPP_ADDCONST(GL_CURRENT_RASTER_DISTANCE);
01449     EXPP_ADDCONST(GL_POINT_SMOOTH);
01450     EXPP_ADDCONST(GL_POINT_SIZE);
01451     EXPP_ADDCONST(GL_POINT_SIZE_RANGE);
01452     EXPP_ADDCONST(GL_POINT_SIZE_GRANULARITY);
01453     EXPP_ADDCONST(GL_LINE_SMOOTH);
01454     EXPP_ADDCONST(GL_LINE_WIDTH);
01455     EXPP_ADDCONST(GL_LINE_WIDTH_RANGE);
01456     EXPP_ADDCONST(GL_LINE_WIDTH_GRANULARITY);
01457     EXPP_ADDCONST(GL_LINE_STIPPLE);
01458     EXPP_ADDCONST(GL_LINE_STIPPLE_PATTERN);
01459     EXPP_ADDCONST(GL_LINE_STIPPLE_REPEAT);
01460     EXPP_ADDCONST(GL_LIST_MODE);
01461     EXPP_ADDCONST(GL_MAX_LIST_NESTING);
01462     EXPP_ADDCONST(GL_LIST_BASE);
01463     EXPP_ADDCONST(GL_LIST_INDEX);
01464     EXPP_ADDCONST(GL_POLYGON_MODE);
01465     EXPP_ADDCONST(GL_POLYGON_SMOOTH);
01466     EXPP_ADDCONST(GL_POLYGON_STIPPLE);
01467     EXPP_ADDCONST(GL_EDGE_FLAG);
01468     EXPP_ADDCONST(GL_CULL_FACE);
01469     EXPP_ADDCONST(GL_CULL_FACE_MODE);
01470     EXPP_ADDCONST(GL_FRONT_FACE);
01471     EXPP_ADDCONST(GL_LIGHTING);
01472     EXPP_ADDCONST(GL_LIGHT_MODEL_LOCAL_VIEWER);
01473     EXPP_ADDCONST(GL_LIGHT_MODEL_TWO_SIDE);
01474     EXPP_ADDCONST(GL_LIGHT_MODEL_AMBIENT);
01475     EXPP_ADDCONST(GL_SHADE_MODEL);
01476     EXPP_ADDCONST(GL_COLOR_MATERIAL_FACE);
01477     EXPP_ADDCONST(GL_COLOR_MATERIAL_PARAMETER);
01478     EXPP_ADDCONST(GL_COLOR_MATERIAL);
01479     EXPP_ADDCONST(GL_FOG);
01480     EXPP_ADDCONST(GL_FOG_INDEX);
01481     EXPP_ADDCONST(GL_FOG_DENSITY);
01482     EXPP_ADDCONST(GL_FOG_START);
01483     EXPP_ADDCONST(GL_FOG_END);
01484     EXPP_ADDCONST(GL_FOG_MODE);
01485     EXPP_ADDCONST(GL_FOG_COLOR);
01486     EXPP_ADDCONST(GL_DEPTH_RANGE);
01487     EXPP_ADDCONST(GL_DEPTH_TEST);
01488     EXPP_ADDCONST(GL_DEPTH_WRITEMASK);
01489     EXPP_ADDCONST(GL_DEPTH_CLEAR_VALUE);
01490     EXPP_ADDCONST(GL_DEPTH_FUNC);
01491     EXPP_ADDCONST(GL_ACCUM_CLEAR_VALUE);
01492     EXPP_ADDCONST(GL_STENCIL_TEST);
01493     EXPP_ADDCONST(GL_STENCIL_CLEAR_VALUE);
01494     EXPP_ADDCONST(GL_STENCIL_FUNC);
01495     EXPP_ADDCONST(GL_STENCIL_VALUE_MASK);
01496     EXPP_ADDCONST(GL_STENCIL_FAIL);
01497     EXPP_ADDCONST(GL_STENCIL_PASS_DEPTH_FAIL);
01498     EXPP_ADDCONST(GL_STENCIL_PASS_DEPTH_PASS);
01499     EXPP_ADDCONST(GL_STENCIL_REF);
01500     EXPP_ADDCONST(GL_STENCIL_WRITEMASK);
01501     EXPP_ADDCONST(GL_MATRIX_MODE);
01502     EXPP_ADDCONST(GL_NORMALIZE);
01503     EXPP_ADDCONST(GL_VIEWPORT);
01504     EXPP_ADDCONST(GL_MODELVIEW_STACK_DEPTH);
01505     EXPP_ADDCONST(GL_PROJECTION_STACK_DEPTH);
01506     EXPP_ADDCONST(GL_TEXTURE_STACK_DEPTH);
01507     EXPP_ADDCONST(GL_MODELVIEW_MATRIX);
01508     EXPP_ADDCONST(GL_PROJECTION_MATRIX);
01509     EXPP_ADDCONST(GL_TEXTURE_MATRIX);
01510     EXPP_ADDCONST(GL_ATTRIB_STACK_DEPTH);
01511     EXPP_ADDCONST(GL_ALPHA_TEST);
01512     EXPP_ADDCONST(GL_ALPHA_TEST_FUNC);
01513     EXPP_ADDCONST(GL_ALPHA_TEST_REF);
01514     EXPP_ADDCONST(GL_DITHER);
01515     EXPP_ADDCONST(GL_BLEND_DST);
01516     EXPP_ADDCONST(GL_BLEND_SRC);
01517     EXPP_ADDCONST(GL_BLEND);
01518     EXPP_ADDCONST(GL_LOGIC_OP_MODE);
01519     EXPP_ADDCONST(GL_LOGIC_OP);
01520     EXPP_ADDCONST(GL_AUX_BUFFERS);
01521     EXPP_ADDCONST(GL_DRAW_BUFFER);
01522     EXPP_ADDCONST(GL_READ_BUFFER);
01523     EXPP_ADDCONST(GL_SCISSOR_BOX);
01524     EXPP_ADDCONST(GL_SCISSOR_TEST);
01525     EXPP_ADDCONST(GL_INDEX_CLEAR_VALUE);
01526     EXPP_ADDCONST(GL_INDEX_WRITEMASK);
01527     EXPP_ADDCONST(GL_COLOR_CLEAR_VALUE);
01528     EXPP_ADDCONST(GL_COLOR_WRITEMASK);
01529     EXPP_ADDCONST(GL_INDEX_MODE);
01530     EXPP_ADDCONST(GL_RGBA_MODE);
01531     EXPP_ADDCONST(GL_DOUBLEBUFFER);
01532     EXPP_ADDCONST(GL_STEREO);
01533     EXPP_ADDCONST(GL_RENDER_MODE);
01534     EXPP_ADDCONST(GL_PERSPECTIVE_CORRECTION_HINT);
01535     EXPP_ADDCONST(GL_POINT_SMOOTH_HINT);
01536     EXPP_ADDCONST(GL_LINE_SMOOTH_HINT);
01537     EXPP_ADDCONST(GL_POLYGON_SMOOTH_HINT);
01538     EXPP_ADDCONST(GL_FOG_HINT);
01539     EXPP_ADDCONST(GL_TEXTURE_GEN_S);
01540     EXPP_ADDCONST(GL_TEXTURE_GEN_T);
01541     EXPP_ADDCONST(GL_TEXTURE_GEN_R);
01542     EXPP_ADDCONST(GL_TEXTURE_GEN_Q);
01543     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_I_SIZE);
01544     EXPP_ADDCONST(GL_PIXEL_MAP_S_TO_S_SIZE);
01545     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_R_SIZE);
01546     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_G_SIZE);
01547     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_B_SIZE);
01548     EXPP_ADDCONST(GL_PIXEL_MAP_I_TO_A_SIZE);
01549     EXPP_ADDCONST(GL_PIXEL_MAP_R_TO_R_SIZE);
01550     EXPP_ADDCONST(GL_PIXEL_MAP_G_TO_G_SIZE);
01551     EXPP_ADDCONST(GL_PIXEL_MAP_B_TO_B_SIZE);
01552     EXPP_ADDCONST(GL_PIXEL_MAP_A_TO_A_SIZE);
01553     EXPP_ADDCONST(GL_UNPACK_SWAP_BYTES);
01554     EXPP_ADDCONST(GL_UNPACK_LSB_FIRST);
01555     EXPP_ADDCONST(GL_UNPACK_ROW_LENGTH);
01556     EXPP_ADDCONST(GL_UNPACK_SKIP_ROWS);
01557     EXPP_ADDCONST(GL_UNPACK_SKIP_PIXELS);
01558     EXPP_ADDCONST(GL_UNPACK_ALIGNMENT);
01559     EXPP_ADDCONST(GL_PACK_SWAP_BYTES);
01560     EXPP_ADDCONST(GL_PACK_LSB_FIRST);
01561     EXPP_ADDCONST(GL_PACK_ROW_LENGTH);
01562     EXPP_ADDCONST(GL_PACK_SKIP_ROWS);
01563     EXPP_ADDCONST(GL_PACK_SKIP_PIXELS);
01564     EXPP_ADDCONST(GL_PACK_ALIGNMENT);
01565     EXPP_ADDCONST(GL_MAP_COLOR);
01566     EXPP_ADDCONST(GL_MAP_STENCIL);
01567     EXPP_ADDCONST(GL_INDEX_SHIFT);
01568     EXPP_ADDCONST(GL_INDEX_OFFSET);
01569     EXPP_ADDCONST(GL_RED_SCALE);
01570     EXPP_ADDCONST(GL_RED_BIAS);
01571     EXPP_ADDCONST(GL_ZOOM_X);
01572     EXPP_ADDCONST(GL_ZOOM_Y);
01573     EXPP_ADDCONST(GL_GREEN_SCALE);
01574     EXPP_ADDCONST(GL_GREEN_BIAS);
01575     EXPP_ADDCONST(GL_BLUE_SCALE);
01576     EXPP_ADDCONST(GL_BLUE_BIAS);
01577     EXPP_ADDCONST(GL_ALPHA_SCALE);
01578     EXPP_ADDCONST(GL_ALPHA_BIAS);
01579     EXPP_ADDCONST(GL_DEPTH_SCALE);
01580     EXPP_ADDCONST(GL_DEPTH_BIAS);
01581     EXPP_ADDCONST(GL_MAX_EVAL_ORDER);
01582     EXPP_ADDCONST(GL_MAX_LIGHTS);
01583     EXPP_ADDCONST(GL_MAX_CLIP_PLANES);
01584     EXPP_ADDCONST(GL_MAX_TEXTURE_SIZE);
01585     EXPP_ADDCONST(GL_MAX_PIXEL_MAP_TABLE);
01586     EXPP_ADDCONST(GL_MAX_ATTRIB_STACK_DEPTH);
01587     EXPP_ADDCONST(GL_MAX_MODELVIEW_STACK_DEPTH);
01588     EXPP_ADDCONST(GL_MAX_NAME_STACK_DEPTH);
01589     EXPP_ADDCONST(GL_MAX_PROJECTION_STACK_DEPTH);
01590     EXPP_ADDCONST(GL_MAX_TEXTURE_STACK_DEPTH);
01591     EXPP_ADDCONST(GL_MAX_VIEWPORT_DIMS);
01592     EXPP_ADDCONST(GL_SUBPIXEL_BITS);
01593     EXPP_ADDCONST(GL_INDEX_BITS);
01594     EXPP_ADDCONST(GL_RED_BITS);
01595     EXPP_ADDCONST(GL_GREEN_BITS);
01596     EXPP_ADDCONST(GL_BLUE_BITS);
01597     EXPP_ADDCONST(GL_ALPHA_BITS);
01598     EXPP_ADDCONST(GL_DEPTH_BITS);
01599     EXPP_ADDCONST(GL_STENCIL_BITS);
01600     EXPP_ADDCONST(GL_ACCUM_RED_BITS);
01601     EXPP_ADDCONST(GL_ACCUM_GREEN_BITS);
01602     EXPP_ADDCONST(GL_ACCUM_BLUE_BITS);
01603     EXPP_ADDCONST(GL_ACCUM_ALPHA_BITS);
01604     EXPP_ADDCONST(GL_NAME_STACK_DEPTH);
01605     EXPP_ADDCONST(GL_AUTO_NORMAL);
01606     EXPP_ADDCONST(GL_MAP1_COLOR_4);
01607     EXPP_ADDCONST(GL_MAP1_INDEX);
01608     EXPP_ADDCONST(GL_MAP1_NORMAL);
01609     EXPP_ADDCONST(GL_MAP1_TEXTURE_COORD_1);
01610     EXPP_ADDCONST(GL_MAP1_TEXTURE_COORD_2);
01611     EXPP_ADDCONST(GL_MAP1_TEXTURE_COORD_3);
01612     EXPP_ADDCONST(GL_MAP1_TEXTURE_COORD_4);
01613     EXPP_ADDCONST(GL_MAP1_VERTEX_3);
01614     EXPP_ADDCONST(GL_MAP1_VERTEX_4);
01615     EXPP_ADDCONST(GL_MAP2_COLOR_4);
01616     EXPP_ADDCONST(GL_MAP2_INDEX);
01617     EXPP_ADDCONST(GL_MAP2_NORMAL);
01618     EXPP_ADDCONST(GL_MAP2_TEXTURE_COORD_1);
01619     EXPP_ADDCONST(GL_MAP2_TEXTURE_COORD_2);
01620     EXPP_ADDCONST(GL_MAP2_TEXTURE_COORD_3);
01621     EXPP_ADDCONST(GL_MAP2_TEXTURE_COORD_4);
01622     EXPP_ADDCONST(GL_MAP2_VERTEX_3);
01623     EXPP_ADDCONST(GL_MAP2_VERTEX_4);
01624     EXPP_ADDCONST(GL_MAP1_GRID_DOMAIN);
01625     EXPP_ADDCONST(GL_MAP1_GRID_SEGMENTS);
01626     EXPP_ADDCONST(GL_MAP2_GRID_DOMAIN);
01627     EXPP_ADDCONST(GL_MAP2_GRID_SEGMENTS);
01628     EXPP_ADDCONST(GL_TEXTURE_1D);
01629     EXPP_ADDCONST(GL_TEXTURE_2D);
01630 
01631     EXPP_ADDCONST(GL_TEXTURE_WIDTH);
01632     EXPP_ADDCONST(GL_TEXTURE_HEIGHT);
01633     EXPP_ADDCONST(GL_TEXTURE_COMPONENTS);
01634     EXPP_ADDCONST(GL_TEXTURE_BORDER_COLOR);
01635     EXPP_ADDCONST(GL_TEXTURE_BORDER);
01636 
01637     EXPP_ADDCONST(GL_DONT_CARE);
01638     EXPP_ADDCONST(GL_FASTEST);
01639     EXPP_ADDCONST(GL_NICEST);
01640 
01641     EXPP_ADDCONST(GL_AMBIENT);
01642     EXPP_ADDCONST(GL_DIFFUSE);
01643     EXPP_ADDCONST(GL_SPECULAR);
01644     EXPP_ADDCONST(GL_POSITION);
01645     EXPP_ADDCONST(GL_SPOT_DIRECTION);
01646     EXPP_ADDCONST(GL_SPOT_EXPONENT);
01647     EXPP_ADDCONST(GL_SPOT_CUTOFF);
01648     EXPP_ADDCONST(GL_CONSTANT_ATTENUATION);
01649     EXPP_ADDCONST(GL_LINEAR_ATTENUATION);
01650     EXPP_ADDCONST(GL_QUADRATIC_ATTENUATION);
01651 
01652     EXPP_ADDCONST(GL_COMPILE);
01653     EXPP_ADDCONST(GL_COMPILE_AND_EXECUTE);
01654 
01655     EXPP_ADDCONST(GL_BYTE);
01656     EXPP_ADDCONST(GL_UNSIGNED_BYTE);
01657     EXPP_ADDCONST(GL_SHORT);
01658     EXPP_ADDCONST(GL_UNSIGNED_SHORT);
01659     EXPP_ADDCONST(GL_INT);
01660     EXPP_ADDCONST(GL_UNSIGNED_INT);
01661     EXPP_ADDCONST(GL_FLOAT);
01662     EXPP_ADDCONST(GL_DOUBLE);
01663     EXPP_ADDCONST(GL_2_BYTES);
01664     EXPP_ADDCONST(GL_3_BYTES);
01665     EXPP_ADDCONST(GL_4_BYTES);
01666 
01667     EXPP_ADDCONST(GL_CLEAR);
01668     EXPP_ADDCONST(GL_AND);
01669     EXPP_ADDCONST(GL_AND_REVERSE);
01670     EXPP_ADDCONST(GL_COPY);
01671     EXPP_ADDCONST(GL_AND_INVERTED);
01672     EXPP_ADDCONST(GL_NOOP);
01673     EXPP_ADDCONST(GL_XOR);
01674     EXPP_ADDCONST(GL_OR);
01675     EXPP_ADDCONST(GL_NOR);
01676     EXPP_ADDCONST(GL_EQUIV);
01677     EXPP_ADDCONST(GL_INVERT);
01678     EXPP_ADDCONST(GL_OR_REVERSE);
01679     EXPP_ADDCONST(GL_COPY_INVERTED);
01680     EXPP_ADDCONST(GL_OR_INVERTED);
01681     EXPP_ADDCONST(GL_NAND);
01682     EXPP_ADDCONST(GL_SET);
01683 
01684     EXPP_ADDCONST(GL_EMISSION);
01685     EXPP_ADDCONST(GL_SHININESS);
01686     EXPP_ADDCONST(GL_AMBIENT_AND_DIFFUSE);
01687     EXPP_ADDCONST(GL_COLOR_INDEXES);
01688 
01689     EXPP_ADDCONST(GL_MODELVIEW);
01690     EXPP_ADDCONST(GL_PROJECTION);
01691     EXPP_ADDCONST(GL_TEXTURE);
01692 
01693     EXPP_ADDCONST(GL_COLOR);
01694     EXPP_ADDCONST(GL_DEPTH);
01695     EXPP_ADDCONST(GL_STENCIL);
01696 
01697     EXPP_ADDCONST(GL_COLOR_INDEX);
01698     EXPP_ADDCONST(GL_STENCIL_INDEX);
01699     EXPP_ADDCONST(GL_DEPTH_COMPONENT);
01700     EXPP_ADDCONST(GL_RED);
01701     EXPP_ADDCONST(GL_GREEN);
01702     EXPP_ADDCONST(GL_BLUE);
01703     EXPP_ADDCONST(GL_ALPHA);
01704     EXPP_ADDCONST(GL_RGB);
01705     EXPP_ADDCONST(GL_RGBA);
01706     EXPP_ADDCONST(GL_LUMINANCE);
01707     EXPP_ADDCONST(GL_LUMINANCE_ALPHA);
01708 
01709     EXPP_ADDCONST(GL_BITMAP);
01710 
01711     EXPP_ADDCONST(GL_POINT);
01712     EXPP_ADDCONST(GL_LINE);
01713     EXPP_ADDCONST(GL_FILL);
01714 
01715     EXPP_ADDCONST(GL_RENDER);
01716     EXPP_ADDCONST(GL_FEEDBACK);
01717     EXPP_ADDCONST(GL_SELECT);
01718 
01719     EXPP_ADDCONST(GL_FLAT);
01720     EXPP_ADDCONST(GL_SMOOTH);
01721 
01722     EXPP_ADDCONST(GL_KEEP);
01723     EXPP_ADDCONST(GL_REPLACE);
01724     EXPP_ADDCONST(GL_INCR);
01725     EXPP_ADDCONST(GL_DECR);
01726 
01727     EXPP_ADDCONST(GL_VENDOR);
01728     EXPP_ADDCONST(GL_RENDERER);
01729     EXPP_ADDCONST(GL_VERSION);
01730     EXPP_ADDCONST(GL_EXTENSIONS);
01731 
01732     EXPP_ADDCONST(GL_S);
01733     EXPP_ADDCONST(GL_T);
01734     EXPP_ADDCONST(GL_R);
01735     EXPP_ADDCONST(GL_Q);
01736 
01737     EXPP_ADDCONST(GL_MODULATE);
01738     EXPP_ADDCONST(GL_DECAL);
01739 
01740     EXPP_ADDCONST(GL_TEXTURE_ENV_MODE);
01741     EXPP_ADDCONST(GL_TEXTURE_ENV_COLOR);
01742 
01743     EXPP_ADDCONST(GL_TEXTURE_ENV);
01744 
01745     EXPP_ADDCONST(GL_EYE_LINEAR);
01746     EXPP_ADDCONST(GL_OBJECT_LINEAR);
01747     EXPP_ADDCONST(GL_SPHERE_MAP);
01748 
01749     EXPP_ADDCONST(GL_TEXTURE_GEN_MODE);
01750     EXPP_ADDCONST(GL_OBJECT_PLANE);
01751     EXPP_ADDCONST(GL_EYE_PLANE);
01752 
01753     EXPP_ADDCONST(GL_NEAREST);
01754     EXPP_ADDCONST(GL_LINEAR);
01755 
01756     EXPP_ADDCONST(GL_NEAREST_MIPMAP_NEAREST);
01757     EXPP_ADDCONST(GL_LINEAR_MIPMAP_NEAREST);
01758     EXPP_ADDCONST(GL_NEAREST_MIPMAP_LINEAR);
01759     EXPP_ADDCONST(GL_LINEAR_MIPMAP_LINEAR);
01760 
01761     EXPP_ADDCONST(GL_TEXTURE_MAG_FILTER);
01762     EXPP_ADDCONST(GL_TEXTURE_MIN_FILTER);
01763     EXPP_ADDCONST(GL_TEXTURE_WRAP_S);
01764     EXPP_ADDCONST(GL_TEXTURE_WRAP_T);
01765 
01766     EXPP_ADDCONST(GL_CLAMP);
01767     EXPP_ADDCONST(GL_REPEAT);
01768 
01769     EXPP_ADDCONST(GL_CLIP_PLANE0);
01770     EXPP_ADDCONST(GL_CLIP_PLANE1);
01771     EXPP_ADDCONST(GL_CLIP_PLANE2);
01772     EXPP_ADDCONST(GL_CLIP_PLANE3);
01773     EXPP_ADDCONST(GL_CLIP_PLANE4);
01774     EXPP_ADDCONST(GL_CLIP_PLANE5);
01775 
01776     EXPP_ADDCONST(GL_LIGHT0);
01777     EXPP_ADDCONST(GL_LIGHT1);
01778     EXPP_ADDCONST(GL_LIGHT2);
01779     EXPP_ADDCONST(GL_LIGHT3);
01780     EXPP_ADDCONST(GL_LIGHT4);
01781     EXPP_ADDCONST(GL_LIGHT5);
01782     EXPP_ADDCONST(GL_LIGHT6);
01783     EXPP_ADDCONST(GL_LIGHT7);
01784     
01785     EXPP_ADDCONST(GL_POLYGON_OFFSET_UNITS);
01786     EXPP_ADDCONST(GL_POLYGON_OFFSET_POINT);
01787     EXPP_ADDCONST(GL_POLYGON_OFFSET_LINE);
01788     EXPP_ADDCONST(GL_POLYGON_OFFSET_FILL);
01789     EXPP_ADDCONST(GL_POLYGON_OFFSET_FACTOR);
01790     
01791     EXPP_ADDCONST(GL_TEXTURE_PRIORITY);
01792     EXPP_ADDCONST(GL_TEXTURE_RESIDENT);
01793     EXPP_ADDCONST(GL_TEXTURE_BINDING_1D);
01794     EXPP_ADDCONST(GL_TEXTURE_BINDING_2D);
01795 
01796     return submodule;
01797 }
01798