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