/*
** Copyright 1991-1993, Silicon Graphics, Inc.
** All Rights Reserved.
** 
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of Silicon Graphics, Inc.
** 
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
*/


/*
 * AUTOMATICALLY UPDATED OR GENERATED BY SGI: DO NOT EDIT
 * IF YOU MUST MODIFY THIS FILE, PLEASE CONTACT ptar@sgi.com 415-390-1483
 */

/* Client Side Procedure Table */

#include "precomp.h"
#pragma hdrstop

#include "glclt.h"
#ifdef GL_METAFILE
#include "metasup.h"
#endif

// There are now 2 tables!
// One table is used for RGBA mode and the other is for CI mode.

GLCLTPROCTABLE glCltRGBAProcTable = {

/* Number of function entries in the table */

     sizeof(GLDISPATCHTABLE) / sizeof(PROC),

/* gl Entry points */
  {
     glcltNewList                ,
     glcltEndList                ,
     glcltCallList               ,
     glcltCallLists              ,
     glcltDeleteLists            ,
     glcltGenLists               ,
     glcltListBase               ,
     glcltBegin                  ,
     glcltBitmap                 ,
     glcltColor3b_InRGBA         ,
     glcltColor3bv_InRGBA        ,
     glcltColor3d_InRGBA         ,
     glcltColor3dv_InRGBA        ,
     glcltColor3f_InRGBA         ,
     glcltColor3fv_InRGBA        ,
     glcltColor3i_InRGBA         ,
     glcltColor3iv_InRGBA        ,
     glcltColor3s_InRGBA         ,
     glcltColor3sv_InRGBA        ,
     glcltColor3ub_InRGBA        ,
     glcltColor3ubv_InRGBA       ,
     glcltColor3ui_InRGBA        ,
     glcltColor3uiv_InRGBA       ,
     glcltColor3us_InRGBA        ,
     glcltColor3usv_InRGBA       ,
     glcltColor4b_InRGBA         ,
     glcltColor4bv_InRGBA        ,
     glcltColor4d_InRGBA         ,
     glcltColor4dv_InRGBA        ,
     glcltColor4f_InRGBA         ,
     glcltColor4fv_InRGBA        ,
     glcltColor4i_InRGBA         ,
     glcltColor4iv_InRGBA        ,
     glcltColor4s_InRGBA         ,
     glcltColor4sv_InRGBA        ,
     glcltColor4ub_InRGBA        ,
     glcltColor4ubv_InRGBA       ,
     glcltColor4ui_InRGBA        ,
     glcltColor4uiv_InRGBA       ,
     glcltColor4us_InRGBA        ,
     glcltColor4usv_InRGBA       ,
     glcltEdgeFlag               ,
     glcltEdgeFlagv              ,
     glcltEnd                    ,
     glcltIndexd_InRGBA          ,
     glcltIndexdv_InRGBA         ,
     glcltIndexf_InRGBA          ,
     glcltIndexfv_InRGBA         ,
     glcltIndexi_InRGBA          ,
     glcltIndexiv_InRGBA         ,
     glcltIndexs_InRGBA          ,
     glcltIndexsv_InRGBA         ,
     glcltNormal3b               ,
     glcltNormal3bv              ,
     glcltNormal3d               ,
     glcltNormal3dv              ,
     glcltNormal3f               ,
     glcltNormal3fv              ,
     glcltNormal3i               ,
     glcltNormal3iv              ,
     glcltNormal3s               ,
     glcltNormal3sv              ,
     glcltRasterPos2d            ,
     glcltRasterPos2dv           ,
     glcltRasterPos2f            ,
     glcltRasterPos2fv           ,
     glcltRasterPos2i            ,
     glcltRasterPos2iv           ,
     glcltRasterPos2s            ,
     glcltRasterPos2sv           ,
     glcltRasterPos3d            ,
     glcltRasterPos3dv           ,
     glcltRasterPos3f            ,
     glcltRasterPos3fv           ,
     glcltRasterPos3i            ,
     glcltRasterPos3iv           ,
     glcltRasterPos3s            ,
     glcltRasterPos3sv           ,
     glcltRasterPos4d            ,
     glcltRasterPos4dv           ,
     glcltRasterPos4f            ,
     glcltRasterPos4fv           ,
     glcltRasterPos4i            ,
     glcltRasterPos4iv           ,
     glcltRasterPos4s            ,
     glcltRasterPos4sv           ,
     glcltRectd                  ,
     glcltRectdv                 ,
     glcltRectf                  ,
     glcltRectfv                 ,
     glcltRecti                  ,
     glcltRectiv                 ,
     glcltRects                  ,
     glcltRectsv                 ,
     glcltTexCoord1d             ,
     glcltTexCoord1dv            ,
     glcltTexCoord1f             ,
     glcltTexCoord1fv            ,
     glcltTexCoord1i             ,
     glcltTexCoord1iv            ,
     glcltTexCoord1s             ,
     glcltTexCoord1sv            ,
     glcltTexCoord2d             ,
     glcltTexCoord2dv            ,
     glcltTexCoord2f             ,
     glcltTexCoord2fv            ,
     glcltTexCoord2i             ,
     glcltTexCoord2iv            ,
     glcltTexCoord2s             ,
     glcltTexCoord2sv            ,
     glcltTexCoord3d             ,
     glcltTexCoord3dv            ,
     glcltTexCoord3f             ,
     glcltTexCoord3fv            ,
     glcltTexCoord3i             ,
     glcltTexCoord3iv            ,
     glcltTexCoord3s             ,
     glcltTexCoord3sv            ,
     glcltTexCoord4d             ,
     glcltTexCoord4dv            ,
     glcltTexCoord4f             ,
     glcltTexCoord4fv            ,
     glcltTexCoord4i             ,
     glcltTexCoord4iv            ,
     glcltTexCoord4s             ,
     glcltTexCoord4sv            ,
     glcltVertex2d               ,
     glcltVertex2dv              ,
     glcltVertex2f               ,
     glcltVertex2fv              ,
     glcltVertex2i               ,
     glcltVertex2iv              ,
     glcltVertex2s               ,
     glcltVertex2sv              ,
     glcltVertex3d               ,
     glcltVertex3dv              ,
     glcltVertex3f               ,
     glcltVertex3fv              ,
     glcltVertex3i               ,
     glcltVertex3iv              ,
     glcltVertex3s               ,
     glcltVertex3sv              ,
     glcltVertex4d               ,
     glcltVertex4dv              ,
     glcltVertex4f               ,
     glcltVertex4fv              ,
     glcltVertex4i               ,
     glcltVertex4iv              ,
     glcltVertex4s               ,
     glcltVertex4sv              ,
     glcltClipPlane              ,
     glcltColorMaterial          ,
     glcltCullFace               ,
     glcltFogf                   ,
     glcltFogfv                  ,
     glcltFogi                   ,
     glcltFogiv                  ,
     glcltFrontFace              ,
     glcltHint                   ,
     glcltLightf                 ,
     glcltLightfv                ,
     glcltLighti                 ,
     glcltLightiv                ,
     glcltLightModelf            ,
     glcltLightModelfv           ,
     glcltLightModeli            ,
     glcltLightModeliv           ,
     glcltLineStipple            ,
     glcltLineWidth              ,
     glcltMaterialf              ,
     glcltMaterialfv             ,
     glcltMateriali              ,
     glcltMaterialiv             ,
     glcltPointSize              ,
     glcltPolygonMode            ,
     glcltPolygonStipple         ,
     glcltScissor                ,
     glcltShadeModel             ,
     glcltTexParameterf          ,
     glcltTexParameterfv         ,
     glcltTexParameteri          ,
     glcltTexParameteriv         ,
     glcltTexImage1D             ,
     glcltTexImage2D             ,
     glcltTexEnvf                ,
     glcltTexEnvfv               ,
     glcltTexEnvi                ,
     glcltTexEnviv               ,
     glcltTexGend                ,
     glcltTexGendv               ,
     glcltTexGenf                ,
     glcltTexGenfv               ,
     glcltTexGeni                ,
     glcltTexGeniv               ,
     glcltFeedbackBuffer         ,
     glcltSelectBuffer           ,
     glcltRenderMode             ,
     glcltInitNames              ,
     glcltLoadName               ,
     glcltPassThrough            ,
     glcltPopName                ,
     glcltPushName               ,
     glcltDrawBuffer             ,
     glcltClear                  ,
     glcltClearAccum             ,
     glcltClearIndex             ,
     glcltClearColor             ,
     glcltClearStencil           ,
     glcltClearDepth             ,
     glcltStencilMask            ,
     glcltColorMask              ,
     glcltDepthMask              ,
     glcltIndexMask              ,
     glcltAccum                  ,
     glcltDisable                ,
     glcltEnable                 ,
     glcltFinish                 ,
     glcltFlush                  ,
     glcltPopAttrib              ,
     glcltPushAttrib             ,
     glcltMap1d                  ,
     glcltMap1f                  ,
     glcltMap2d                  ,
     glcltMap2f                  ,
     glcltMapGrid1d              ,
     glcltMapGrid1f              ,
     glcltMapGrid2d              ,
     glcltMapGrid2f              ,
     glcltEvalCoord1d            ,
     glcltEvalCoord1dv           ,
     glcltEvalCoord1f            ,
     glcltEvalCoord1fv           ,
     glcltEvalCoord2d            ,
     glcltEvalCoord2dv           ,
     glcltEvalCoord2f            ,
     glcltEvalCoord2fv           ,
     glcltEvalMesh1              ,
     glcltEvalPoint1             ,
     glcltEvalMesh2              ,
     glcltEvalPoint2             ,
     glcltAlphaFunc              ,
     glcltBlendFunc              ,
     glcltLogicOp                ,
     glcltStencilFunc            ,
     glcltStencilOp              ,
     glcltDepthFunc              ,
     glcltPixelZoom              ,
     glcltPixelTransferf         ,
     glcltPixelTransferi         ,
     glcltPixelStoref            ,
     glcltPixelStorei            ,
     glcltPixelMapfv             ,
     glcltPixelMapuiv            ,
     glcltPixelMapusv            ,
     glcltReadBuffer             ,
     glcltCopyPixels             ,
     glcltReadPixels             ,
     glcltDrawPixels             ,
     glcltGetBooleanv            ,
     glcltGetClipPlane           ,
     glcltGetDoublev             ,
     glcltGetError               ,
     glcltGetFloatv              ,
     glcltGetIntegerv            ,
     glcltGetLightfv             ,
     glcltGetLightiv             ,
     glcltGetMapdv               ,
     glcltGetMapfv               ,
     glcltGetMapiv               ,
     glcltGetMaterialfv          ,
     glcltGetMaterialiv          ,
     glcltGetPixelMapfv          ,
     glcltGetPixelMapuiv         ,
     glcltGetPixelMapusv         ,
     glcltGetPolygonStipple      ,
     glcltGetString              ,
     glcltGetTexEnvfv            ,
     glcltGetTexEnviv            ,
     glcltGetTexGendv            ,
     glcltGetTexGenfv            ,
     glcltGetTexGeniv            ,
     glcltGetTexImage            ,
     glcltGetTexParameterfv      ,
     glcltGetTexParameteriv      ,
     glcltGetTexLevelParameterfv ,
     glcltGetTexLevelParameteriv ,
     glcltIsEnabled              ,
     glcltIsList                 ,
     glcltDepthRange             ,
     glcltFrustum                ,
     glcltLoadIdentity           ,
     glcltLoadMatrixf            ,
     glcltLoadMatrixd            ,
     glcltMatrixMode             ,
     glcltMultMatrixf            ,
     glcltMultMatrixd            ,
     glcltOrtho                  ,
     glcltPopMatrix              ,
     glcltPushMatrix             ,
     glcltRotated                ,
     glcltRotatef                ,
     glcltScaled                 ,
     glcltScalef                 ,
     glcltTranslated             ,
     glcltTranslatef             ,
     glcltViewport               ,
     glcltArrayElement           ,
     glcltBindTexture            ,
     glcltColorPointer           ,
     glcltDisableClientState     ,
     glcltDrawArrays             ,
     glcltDrawElements           ,
     glcltEdgeFlagPointer        ,
     glcltEnableClientState      ,
     glcltIndexPointer           ,
     glcltIndexub_InRGBA         ,
     glcltIndexubv_InRGBA        ,
     glcltInterleavedArrays      ,
     glcltNormalPointer          ,
     glcltPolygonOffset          ,
     glcltTexCoordPointer        ,
     glcltVertexPointer          ,
     glcltAreTexturesResident    ,
     glcltCopyTexImage1D         ,
     glcltCopyTexImage2D         ,
     glcltCopyTexSubImage1D      ,
     glcltCopyTexSubImage2D      ,
     glcltDeleteTextures         ,
     glcltGenTextures            ,
     glcltGetPointerv            ,
     glcltIsTexture              ,
     glcltPrioritizeTextures     ,
     glcltTexSubImage1D          ,
     glcltTexSubImage2D          ,
     glcltPopClientAttrib        ,
     glcltPushClientAttrib       ,
  }

};

