]> git.cworth.org Git - glenv/blobdiff - glwrap.c
Share common code for numeric glGet functions
[glenv] / glwrap.c
index a229e4bcd28b0a64432554c3f3479ff7ca4ad9f1..64fb95c2cee9c7a5d3e8d49f963b8fd06d94852d 100644 (file)
--- a/glwrap.c
+++ b/glwrap.c
@@ -230,112 +230,79 @@ glenv_minor_version (void)
        return atoi (decimal + 1);
 }
 
-void
-glGetDoublev (GLenum pname, GLdouble *params)
+/* Read the user-specified glenv value for 'name'.
+ *
+ * Returns true if a value is available and is written to 'value'.
+ */
+static int
+glenv_get_integer (GLenum name, int *value)
 {
-       switch (pname) {
+       switch (name) {
        case GL_NUM_EXTENSIONS:
                if (glenv_gl_extensions) {
-                       *params = glenv_num_gl_extensions;
-                       return;
+                       *value = glenv_num_gl_extensions;
+                       return 1;
                }
                break;
        case GL_MAJOR_VERSION:
                if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_major_version();
-                       return;
+                       *value = glenv_major_version();
+                       return 1;
                }
                break;
        case GL_MINOR_VERSION:
                if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_minor_version();
-                       return;
+                       *value = glenv_minor_version();
+                       return 1;
                }
                break;
        }
 
-       GLAZE_DEFER (glGetDoublev, pname, params);
+       return 0;
+}
+
+void
+glGetDoublev (GLenum pname, GLdouble *params)
+{
+       int value;
+
+       if (glenv_get_integer (pname, &value))
+               *params = value;
+       else
+               GLAZE_DEFER (glGetDoublev, pname, params);
 }
 
 void
 glGetFloatv (GLenum pname, GLfloat *params)
 {
-       switch (pname) {
-       case GL_NUM_EXTENSIONS:
-               if (glenv_gl_extensions) {
-                       *params = glenv_num_gl_extensions;
-                       return;
-               }
-               break;
-       case GL_MAJOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_major_version();
-                       return;
-               }
-               break;
-       case GL_MINOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_minor_version();
-                       return;
-               }
-               break;
-       }
+       int value;
 
-       GLAZE_DEFER (glGetFloatv, pname, params);
+       if (glenv_get_integer (pname, &value))
+               *params = value;
+       else
+               GLAZE_DEFER (glGetFloatv, pname, params);
 }
 
 void
 glGetIntegerv (GLenum pname, GLint *params)
 {
-       switch (pname) {
-       case GL_NUM_EXTENSIONS:
-               if (glenv_gl_extensions) {
-                       *params = glenv_num_gl_extensions;
-                       return;
-               }
-               break;
-       case GL_MAJOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_major_version();
-                       return;
-               }
-               break;
-       case GL_MINOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_minor_version();
-                       return;
-               }
-               break;
-       }
+       int value;
 
-       GLAZE_DEFER (glGetIntegerv, pname, params);
+       if (glenv_get_integer (pname, &value))
+               *params = value;
+       else
+               GLAZE_DEFER (glGetIntegerv, pname, params);
 }
 
 void
 glGetInteger64v (GLenum pname, GLint64 * params)
 {
-       switch (pname) {
-       case GL_NUM_EXTENSIONS:
-               if (glenv_gl_extensions) {
-                       *params = glenv_num_gl_extensions;
-                       return;
-               }
-               break;
-       case GL_MAJOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_major_version();
-                       return;
-               }
-               break;
-       case GL_MINOR_VERSION:
-               if (getenv ("GLENV_GL_VERSION")) {
-                       *params = glenv_minor_version();
-                       return;
-               }
-               break;
-       }
+       int value;
 
-       GLAZE_DEFER (glGetInteger64v, pname, params);
+       if (glenv_get_integer (pname, &value))
+               *params = value;
+       else
+               GLAZE_DEFER (glGetInteger64v, pname, params);
 }
 
 const GLubyte *