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.
return atoi (decimal + 1);
}
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)
case GL_NUM_EXTENSIONS:
if (glenv_gl_extensions) {
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")) {
}
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")) {
}
break;
case GL_MINOR_VERSION:
if (getenv ("GLENV_GL_VERSION")) {
- *params = glenv_minor_version();
- return;
+ *value = glenv_minor_version();
+ return 1;
- 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)
{
}
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;
- }
- 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)
{
}
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;
- }
- 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)
{
}
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;
- }
- GLAZE_DEFER (glGetInteger64v, pname, params);
+ if (glenv_get_integer (pname, &value))
+ *params = value;
+ else
+ GLAZE_DEFER (glGetInteger64v, pname, params);