GLCLTPROCTABLE glCltCIProcTable = {

/* Number of function entries in the table */

     sizeof(GLDISPATCHTABLE) / sizeof(PROC),

/* gl Entry points */
  {
     glcltNewList                ,
     glcltEndList                ,
     glcltCallList               ,
     glcltCallLists              ,
     glcltDeleteLists            ,
     glcltGenLists               ,
     glcltListBase               ,
     glcltBegin                  ,
     glcltBitmap                 ,
     glcltColor3b_InCI           ,
     glcltColor3bv_InCI          ,
     glcltColor3d_InCI           ,
     glcltColor3dv_InCI          ,
     glcltColor3f_InCI           ,
     glcltColor3fv_InCI          ,
     glcltColor3i_InCI           ,
     glcltColor3iv_InCI          ,
     glcltColor3s_InCI           ,
     glcltColor3sv_InCI          ,
     glcltColor3ub_InCI          ,
     glcltColor3ubv_InCI         ,
     glcltColor3ui_InCI          ,
     glcltColor3uiv_InCI         ,
     glcltColor3us_InCI          ,
     glcltColor3usv_InCI         ,
     glcltColor4b_InCI           ,
     glcltColor4bv_InCI          ,
     glcltColor4d_InCI           ,
     glcltColor4dv_InCI          ,
     glcltColor4f_InCI           ,
     glcltColor4fv_InCI          ,
     glcltColor4i_InCI           ,
     glcltColor4iv_InCI          ,
     glcltColor4s_InCI           ,
     glcltColor4sv_InCI          ,
     glcltColor4ub_InCI          ,
     glcltColor4ubv_InCI         ,
     glcltColor4ui_InCI          ,
     glcltColor4uiv_InCI         ,
     glcltColor4us_InCI          ,
     glcltColor4usv_InCI         ,
     glcltEdgeFlag               ,
     glcltEdgeFlagv              ,
     glcltEnd                    ,
     glcltIndexd_InCI            ,
     glcltIndexdv_InCI           ,
     glcltIndexf_InCI            ,
     glcltIndexfv_InCI           ,
     glcltIndexi_InCI            ,
     glcltIndexiv_InCI           ,
     glcltIndexs_InCI            ,
     glcltIndexsv_InCI           ,
     glcltNormal3b               ,
     glcltNormal3bv              ,
     glcltNormal3d               ,
     glcltNormal3dv              ,
     glcltNormal3f               ,
     glcltNormal3fv              ,
     glcltNormal3i               ,
     glcltNormal3iv              ,
     glcltNormal3s               ,
     glcltNormal3sv              ,
     glcltRasterPos2d            ,
     glcltRasterPos2dv           ,
     glcltRasterPos2f            ,
     glcltRasterPos2fv           ,
     glcltRasterPos2i            ,
     glcltRasterPos2iv           ,
     glcltRasterPos2s            ,
     glcltRasterPos2sv           ,
     glcltRasterPos3d            ,
     glcltRasterPos3dv           ,
     glcltRasterPos3f            ,
     glcltRasterPos3fv           ,
     glcltRasterPos3i            ,
     glcltRasterPos3iv           ,
     glcltRasterPos3s            ,
     glcltRasterPos3sv           ,
     glcltRasterPos4d            ,
     glcltRasterPos4dv           ,
     glcltRasterPos4f            ,
     glcltRasterPos4fv           ,
     glcltRasterPos4i            ,
     glcltRasterPos4iv           ,
     glcltRasterPos4s            ,
     glcltRasterPos4sv           ,
     glcltRectd                  ,
     glcltRectdv                 ,
     glcltRectf                  ,
     glcltRectfv                 ,
     glcltRecti                  ,
     glcltRectiv                 ,
     glcltRects                  ,
     glcltRectsv                 ,
     glcltTexCoord1d             ,
     glcltTexCoord1dv            ,
     glcltTexCoord1f             ,
     glcltTexCoord1fv            ,
     glcltTexCoord1i             ,
     glcltTexCoord1iv            ,
     glcltTexCoord1s             ,
     glcltTexCoord1sv            ,
     glcltTexCoord2d             ,
     glcltTexCoord2dv            ,
     glcltTexCoord2f             ,
     glcltTexCoord2fv            ,
     glcltTexCoord2i             ,
     glcltTexCoord2iv            ,
     glcltTexCoord2s             ,
     glcltTexCoord2sv            ,
     glcltTexCoord3d             ,
     glcltTexCoord3dv            ,
     glcltTexCoord3f             ,
     glcltTexCoord3fv            ,
     glcltTexCoord3i             ,
     glcltTexCoord3iv            ,
     glcltTexCoord3s             ,
     glcltTexCoord3sv            ,
     glcltTexCoord4d             ,
     glcltTexCoord4dv            ,
     glcltTexCoord4f             ,
     glcltTexCoord4fv            ,
     glcltTexCoord4i             ,
     glcltTexCoord4iv            ,
     glcltTexCoord4s             ,
     glcltTexCoord4sv            ,
     glcltVertex2d               ,
     glcltVertex2dv              ,
     glcltVertex2f               ,
     glcltVertex2fv              ,
     glcltVertex2i               ,
     glcltVertex2iv              ,
     glcltVertex2s               ,
     glcltVertex2sv              ,
     glcltVertex3d               ,
     glcltVertex3dv              ,
     glcltVertex3f               ,
     glcltVertex3fv              ,
     glcltVertex3i               ,
     glcltVertex3iv              ,
     glcltVertex3s               ,
     glcltVertex3sv              ,
     glcltVertex4d               ,
     glcltVertex4dv              ,
     glcltVertex4f               ,
     glcltVertex4fv              ,
     glcltVertex4i               ,
     glcltVertex4iv              ,
     glcltVertex4s               ,
     glcltVertex4sv              ,
     glcltClipPlane              ,
     glcltColorMaterial          ,
     glcltCullFace               ,
     glcltFogf                   ,
     glcltFogfv                  ,
     glcltFogi                   ,
     glcltFogiv                  ,
     glcltFrontFace              ,
     glcltHint                   ,
     glcltLightf                 ,
     glcltLightfv                ,
     glcltLighti                 ,
     glcltLightiv                ,
     glcltLightModelf            ,
     glcltLightModelfv           ,
     glcltLightModeli            ,
     glcltLightModeliv           ,
     glcltLineStipple            ,
     glcltLineWidth              ,
     glcltMaterialf              ,
     glcltMaterialfv             ,
     glcltMateriali              ,
     glcltMaterialiv             ,
     glcltPointSize              ,
     glcltPolygonMode            ,
     glcltPolygonStipple         ,
     glcltScissor                ,
     glcltShadeModel             ,
     glcltTexParameterf          ,
     glcltTexParameterfv         ,
     glcltTexParameteri          ,
     glcltTexParameteriv         ,
     glcltTexImage1D             ,
     glcltTexImage2D             ,
     glcltTexEnvf                ,
     glcltTexEnvfv               ,
     glcltTexEnvi                ,
     glcltTexEnviv               ,
     glcltTexGend                ,
     glcltTexGendv               ,
     glcltTexGenf                ,
     glcltTexGenfv               ,
     glcltTexGeni                ,
     glcltTexGeniv               ,
     glcltFeedbackBuffer         ,
     glcltSelectBuffer           ,
     glcltRenderMode             ,
     glcltInitNames              ,
     glcltLoadName               ,
     glcltPassThrough            ,
     glcltPopName                ,
     glcltPushName               ,
     glcltDrawBuffer             ,
     glcltClear                  ,
     glcltClearAccum             ,
     glcltClearIndex             ,
     glcltClearColor             ,
     glcltClearStencil           ,
     glcltClearDepth             ,
     glcltStencilMask            ,
     glcltColorMask              ,
     glcltDepthMask              ,
     glcltIndexMask              ,
     glcltAccum                  ,
     glcltDisable                ,
     glcltEnable                 ,
     glcltFinish                 ,
     glcltFlush                  ,
     glcltPopAttrib              ,
     glcltPushAttrib             ,
     glcltMap1d                  ,
     glcltMap1f                  ,
     glcltMap2d                  ,
     glcltMap2f                  ,
     glcltMapGrid1d              ,
     glcltMapGrid1f              ,
     glcltMapGrid2d              ,
     glcltMapGrid2f              ,
     glcltEvalCoord1d            ,
     glcltEvalCoord1dv           ,
     glcltEvalCoord1f            ,
     glcltEvalCoord1fv           ,
     glcltEvalCoord2d            ,
     glcltEvalCoord2dv           ,
     glcltEvalCoord2f            ,
     glcltEvalCoord2fv           ,
     glcltEvalMesh1              ,
     glcltEvalPoint1             ,
     glcltEvalMesh2              ,
     glcltEvalPoint2             ,
     glcltAlphaFunc              ,
     glcltBlendFunc              ,
     glcltLogicOp                ,
     glcltStencilFunc            ,
     glcltStencilOp              ,
     glcltDepthFunc              ,
     glcltPixelZoom              ,
     glcltPixelTransferf         ,
     glcltPixelTransferi         ,
     glcltPixelStoref            ,
     glcltPixelStorei            ,
     glcltPixelMapfv             ,
     glcltPixelMapuiv            ,
     glcltPixelMapusv            ,
     glcltReadBuffer             ,
     glcltCopyPixels             ,
     glcltReadPixels             ,
     glcltDrawPixels             ,
     glcltGetBooleanv            ,
     glcltGetClipPlane           ,
     glcltGetDoublev             ,
     glcltGetError               ,
     glcltGetFloatv              ,
     glcltGetIntegerv            ,
     glcltGetLightfv             ,
     glcltGetLightiv             ,
     glcltGetMapdv               ,
     glcltGetMapfv               ,
     glcltGetMapiv               ,
     glcltGetMaterialfv          ,
     glcltGetMaterialiv          ,
     glcltGetPixelMapfv          ,
     glcltGetPixelMapuiv         ,
     glcltGetPixelMapusv         ,
     glcltGetPolygonStipple      ,
     glcltGetString              ,
     glcltGetTexEnvfv            ,
     glcltGetTexEnviv            ,
     glcltGetTexGendv            ,
     glcltGetTexGenfv            ,
     glcltGetTexGeniv            ,
     glcltGetTexImage            ,
     glcltGetTexParameterfv      ,
     glcltGetTexParameteriv      ,
     glcltGetTexLevelParameterfv ,
     glcltGetTexLevelParameteriv ,
     glcltIsEnabled              ,
     glcltIsList                 ,
     glcltDepthRange             ,
     glcltFrustum                ,
     glcltLoadIdentity           ,
     glcltLoadMatrixf            ,
     glcltLoadMatrixd            ,
     glcltMatrixMode             ,
     glcltMultMatrixf            ,
     glcltMultMatrixd            ,
     glcltOrtho                  ,
     glcltPopMatrix              ,
     glcltPushMatrix             ,
     glcltRotated                ,
     glcltRotatef                ,
     glcltScaled                 ,
     glcltScalef                 ,
     glcltTranslated             ,
     glcltTranslatef             ,
     glcltViewport               ,
     glcltArrayElement           ,
     glcltBindTexture            ,
     glcltColorPointer           ,
     glcltDisableClientState     ,
     glcltDrawArrays             ,
     glcltDrawElements           ,
     glcltEdgeFlagPointer        ,
     glcltEnableClientState      ,
     glcltIndexPointer           ,
     glcltIndexub_InCI           ,
     glcltIndexubv_InCI          ,
     glcltInterleavedArrays      ,
     glcltNormalPointer          ,
     glcltPolygonOffset          ,
     glcltTexCoordPointer        ,
     glcltVertexPointer          ,
     glcltAreTexturesResident    ,
     glcltCopyTexImage1D         ,
     glcltCopyTexImage2D         ,
     glcltCopyTexSubImage1D      ,
     glcltCopyTexSubImage2D      ,
     glcltDeleteTextures         ,
     glcltGenTextures            ,
     glcltGetPointerv            ,
     glcltIsTexture              ,
     glcltPrioritizeTextures     ,
     glcltTexSubImage1D          ,
     glcltTexSubImage2D          ,
     glcltPopClientAttrib        ,
     glcltPushClientAttrib       ,
  }

};

