Home | History | Annotate | Line # | Download | only in libutil
      1 /*
      2  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
      3  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a
      6  * copy of this software and associated documentation files (the "Software"),
      7  * to deal in the Software without restriction, including without limitation
      8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      9  * and/or sell copies of the Software, and to permit persons to whom the
     10  * Software is furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice including the dates of first publication and
     13  * either this permission notice or a reference to
     14  * http://oss.sgi.com/projects/FreeB/
     15  * shall be included in all copies or substantial portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     20  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     21  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
     22  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     23  * SOFTWARE.
     24  *
     25  * Except as contained in this notice, the name of Silicon Graphics, Inc.
     26  * shall not be used in advertising or otherwise to promote the sale, use or
     27  * other dealings in this Software without prior written authorization from
     28  * Silicon Graphics, Inc.
     29  */
     30 
     31 #include "gluos.h"
     32 #include "gluint.h"
     33 #include <stddef.h>
     34 #include <GL/glu.h>
     35 
     36 
     37 struct token_string
     38 {
     39    GLuint Token;
     40    const char *String;
     41 };
     42 
     43 static const struct token_string Errors[] = {
     44    { GL_NO_ERROR, "no error" },
     45    { GL_INVALID_ENUM, "invalid enumerant" },
     46    { GL_INVALID_VALUE, "invalid value" },
     47    { GL_INVALID_OPERATION, "invalid operation" },
     48    { GL_STACK_OVERFLOW, "stack overflow" },
     49    { GL_STACK_UNDERFLOW, "stack underflow" },
     50    { GL_OUT_OF_MEMORY, "out of memory" },
     51 #ifdef GL_TABLE_TOO_LARGE
     52    { GL_TABLE_TOO_LARGE, "table too large" },
     53 #endif
     54 #ifdef GL_INVALID_FRAMEBUFFER_OPERATION_EXT
     55    { GL_INVALID_FRAMEBUFFER_OPERATION_EXT, "invalid framebuffer operation" },
     56 #endif
     57    /* GLU */
     58    { GLU_INVALID_ENUM, "invalid enumerant" },
     59    { GLU_INVALID_VALUE, "invalid value" },
     60    { GLU_OUT_OF_MEMORY, "out of memory" },
     61    { GLU_INCOMPATIBLE_GL_VERSION, "incompatible gl version" },
     62    { GLU_INVALID_OPERATION, "invalid operation" },
     63    { ~0, NULL } /* end of list indicator */
     64 };
     65 
     66 
     67 
     68 const GLubyte* GLAPIENTRY
     69 gluErrorString(GLenum errorCode)
     70 {
     71     int i;
     72     for (i = 0; Errors[i].String; i++) {
     73         if (Errors[i].Token == errorCode)
     74             return (const GLubyte *) Errors[i].String;
     75     }
     76     if ((errorCode >= GLU_NURBS_ERROR1) && (errorCode <= GLU_NURBS_ERROR37)) {
     77 	return (const GLubyte *) __gluNURBSErrorString(errorCode - (GLU_NURBS_ERROR1 - 1));
     78     }
     79     if ((errorCode >= GLU_TESS_ERROR1) && (errorCode <= GLU_TESS_ERROR6)) {
     80 	return (const GLubyte *) __gluTessErrorString(errorCode - (GLU_TESS_ERROR1 - 1));
     81     }
     82     return (const GLubyte *) 0;
     83 }
     84 
     85