]> git.cworth.org Git - glenv/commitdiff
Share common code for numeric glGet functions master
authorCarl Worth <cworth@cworth.org>
Thu, 5 Sep 2013 21:12:18 +0000 (14:12 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 5 Sep 2013 21:12:18 +0000 (14:12 -0700)
The implementations of glGetDoublev, glGetFloatv, glGetIntegerv, and
glGetInteger64v were functionally identical, (differing only in the
type signature of the function and the name of the function being
deferred to). Here, we share all of the common parts in a new
glenv_get_integer function.

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 *