GLEXTPROCTABLE glExtProcTable =
{
    /* Number of function entries in the table */
    sizeof(GLEXTDISPATCHTABLE) / sizeof(PROC),

    /* gl EXT Entry points */
    {
        glcltDrawRangeElementsWIN,
        glcltColorTableEXT,
        glcltColorSubTableEXT,
        glcltGetColorTableEXT,
        glcltGetColorTableParameterivEXT,
        glcltGetColorTableParameterfvEXT,
#ifdef GL_WIN_multiple_textures
        glcltCurrentTextureIndexWIN,
        glcltMultiTexCoord1dWIN,
        glcltMultiTexCoord1dvWIN,
        glcltMultiTexCoord1fWIN,
        glcltMultiTexCoord1fvWIN,
        glcltMultiTexCoord1iWIN,
        glcltMultiTexCoord1ivWIN,
        glcltMultiTexCoord1sWIN,
        glcltMultiTexCoord1svWIN,
        glcltMultiTexCoord2dWIN,
        glcltMultiTexCoord2dvWIN,
        glcltMultiTexCoord2fWIN,
        glcltMultiTexCoord2fvWIN,
        glcltMultiTexCoord2iWIN,
        glcltMultiTexCoord2ivWIN,
        glcltMultiTexCoord2sWIN,
        glcltMultiTexCoord2svWIN,
        glcltMultiTexCoord3dWIN,
        glcltMultiTexCoord3dvWIN,
        glcltMultiTexCoord3fWIN,
        glcltMultiTexCoord3fvWIN,
        glcltMultiTexCoord3iWIN,
        glcltMultiTexCoord3ivWIN,
        glcltMultiTexCoord3sWIN,
        glcltMultiTexCoord3svWIN,
        glcltMultiTexCoord4dWIN,
        glcltMultiTexCoord4dvWIN,
        glcltMultiTexCoord4fWIN,
        glcltMultiTexCoord4fvWIN,
        glcltMultiTexCoord4iWIN,
        glcltMultiTexCoord4ivWIN,
        glcltMultiTexCoord4sWIN,
        glcltMultiTexCoord4svWIN,
        glcltBindNthTextureWIN,
        glcltNthTexCombineFuncWIN,
#endif // GL_WIN_multiple_textures
    }
};

