home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 6
/
AACD06.ISO
/
AACD
/
System
/
Mesa-3.1
/
src
/
pointers.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-01-07
|
9KB
|
291 lines
/* $Id: pointers.c,v 1.6 1999/11/08 07:36:44 brianp Exp $ */
/*
* Mesa 3-D graphics library
* Version: 3.1
*
* Copyright (C) 1999 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.
*/
#ifdef PC_HEADER
#include "all.h"
#else
#ifndef XFree86Server
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#else
#include "GL/xf86glx.h"
#endif
#include "accum.h"
#include "alpha.h"
#include "attrib.h"
#include "bitmap.h"
#include "blend.h"
#include "clip.h"
#include "context.h"
#include "colortab.h"
#include "copypix.h"
#include "depth.h"
#include "dlist.h"
#include "drawpix.h"
#include "enable.h"
#include "eval.h"
#include "feedback.h"
#include "fog.h"
#include "get.h"
#include "glmisc.h"
#include "extensions.h"
#include "light.h"
#include "lines.h"
#include "logic.h"
#include "macros.h"
#include "masking.h"
#include "matrix.h"
#include "pixel.h"
#include "points.h"
#include "polygon.h"
#include "pointers.h"
#include "rastpos.h"
#include "readpix.h"
#include "rect.h"
#include "scissor.h"
#include "stencil.h"
#include "teximage.h"
#include "texobj.h"
#include "texstate.h"
#include "types.h"
#include "varray.h"
#include "vbfill.h"
#include "winpos.h"
#endif
#ifdef DEBUG
/*
* For debugging
*/
static void check_pointers( struct gl_api_table *table )
{
void **entry;
int numentries = sizeof( struct gl_api_table ) / sizeof(void*);
int i;
entry = (void **) table;
for (i=0;i<numentries;i++) {
if (!entry[i]) {
printf("found uninitialized function pointer at %d\n", i );
gl_problem(NULL, "Missing pointer in pointers.c");
/*abort()*/
}
}
}
#endif
/*
* Assign all the pointers in 'table' to point to Mesa's immediate-mode
* execution functions.
*/
static void init_execution_pointers( struct gl_api_table *table )
{
table->Accum = gl_Accum;
table->AlphaFunc = gl_AlphaFunc;
table->AreTexturesResident = gl_AreTexturesResident;
table->BindTexture = gl_BindTexture;
table->Bitmap = gl_Bitmap;
table->BlendColor = gl_BlendColor;
table->BlendEquation = gl_BlendEquation;
table->BlendFunc = gl_BlendFunc;
table->BlendFuncSeparate = gl_BlendFuncSeparate;
table->CallList = gl_CallList;
table->CallLists = gl_CallLists;
table->Clear = gl_Clear;
table->ClearAccum = gl_ClearAccum;
table->ClearColor = gl_ClearColor;
table->ClearDepth = gl_ClearDepth;
table->ClearIndex = gl_ClearIndex;
table->ClearStencil = gl_ClearStencil;
table->ClipPlane = gl_ClipPlane;
table->ColorMask = gl_ColorMask;
table->ColorMaterial = gl_ColorMaterial;
table->ColorTable = gl_ColorTable;
table->ColorSubTable = gl_ColorSubTable;
table->CopyPixels = gl_CopyPixels;
table->CopyTexImage1D = gl_CopyTexImage1D;
table->CopyTexImage2D = gl_CopyTexImage2D;
table->CopyTexSubImage1D = gl_CopyTexSubImage1D;
table->CopyTexSubImage2D = gl_CopyTexSubImage2D;
table->CopyTexSubImage3D = gl_CopyTexSubImage3D;
table->CullFace = gl_CullFace;
table->DeleteLists = gl_DeleteLists;
table->DeleteTextures = gl_DeleteTextures;
table->DepthFunc = gl_DepthFunc;
table->DepthMask = gl_DepthMask;
table->DepthRange = gl_DepthRange;
table->Disable = gl_Disable;
table->DisableClientState = gl_DisableClientState;
table->DrawBuffer = gl_DrawBuffer;
table->DrawPixels = gl_DrawPixels;
table->Enable = gl_Enable;
table->Error = gl_error;
table->EnableClientState = gl_EnableClientState;
table->EndList = gl_EndList;
table->EvalMesh1 = gl_EvalMesh1;
table->EvalMesh2 = gl_EvalMesh2;
table->FeedbackBuffer = gl_FeedbackBuffer;
table->Finish = gl_Finish;
table->Flush = gl_Flush;
table->Fogfv = gl_Fogfv;
table->FrontFace = gl_FrontFace;
table->Frustum = gl_Frustum;
table->GenLists = gl_GenLists;
table->GenTextures = gl_GenTextures;
table->GetBooleanv = gl_GetBooleanv;
table->GetClipPlane = gl_GetClipPlane;
table->GetColorTable = gl_GetColorTable;
table->GetColorTableParameteriv = gl_GetColorTableParameteriv;
table->GetDoublev = gl_GetDoublev;
table->GetError = gl_GetError;
table->GetFloatv = gl_GetFloatv;
table->GetIntegerv = gl_GetIntegerv;
table->GetPointerv = gl_GetPointerv;
table->GetLightfv = gl_GetLightfv;
table->GetLightiv = gl_GetLightiv;
table->GetMapdv = gl_GetMapdv;
table->GetMapfv = gl_GetMapfv;
table->GetMapiv = gl_GetMapiv;
table->GetMaterialfv = gl_GetMaterialfv;
table->GetMaterialiv = gl_GetMaterialiv;
table->GetPixelMapfv = gl_GetPixelMapfv;
table->GetPixelMapuiv = gl_GetPixelMapuiv;
table->GetPixelMapusv = gl_GetPixelMapusv;
table->GetPolygonStipple = gl_GetPolygonStipple;
table->GetString = gl_GetString;
table->GetTexEnvfv = gl_GetTexEnvfv;
table->GetTexEnviv = gl_GetTexEnviv;
table->GetTexGendv = gl_GetTexGendv;
table->GetTexGenfv = gl_GetTexGenfv;
table->GetTexGeniv = gl_GetTexGeniv;
table->GetTexImage = gl_GetTexImage;
table->GetTexLevelParameterfv = gl_GetTexLevelParameterfv;
table->GetTexLevelParameteriv = gl_GetTexLevelParameteriv;
table->GetTexParameterfv = gl_GetTexParameterfv;
table->GetTexParameteriv = gl_GetTexParameteriv;
table->Hint = gl_Hint;
table->IndexMask = gl_IndexMask;
table->InitNames = gl_InitNames;
table->IsEnabled = gl_IsEnabled;
table->IsList = gl_IsList;
table->IsTexture = gl_IsTexture;
table->LightModelfv = gl_LightModelfv;
table->Lightfv = gl_Lightfv;
table->LineStipple = gl_LineStipple;
table->LineWidth = gl_LineWidth;
table->ListBase = gl_ListBase;
table->LoadIdentity = gl_LoadIdentity;
table->LoadMatrixf = gl_LoadMatrixf;
table->LoadName = gl_LoadName;
table->LogicOp = gl_LogicOp;
table->Map1f = gl_Map1f;
table->Map2f = gl_Map2f;
table->MapGrid1f = gl_MapGrid1f;
table->MapGrid2f = gl_MapGrid2f;
table->MatrixMode = gl_MatrixMode;
table->MultMatrixf = gl_MultMatrixf;
table->NewList = gl_NewList;
table->Ortho = gl_Ortho;
table->PassThrough = gl_PassThrough;
table->PixelMapfv = gl_PixelMapfv;
table->PixelStorei = gl_PixelStorei;
table->PixelTransferf = gl_PixelTransferf;
table->PixelZoom = gl_PixelZoom;
table->PointSize = gl_PointSize;
table->PolygonMode = gl_PolygonMode;
table->PolygonOffset = gl_PolygonOffset;
table->PolygonStipple = gl_PolygonStipple;
table->PopAttrib = gl_PopAttrib;
table->PopClientAttrib = gl_PopClientAttrib;
table->PopMatrix = gl_PopMatrix;
table->PopName = gl_PopName;
table->PrioritizeTextures = gl_PrioritizeTextures;
table->PushAttrib = gl_PushAttrib;
table->PushClientAttrib = gl_PushClientAttrib;
table->PushMatrix = gl_PushMatrix;
table->PushName = gl_PushName;
table->RasterPos4f = gl_RasterPos4f;
table->ReadBuffer = gl_ReadBuffer;
table->ReadPixels = gl_ReadPixels;
table->Rectf = gl_Rectf;
table->RenderMode = gl_RenderMode;
table->Rotatef = gl_Rotatef;
table->Scalef = gl_Scalef;
table->Scissor = gl_Scissor;
table->SelectBuffer = gl_SelectBuffer;
table->ShadeModel = gl_ShadeModel;
table->StencilFunc = gl_StencilFunc;
table->StencilMask = gl_StencilMask;
table->StencilOp = gl_StencilOp;
table->TexEnvfv = gl_TexEnvfv;
table->TexGenfv = gl_TexGenfv;
table->TexImage1D = gl_TexImage1D;
table->TexImage2D = gl_TexImage2D;
table->TexImage3D = gl_TexImage3D;
table->TexSubImage1D = gl_TexSubImage1D;
table->TexSubImage2D = gl_TexSubImage2D;
table->TexSubImage3D = gl_TexSubImage3D;
table->PointParameterfvEXT = gl_PointParameterfvEXT;
table->TexParameterfv = gl_TexParameterfv;
table->Translatef = gl_Translatef;
table->Viewport = gl_Viewport;
/* GL_MESA_window_pos extension */
table->WindowPos4fMESA = gl_WindowPos4fMESA;
/* GL_MESA_resize_buffers extension */
table->ResizeBuffersMESA = gl_ResizeBuffersMESA;
/* GL_ARB_multitexture */
table->ActiveTexture = gl_ActiveTexture;
table->ClientActiveTexture = gl_ClientActiveTexture;
}
void gl_init_api_function_pointers( GLcontext *ctx )
{
init_execution_pointers( &ctx->Exec );
gl_init_dlist_pointers( &ctx->Save );
#ifdef DEBUG
/* make sure there's no NULL pointers */
check_pointers( &ctx->Exec );
check_pointers( &ctx->Save );
#endif
}