typedef GLUTproc, return it from glutGetProcAddress()

This commit is contained in:
Brian Paul
2004-11-27 04:54:48 +00:00
parent 59fcd54f29
commit 2dd5b9edaa
2 changed files with 122 additions and 121 deletions

View File

@@ -664,7 +664,8 @@ GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type); GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
#endif #endif
#if (GLUT_API_VERSION >= 5) #if (GLUT_API_VERSION >= 5)
GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName); typedef void (*GLUTproc)();
GLUTAPI GLUTproc GLUTAPIENTRY glutGetProcAddress(const char *procName);
#endif #endif
/* GLUT font sub-API */ /* GLUT font sub-API */

View File

@@ -53,145 +53,145 @@ glutExtensionSupported(const char *extension)
struct name_address_pair { struct name_address_pair {
const char *name; const char *name;
const void *address; const GLUTproc address;
}; };
static struct name_address_pair glut_functions[] = { static struct name_address_pair glut_functions[] = {
{ "glutInit", (const void *) glutInit }, { "glutInit", (const GLUTproc) glutInit },
{ "glutInitDisplayMode", (const void *) glutInitDisplayMode }, { "glutInitDisplayMode", (const GLUTproc) glutInitDisplayMode },
{ "glutInitDisplayString", (const void *) glutInitDisplayString }, { "glutInitDisplayString", (const GLUTproc) glutInitDisplayString },
{ "glutInitWindowPosition", (const void *) glutInitWindowPosition }, { "glutInitWindowPosition", (const GLUTproc) glutInitWindowPosition },
{ "glutInitWindowSize", (const void *) glutInitWindowSize }, { "glutInitWindowSize", (const GLUTproc) glutInitWindowSize },
{ "glutMainLoop", (const void *) glutMainLoop }, { "glutMainLoop", (const GLUTproc) glutMainLoop },
{ "glutCreateWindow", (const void *) glutCreateWindow }, { "glutCreateWindow", (const GLUTproc) glutCreateWindow },
{ "glutCreateSubWindow", (const void *) glutCreateSubWindow }, { "glutCreateSubWindow", (const GLUTproc) glutCreateSubWindow },
{ "glutDestroyWindow", (const void *) glutDestroyWindow }, { "glutDestroyWindow", (const GLUTproc) glutDestroyWindow },
{ "glutPostRedisplay", (const void *) glutPostRedisplay }, { "glutPostRedisplay", (const GLUTproc) glutPostRedisplay },
{ "glutPostWindowRedisplay", (const void *) glutPostWindowRedisplay }, { "glutPostWindowRedisplay", (const GLUTproc) glutPostWindowRedisplay },
{ "glutSwapBuffers", (const void *) glutSwapBuffers }, { "glutSwapBuffers", (const GLUTproc) glutSwapBuffers },
{ "glutGetWindow", (const void *) glutGetWindow }, { "glutGetWindow", (const GLUTproc) glutGetWindow },
{ "glutSetWindow", (const void *) glutSetWindow }, { "glutSetWindow", (const GLUTproc) glutSetWindow },
{ "glutSetWindowTitle", (const void *) glutSetWindowTitle }, { "glutSetWindowTitle", (const GLUTproc) glutSetWindowTitle },
{ "glutSetIconTitle", (const void *) glutSetIconTitle }, { "glutSetIconTitle", (const GLUTproc) glutSetIconTitle },
{ "glutPositionWindow", (const void *) glutPositionWindow }, { "glutPositionWindow", (const GLUTproc) glutPositionWindow },
{ "glutReshapeWindow", (const void *) glutReshapeWindow }, { "glutReshapeWindow", (const GLUTproc) glutReshapeWindow },
{ "glutPopWindow", (const void *) glutPopWindow }, { "glutPopWindow", (const GLUTproc) glutPopWindow },
{ "glutPushWindow", (const void *) glutPushWindow }, { "glutPushWindow", (const GLUTproc) glutPushWindow },
{ "glutIconifyWindow", (const void *) glutIconifyWindow }, { "glutIconifyWindow", (const GLUTproc) glutIconifyWindow },
{ "glutShowWindow", (const void *) glutShowWindow }, { "glutShowWindow", (const GLUTproc) glutShowWindow },
{ "glutHideWindow", (const void *) glutHideWindow }, { "glutHideWindow", (const GLUTproc) glutHideWindow },
{ "glutFullScreen", (const void *) glutFullScreen }, { "glutFullScreen", (const GLUTproc) glutFullScreen },
{ "glutSetCursor", (const void *) glutSetCursor }, { "glutSetCursor", (const GLUTproc) glutSetCursor },
{ "glutWarpPointer", (const void *) glutWarpPointer }, { "glutWarpPointer", (const GLUTproc) glutWarpPointer },
{ "glutEstablishOverlay", (const void *) glutEstablishOverlay }, { "glutEstablishOverlay", (const GLUTproc) glutEstablishOverlay },
{ "glutRemoveOverlay", (const void *) glutRemoveOverlay }, { "glutRemoveOverlay", (const GLUTproc) glutRemoveOverlay },
{ "glutUseLayer", (const void *) glutUseLayer }, { "glutUseLayer", (const GLUTproc) glutUseLayer },
{ "glutPostOverlayRedisplay", (const void *) glutPostOverlayRedisplay }, { "glutPostOverlayRedisplay", (const GLUTproc) glutPostOverlayRedisplay },
{ "glutPostWindowOverlayRedisplay", (const void *) glutPostWindowOverlayRedisplay }, { "glutPostWindowOverlayRedisplay", (const GLUTproc) glutPostWindowOverlayRedisplay },
{ "glutShowOverlay", (const void *) glutShowOverlay }, { "glutShowOverlay", (const GLUTproc) glutShowOverlay },
{ "glutHideOverlay", (const void *) glutHideOverlay }, { "glutHideOverlay", (const GLUTproc) glutHideOverlay },
{ "glutCreateMenu", (const void *) glutCreateMenu }, { "glutCreateMenu", (const GLUTproc) glutCreateMenu },
{ "glutDestroyMenu", (const void *) glutDestroyMenu }, { "glutDestroyMenu", (const GLUTproc) glutDestroyMenu },
{ "glutGetMenu", (const void *) glutGetMenu }, { "glutGetMenu", (const GLUTproc) glutGetMenu },
{ "glutSetMenu", (const void *) glutSetMenu }, { "glutSetMenu", (const GLUTproc) glutSetMenu },
{ "glutAddMenuEntry", (const void *) glutAddMenuEntry }, { "glutAddMenuEntry", (const GLUTproc) glutAddMenuEntry },
{ "glutAddSubMenu", (const void *) glutAddSubMenu }, { "glutAddSubMenu", (const GLUTproc) glutAddSubMenu },
{ "glutChangeToMenuEntry", (const void *) glutChangeToMenuEntry }, { "glutChangeToMenuEntry", (const GLUTproc) glutChangeToMenuEntry },
{ "glutChangeToSubMenu", (const void *) glutChangeToSubMenu }, { "glutChangeToSubMenu", (const GLUTproc) glutChangeToSubMenu },
{ "glutRemoveMenuItem", (const void *) glutRemoveMenuItem }, { "glutRemoveMenuItem", (const GLUTproc) glutRemoveMenuItem },
{ "glutAttachMenu", (const void *) glutAttachMenu }, { "glutAttachMenu", (const GLUTproc) glutAttachMenu },
{ "glutDetachMenu", (const void *) glutDetachMenu }, { "glutDetachMenu", (const GLUTproc) glutDetachMenu },
{ "glutDisplayFunc", (const void *) glutDisplayFunc }, { "glutDisplayFunc", (const GLUTproc) glutDisplayFunc },
{ "glutReshapeFunc", (const void *) glutReshapeFunc }, { "glutReshapeFunc", (const GLUTproc) glutReshapeFunc },
{ "glutKeyboardFunc", (const void *) glutKeyboardFunc }, { "glutKeyboardFunc", (const GLUTproc) glutKeyboardFunc },
{ "glutMouseFunc", (const void *) glutMouseFunc }, { "glutMouseFunc", (const GLUTproc) glutMouseFunc },
{ "glutMotionFunc", (const void *) glutMotionFunc }, { "glutMotionFunc", (const GLUTproc) glutMotionFunc },
{ "glutPassiveMotionFunc", (const void *) glutPassiveMotionFunc }, { "glutPassiveMotionFunc", (const GLUTproc) glutPassiveMotionFunc },
{ "glutEntryFunc", (const void *) glutEntryFunc }, { "glutEntryFunc", (const GLUTproc) glutEntryFunc },
{ "glutVisibilityFunc", (const void *) glutVisibilityFunc }, { "glutVisibilityFunc", (const GLUTproc) glutVisibilityFunc },
{ "glutIdleFunc", (const void *) glutIdleFunc }, { "glutIdleFunc", (const GLUTproc) glutIdleFunc },
{ "glutTimerFunc", (const void *) glutTimerFunc }, { "glutTimerFunc", (const GLUTproc) glutTimerFunc },
{ "glutMenuStateFunc", (const void *) glutMenuStateFunc }, { "glutMenuStateFunc", (const GLUTproc) glutMenuStateFunc },
{ "glutSpecialFunc", (const void *) glutSpecialFunc }, { "glutSpecialFunc", (const GLUTproc) glutSpecialFunc },
{ "glutSpaceballMotionFunc", (const void *) glutSpaceballMotionFunc }, { "glutSpaceballMotionFunc", (const GLUTproc) glutSpaceballMotionFunc },
{ "glutSpaceballRotateFunc", (const void *) glutSpaceballRotateFunc }, { "glutSpaceballRotateFunc", (const GLUTproc) glutSpaceballRotateFunc },
{ "glutSpaceballButtonFunc", (const void *) glutSpaceballButtonFunc }, { "glutSpaceballButtonFunc", (const GLUTproc) glutSpaceballButtonFunc },
{ "glutButtonBoxFunc", (const void *) glutButtonBoxFunc }, { "glutButtonBoxFunc", (const GLUTproc) glutButtonBoxFunc },
{ "glutDialsFunc", (const void *) glutDialsFunc }, { "glutDialsFunc", (const GLUTproc) glutDialsFunc },
{ "glutTabletMotionFunc", (const void *) glutTabletMotionFunc }, { "glutTabletMotionFunc", (const GLUTproc) glutTabletMotionFunc },
{ "glutTabletButtonFunc", (const void *) glutTabletButtonFunc }, { "glutTabletButtonFunc", (const GLUTproc) glutTabletButtonFunc },
{ "glutMenuStatusFunc", (const void *) glutMenuStatusFunc }, { "glutMenuStatusFunc", (const GLUTproc) glutMenuStatusFunc },
{ "glutOverlayDisplayFunc", (const void *) glutOverlayDisplayFunc }, { "glutOverlayDisplayFunc", (const GLUTproc) glutOverlayDisplayFunc },
{ "glutWindowStatusFunc", (const void *) glutWindowStatusFunc }, { "glutWindowStatusFunc", (const GLUTproc) glutWindowStatusFunc },
{ "glutKeyboardUpFunc", (const void *) glutKeyboardUpFunc }, { "glutKeyboardUpFunc", (const GLUTproc) glutKeyboardUpFunc },
{ "glutSpecialUpFunc", (const void *) glutSpecialUpFunc }, { "glutSpecialUpFunc", (const GLUTproc) glutSpecialUpFunc },
{ "glutJoystickFunc", (const void *) glutJoystickFunc }, { "glutJoystickFunc", (const GLUTproc) glutJoystickFunc },
{ "glutSetColor", (const void *) glutSetColor }, { "glutSetColor", (const GLUTproc) glutSetColor },
{ "glutGetColor", (const void *) glutGetColor }, { "glutGetColor", (const GLUTproc) glutGetColor },
{ "glutCopyColormap", (const void *) glutCopyColormap }, { "glutCopyColormap", (const GLUTproc) glutCopyColormap },
{ "glutGet", (const void *) glutGet }, { "glutGet", (const GLUTproc) glutGet },
{ "glutDeviceGet", (const void *) glutDeviceGet }, { "glutDeviceGet", (const GLUTproc) glutDeviceGet },
{ "glutExtensionSupported", (const void *) glutExtensionSupported }, { "glutExtensionSupported", (const GLUTproc) glutExtensionSupported },
{ "glutGetModifiers", (const void *) glutGetModifiers }, { "glutGetModifiers", (const GLUTproc) glutGetModifiers },
{ "glutLayerGet", (const void *) glutLayerGet }, { "glutLayerGet", (const GLUTproc) glutLayerGet },
{ "glutGetProcAddress", (const void *) glutGetProcAddress }, { "glutGetProcAddress", (const GLUTproc) glutGetProcAddress },
{ "glutBitmapCharacter", (const void *) glutBitmapCharacter }, { "glutBitmapCharacter", (const GLUTproc) glutBitmapCharacter },
{ "glutBitmapWidth", (const void *) glutBitmapWidth }, { "glutBitmapWidth", (const GLUTproc) glutBitmapWidth },
{ "glutStrokeCharacter", (const void *) glutStrokeCharacter }, { "glutStrokeCharacter", (const GLUTproc) glutStrokeCharacter },
{ "glutStrokeWidth", (const void *) glutStrokeWidth }, { "glutStrokeWidth", (const GLUTproc) glutStrokeWidth },
{ "glutBitmapLength", (const void *) glutBitmapLength }, { "glutBitmapLength", (const GLUTproc) glutBitmapLength },
{ "glutStrokeLength", (const void *) glutStrokeLength }, { "glutStrokeLength", (const GLUTproc) glutStrokeLength },
{ "glutWireSphere", (const void *) glutWireSphere }, { "glutWireSphere", (const GLUTproc) glutWireSphere },
{ "glutSolidSphere", (const void *) glutSolidSphere }, { "glutSolidSphere", (const GLUTproc) glutSolidSphere },
{ "glutWireCone", (const void *) glutWireCone }, { "glutWireCone", (const GLUTproc) glutWireCone },
{ "glutSolidCone", (const void *) glutSolidCone }, { "glutSolidCone", (const GLUTproc) glutSolidCone },
{ "glutWireCube", (const void *) glutWireCube }, { "glutWireCube", (const GLUTproc) glutWireCube },
{ "glutSolidCube", (const void *) glutSolidCube }, { "glutSolidCube", (const GLUTproc) glutSolidCube },
{ "glutWireTorus", (const void *) glutWireTorus }, { "glutWireTorus", (const GLUTproc) glutWireTorus },
{ "glutSolidTorus", (const void *) glutSolidTorus }, { "glutSolidTorus", (const GLUTproc) glutSolidTorus },
{ "glutWireDodecahedron", (const void *) glutWireDodecahedron }, { "glutWireDodecahedron", (const GLUTproc) glutWireDodecahedron },
{ "glutSolidDodecahedron", (const void *) glutSolidDodecahedron }, { "glutSolidDodecahedron", (const GLUTproc) glutSolidDodecahedron },
{ "glutWireTeapot", (const void *) glutWireTeapot }, { "glutWireTeapot", (const GLUTproc) glutWireTeapot },
{ "glutSolidTeapot", (const void *) glutSolidTeapot }, { "glutSolidTeapot", (const GLUTproc) glutSolidTeapot },
{ "glutWireOctahedron", (const void *) glutWireOctahedron }, { "glutWireOctahedron", (const GLUTproc) glutWireOctahedron },
{ "glutSolidOctahedron", (const void *) glutSolidOctahedron }, { "glutSolidOctahedron", (const GLUTproc) glutSolidOctahedron },
{ "glutWireTetrahedron", (const void *) glutWireTetrahedron }, { "glutWireTetrahedron", (const GLUTproc) glutWireTetrahedron },
{ "glutSolidTetrahedron", (const void *) glutSolidTetrahedron }, { "glutSolidTetrahedron", (const GLUTproc) glutSolidTetrahedron },
{ "glutWireIcosahedron", (const void *) glutWireIcosahedron }, { "glutWireIcosahedron", (const GLUTproc) glutWireIcosahedron },
{ "glutSolidIcosahedron", (const void *) glutSolidIcosahedron }, { "glutSolidIcosahedron", (const GLUTproc) glutSolidIcosahedron },
{ "glutVideoResizeGet", (const void *) glutVideoResizeGet }, { "glutVideoResizeGet", (const GLUTproc) glutVideoResizeGet },
{ "glutSetupVideoResizing", (const void *) glutSetupVideoResizing }, { "glutSetupVideoResizing", (const GLUTproc) glutSetupVideoResizing },
{ "glutStopVideoResizing", (const void *) glutStopVideoResizing }, { "glutStopVideoResizing", (const GLUTproc) glutStopVideoResizing },
{ "glutVideoResize", (const void *) glutVideoResize }, { "glutVideoResize", (const GLUTproc) glutVideoResize },
{ "glutVideoPan", (const void *) glutVideoPan }, { "glutVideoPan", (const GLUTproc) glutVideoPan },
{ "glutReportErrors", (const void *) glutReportErrors }, { "glutReportErrors", (const GLUTproc) glutReportErrors },
{ "glutIgnoreKeyRepeat", (const void *) glutIgnoreKeyRepeat }, { "glutIgnoreKeyRepeat", (const GLUTproc) glutIgnoreKeyRepeat },
{ "glutSetKeyRepeat", (const void *) glutSetKeyRepeat }, { "glutSetKeyRepeat", (const GLUTproc) glutSetKeyRepeat },
{ "glutForceJoystickFunc", (const void *) glutForceJoystickFunc }, { "glutForceJoystickFunc", (const GLUTproc) glutForceJoystickFunc },
{ "glutGameModeString", (const void *) glutGameModeString }, { "glutGameModeString", (const GLUTproc) glutGameModeString },
{ "glutEnterGameMode", (const void *) glutEnterGameMode }, { "glutEnterGameMode", (const GLUTproc) glutEnterGameMode },
{ "glutLeaveGameMode", (const void *) glutLeaveGameMode }, { "glutLeaveGameMode", (const GLUTproc) glutLeaveGameMode },
{ "glutGameModeGet", (const void *) glutGameModeGet }, { "glutGameModeGet", (const GLUTproc) glutGameModeGet },
{ NULL, NULL } { NULL, NULL }
}; };
/* XXX This isn't an official GLUT function, yet */ /* XXX This isn't an official GLUT function, yet */
void * GLUTAPIENTRY GLUTproc GLUTAPIENTRY
glutGetProcAddress(const char *procName) glutGetProcAddress(const char *procName)
{ {
/* Try GLUT functions first */ /* Try GLUT functions first */
int i; int i;
for (i = 0; glut_functions[i].name; i++) { for (i = 0; glut_functions[i].name; i++) {
if (strcmp(glut_functions[i].name, procName) == 0) if (strcmp(glut_functions[i].name, procName) == 0)
return (void *) glut_functions[i].address; return glut_functions[i].address;
} }
/* Try core GL functions */ /* Try core GL functions */
#if defined(_WIN32) #if defined(_WIN32)
return (void *) wglGetProcAddress((LPCSTR) procName); return (GLUTproc) wglGetProcAddress((LPCSTR) procName);
#elif defined(GLX_ARB_get_proc_address) #elif defined(GLX_ARB_get_proc_address)
return (void *) glXGetProcAddressARB((const GLubyte *) procName); return (GLUTproc) glXGetProcAddressARB((const GLubyte *) procName);
#else #else
return NULL; return NULL;
#endif #endif