/******************************Public*Routine******************************\
* vInitTebCache
*
* Within the NT TEB, there is a table where OpenGL can cache OpenGL API
* function pointers.  In this area we can cache frequently used portions
* of the dispatch table.  Functions cached in this area can save a level
* of indirection by avoiding deferencing the dispatch table pointer.
*
* History:
*  06-Nov-1995 -by- Gilman Wong [gilmanw]
* Wrote it.
\**************************************************************************/

// The following table defines the ranges of the dispatch table that should
// be cached in the TEB.  Each pair of indices defines the start and end of
// each range.

int static gaiCacheFuncs[] = {
    INDEX_glCallList    ,     INDEX_glCallLists   ,
    INDEX_glBegin       ,     INDEX_glBegin       ,
    INDEX_glColor3b     ,     INDEX_glNormal3sv   ,
    INDEX_glTexCoord1d  ,     INDEX_glVertex4sv   ,
    INDEX_glMaterialf   ,     INDEX_glMaterialiv  ,
    INDEX_glDisable     ,     INDEX_glEnable      ,
    INDEX_glPopAttrib   ,     INDEX_glPushAttrib  ,
    INDEX_glEvalCoord1d ,     INDEX_glEvalCoord2fv,
    INDEX_glEvalPoint1  ,     INDEX_glEvalPoint1  ,
    INDEX_glEvalPoint2  ,     INDEX_glEvalPoint2  ,
    INDEX_glLoadIdentity,     INDEX_glMultMatrixd ,
    INDEX_glPopMatrix   ,     INDEX_glTranslatef  ,
    INDEX_glArrayElement,     INDEX_glVertexPointer,
    INDEX_glGetPointerv,      INDEX_glGetPointerv ,
    INDEX_glPopClientAttrib,  INDEX_glPushClientAttrib,
    INDEX_glDrawRangeElementsWIN,    INDEX_glColorSubTableEXT,
#ifdef GL_WIN_multiple_textures
    INDEX_glCurrentTextureIndexWIN, INDEX_glCurrentTextureIndexWIN,
    INDEX_glBindNthTextureWIN, INDEX_glNthTexCombineFuncWIN,
    INDEX_glMultiTexCoord1fWIN, INDEX_glMultiTexCoord1ivWIN,
    INDEX_glMultiTexCoord2fWIN, INDEX_glMultiTexCoord2ivWIN,
#endif // GL_WIN_multiple_textures
};

