From 91d728328c25fbc6bbecb90949b293cd71295ff7 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 5 Sep 2013 14:12:18 -0700 Subject: [PATCH] Share common code for numeric glGet functions 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 | 113 ++++++++++++++++++++----------------------------------- 1 file changed, 40 insertions(+), 73 deletions(-) diff --git a/glwrap.c b/glwrap.c index a229e4b..64fb95c 100644 --- 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 * -- 2.43.0