-/* $Id: enums.c,v 1.6 2000/02/05 01:52:05 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.3
- *
- * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
- *
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Author:
+ * Keith Whitwell <keith@tungstengraphics.com>
*/
-#ifdef PC_HEADER
-#include "all.h"
-#else
#include "glheader.h"
#include "enums.h"
-#include "mem.h"
-#endif
+#include "imports.h"
-typedef struct {
- const char *c;
- int n;
+typedef struct {
+ const char *c;
+ int n;
} enum_elt;
-enum_elt all_enums[] =
+enum_elt all_enums[] =
{
/* Boolean values */
{ "GL_FALSE", 0 },
{ "GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1 },
{ "GL_MAX_TEXTURE_UNITS_ARB", 0x84E2 },
- { "GL_NORMAL_MAP_NV", 0x8511 },
- { "GL_REFLECTION_MAP_NV", 0x8512 },
+ { "GL_OCCLUSION_TEST_HP", 0x8165 },
+ { "GL_OCCLUSION_TEST_RESULT_HP", 0x8166 },
+
+ { "GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500 },
+ { "GL_TEXTURE_LOD_BIAS_EXT", 0x8501 },
+
+ /* GL_ARB_texture_cube_map */
+ { "GL_NORMAL_MAP_ARB", 0x8511 },
+ { "GL_REFLECTION_MAP_ARB", 0x8512 },
+ { "GL_TEXTURE_CUBE_MAP_ARB", 0x8513 },
+ { "GL_TEXTURE_BINDING_CUBE_MAP_ARB", 0x8514 },
+ { "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB", 0x8515 },
+ { "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB", 0x8516 },
+ { "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB", 0x8517 },
+ { "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB", 0x8518 },
+ { "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB", 0x8519 },
+ { "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB", 0x851a },
+ { "GL_PROXY_TEXTURE_CUBE_MAP_ARB", 0x851b },
+ { "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", 0x851c },
{ "GL_PREFER_DOUBLEBUFFER_HINT_PGI", 107000 },
{ "GL_STRICT_DEPTHFUNC_HINT_PGI", 107030 },
{ "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9},
/* GL_EXT_clip_volume_hint */
- { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}
-
+ { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0},
+
+ /* GL_EXT_texture_env_combine */
+ { "GL_COMBINE_EXT", 0x8570 },
+ { "GL_COMBINE_RGB_EXT", 0x8571 },
+ { "GL_COMBINE_ALPHA_EXT", 0x8572 },
+ { "GL_SOURCE0_RGB_EXT", 0x8580 },
+ { "GL_SOURCE1_RGB_EXT", 0x8581 },
+ { "GL_SOURCE2_RGB_EXT", 0x8582 },
+ { "GL_SOURCE0_ALPHA_EXT", 0x8588 },
+ { "GL_SOURCE1_ALPHA_EXT", 0x8589 },
+ { "GL_SOURCE2_ALPHA_EXT", 0x858A },
+ { "GL_OPERAND0_RGB_EXT", 0x8590 },
+ { "GL_OPERAND1_RGB_EXT", 0x8591 },
+ { "GL_OPERAND2_RGB_EXT", 0x8592 },
+ { "GL_OPERAND0_ALPHA_EXT", 0x8598 },
+ { "GL_OPERAND1_ALPHA_EXT", 0x8599 },
+ { "GL_OPERAND2_ALPHA_EXT", 0x859A },
+ { "GL_RGB_SCALE_EXT", 0x8573 },
+ { "GL_ADD_SIGNED_EXT", 0x8574 },
+ { "GL_INTERPOLATE_EXT", 0x8575 },
+ { "GL_CONSTANT_EXT", 0x8576 },
+ { "GL_PRIMARY_COLOR_EXT", 0x8577 },
+ { "GL_PREVIOUS_EXT", 0x8578 },
+
+ /* GL_ARB_texture_env_combine */
+ { "GL_SUBTRACT_ARB", 0x84E7 },
+
+ /* GL_EXT_texture_env_dot3 */
+ { "GL_DOT3_RGB_EXT", 0x8740 },
+ { "GL_DOT3_RGBA_EXT", 0x8741 },
+
+ /* GL_ARB_texture_env_dot3 */
+ { "GL_DOT3_RGB_ARB", 0x86ae },
+ { "GL_DOT3_RGBA_ARB", 0x86af },
+
+ /* GL_ARB_texture_border_clamp */
+ { "GL_CLAMP_TO_BORDER_ARB", 0x812D },
+
+ /* GL_ATI_texture_env_combine3 */
+ { "GL_MODULATE_ADD_ATI", 0x8744 },
+ { "GL_MODULATE_SIGNED_ADD_ATI", 0x8745 },
+ { "GL_MODULATE_SUBTRACT_ATI", 0x8746 },
+
+ /* GL_ARB_texture_compression */
+ { "GL_COMPRESSED_ALPHA_ARB", 0x84E9 },
+ { "GL_COMPRESSED_LUMINANCE_ARB", 0x84EA },
+ { "GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB },
+ { "GL_COMPRESSED_INTENSITY_ARB", 0x84EC },
+ { "GL_COMPRESSED_RGB_ARB", 0x84ED },
+ { "GL_COMPRESSED_RGBA_ARB", 0x84EE },
+ { "GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB", 0x86A0 },
+ { "GL_TEXTURE_COMPRESSED_ARB", 0x86A1 },
+ { "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A2 },
+ { "GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3 },
+
+ /* GL_EXT_texture_compression_s3tc */
+ { "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2 },
+ { "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3 },
+
+ /* GL_S3_s3tc */
+ { "GL_RGB_S3TC", 0x83A0 },
+ { "GL_RGB4_S3TC", 0x83A1 },
+ { "GL_RGBA_S3TC", 0x83A2 },
+ { "GL_RGBA4_S3TC", 0x83A3 },
+
+ /* GL_3DFX_texture_compression_FXT1 */
+ { "GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0 },
+ { "GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1 },
};
#define Elements(x) sizeof(x)/sizeof(*x)
static enum_elt **index1 = 0;
static int sorted = 0;
-static int compar_name( const enum_elt *a, const enum_elt *b )
+static int compar_name( const enum_elt *a, const enum_elt *b )
{
- return strcmp(a->c, b->c);
+ return _mesa_strcmp(a->c, b->c);
}
/* note the extra level of indirection
*/
-static int compar_nr( const enum_elt **a, const enum_elt **b )
+static int compar_nr( const enum_elt **a, const enum_elt **b )
{
return (*a)->n - (*b)->n;
}
static void sort_enums( void )
{
- int i;
+ GLuint i;
index1 = (enum_elt **)MALLOC( Elements(all_enums) * sizeof(enum_elt *) );
sorted = 1;
- qsort( all_enums, Elements(all_enums), sizeof(*all_enums),
+ if (!index1)
+ return; /* what else can we do? */
+
+ qsort( all_enums, Elements(all_enums), sizeof(*all_enums),
(cfunc) compar_name );
- for (i = 0 ; i < Elements(all_enums) ; i++)
+ for (i = 0 ; i < Elements(all_enums) ; i++)
index1[i] = &all_enums[i];
qsort( index1, Elements(all_enums), sizeof(*index1), (cfunc) compar_nr );
-int gl_lookup_enum_by_name( const char *symbol )
+int _mesa_lookup_enum_by_name( const char *symbol )
{
enum_elt tmp;
enum_elt *e;
- if (!sorted)
+ if (!sorted)
sort_enums();
- if (!symbol)
+ if (!symbol)
return 0;
tmp.c = symbol;
- e = (enum_elt *)bsearch( &tmp, all_enums, Elements(all_enums),
+ e = (enum_elt *)bsearch( &tmp, all_enums, Elements(all_enums),
sizeof(*all_enums), (cfunc) compar_name );
return e ? e->n : -1;
}
-const char *gl_lookup_enum_by_nr( int nr )
+static char token_tmp[20];
+
+const char *_mesa_lookup_enum_by_nr( int nr )
{
enum_elt tmp, *e, **f;
- if (!sorted)
+ if (!sorted)
sort_enums();
tmp.n = nr;
e = &tmp;
- f = (enum_elt **)bsearch( &e, index1, Elements(all_enums),
+ f = (enum_elt **)bsearch( &e, index1, Elements(all_enums),
sizeof(*index1), (cfunc) compar_nr );
- return f ? (*f)->c : "(unknown)";
-}
-
-
-#if 0
-int main()
-{
- int i;
- static const char *test[] = {
- "GL_POLYGON",
- "GL_TRUE",
- "GL_BANANA",
- "GL_REFLECTION_MAP_NV",
- };
-
- for (i = 0 ; i < Elements(test) ; i++) {
- int d = gl_lookup_enum_by_name( test[i] );
- printf("%s --> %d --> %s\n", test[i], d, gl_lookup_enum_by_nr( d ));
- }
+ if (f) {
+ return (*f)->c;
+ }
+ else {
+ /* this isn't re-entrant safe, no big deal here */
+ _mesa_sprintf(token_tmp, "0x%x", nr);
+ return token_tmp;
+ }
}
-#endif