void vInitTebCache(PVOID glTable)
{
    int iRange, iCache;
    PROC *pfnCltDispatchTableFast;

    pfnCltDispatchTableFast = (PROC *)GLTEB_CLTDISPATCHTABLE_FAST();

// Copy each range of FPs, defined by the table gaiCacheFuncs, from the
// dispatch table to the TEB FP cache.

    for ( iRange = 0, iCache = 0;
          iRange < (sizeof(gaiCacheFuncs) / sizeof(int));
          iRange+=2 )
    {
        PVOID pvCache;      // ptr into FP cache within TEB
        PVOID pvDispatch;   // ptr to current range within dispatch table
        int iNum;           // number of FPs in current range to cache

        pvCache = (PVOID)&pfnCltDispatchTableFast[iCache];
        pvDispatch = (PVOID)&((PROC *)glTable)[gaiCacheFuncs[iRange]];
        iNum = gaiCacheFuncs[iRange+1] - gaiCacheFuncs[iRange] + 1;

        ASSERTOPENGL((BYTE *)pvCache >= (BYTE *)pfnCltDispatchTableFast &&
		     (BYTE *)pvCache < (BYTE *)GLTEB_CLTPOLYARRAY() &&
		     ((PROC *)pvCache)+iNum <= (PROC *)GLTEB_CLTPOLYARRAY(),
                     "Fast dispatch area overflow\n");

        memcpy(pvCache, pvDispatch, iNum * sizeof(PROC));

        iCache += iNum;
    }

    ASSERTOPENGL(iCache == sizeof(GLDISPATCHTABLE_FAST) / sizeof(PROC),
		 "fast dispatch table not initialized properly\n");
}

/******************************Public*Routine******************************\
*
* SetCltProcTable
*
* Sets the client-side dispatch table or update the metafiling
* dispatch table if capturing
*
* History:
*  Fri Jan 05 16:37:40 1996	-by-	Drew Bliss [drewb]
*   Created
*
\**************************************************************************/

void SetCltProcTable(GLCLTPROCTABLE *pgcpt, GLEXTPROCTABLE *pgept,
                     BOOL fForce)
{
#ifdef GL_METAFILE
    PLRC plrc;

    plrc = GLTEB_CLTCURRENTRC();
    if (!fForce && plrc != NULL && plrc->fCapturing)
    {
        MetaSetCltProcTable(pgcpt, pgept);
    }
    else
#endif
    {
        // Copy base proc table
        memcpy((PVOID) CURRENT_GLTEBINFO()->glCltDispatchTable,
               &pgcpt->glDispatchTable,
               pgcpt->cEntries * sizeof(PROC));
        // If the given proc table doesn't have a complete set of entries,
        // pad it out with noops
        if (pgcpt->cEntries < OPENGL_VERSION_110_ENTRIES)
        {
            memcpy(((PROC *)CURRENT_GLTEBINFO()->glCltDispatchTable)+
                   pgcpt->cEntries,
                   ((PROC *)&glNullCltProcTable.glDispatchTable)+
                   pgcpt->cEntries,
                   (OPENGL_VERSION_110_ENTRIES-pgcpt->cEntries)*sizeof(PROC));
        }

        // Copy extension proc table
        // This is a purely internal table so it should always have the
        // right number of entries
        ASSERTOPENGL(pgept->cEntries == glNullExtProcTable.cEntries,
                     "Bad extension proc table\n");
        memcpy(CURRENT_GLTEBINFO()->glCltDispatchTable+
               GL_EXT_PROC_TABLE_OFFSET,
               &pgept->glDispatchTable,
               pgept->cEntries * sizeof(PROC));
        vInitTebCache(CURRENT_GLTEBINFO()->glCltDispatchTable);
    }
}

/******************************Public*Routine******************************\
*
* GetCltProcTable
*
* Gets the client-side dispatch table or the metafile capture
* exec table depending on the metafile capture state
*
* History:
*  Fri Jan 05 19:11:26 1996	-by-	Drew Bliss [drewb]
*   Created
*
\**************************************************************************/

void GetCltProcTable(GLCLTPROCTABLE *pgcpt, GLEXTPROCTABLE *pgept,
                     BOOL fForce)
{
#ifdef GL_METAFILE
    PLRC plrc;

    plrc = GLTEB_CLTCURRENTRC();
    if (!fForce && plrc != NULL && plrc->fCapturing)
    {
        MetaGetCltProcTable(pgcpt, pgept);
    }
    else
#endif
    {
	memcpy(&pgcpt->glDispatchTable,
	       (PVOID) CURRENT_GLTEBINFO()->glCltDispatchTable,
               pgcpt->cEntries * sizeof(PROC));
	memcpy(&pgept->glDispatchTable,
               CURRENT_GLTEBINFO()->glCltDispatchTable+GL_EXT_PROC_TABLE_OFFSET,
               pgept->cEntries * sizeof(PROC));
    }
}
