@ -2,88 +2,81 @@
# ifdef HAVE_OPENGL
# ifdef HAVE_OPENGL
# include <algorithm>
# include <string>
# include <string.h>
# include "gl_core_3_1.hpp"
# include "gl_core_3_1.hpp"
# if defined(__APPLE__)
# if defined(__APPLE__)
# include <mach-o/dyld.h>
# include <mach-o/dyld.h>
static void * AppleGLGetProcAddress ( const GLubyte * name )
static void * AppleGLGetProcAddress ( const GLubyte * name )
{
static const struct mach_header * image = NULL ;
NSSymbol symbol ;
char * symbolName ;
if ( NULL = = image )
{
{
static const struct mach_header * image = 0 ;
if ( ! image )
image = NSAddImage ( " /System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL " , NSADDIMAGE_OPTION_RETURN_ON_ERROR ) ;
image = NSAddImage ( " /System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL " , NSADDIMAGE_OPTION_RETURN_ON_ERROR ) ;
// prepend a '_' for the Unix C symbol mangling convention
std : : string symbolName = " _ " ;
symbolName + = std : : string ( ( const char * ) name ) ;
NSSymbol symbol = image ? NSLookupSymbolInImage ( image , & symbolName [ 0 ] , NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR ) : 0 ;
return symbol ? NSAddressOfSymbol ( symbol ) : 0 ;
}
}
/* prepend a '_' for the Unix C symbol mangling convention */
# endif // __APPLE__
symbolName = malloc ( strlen ( ( const char * ) name ) + 2 ) ;
strcpy ( symbolName + 1 , ( const char * ) name ) ;
symbolName [ 0 ] = ' _ ' ;
symbol = NULL ;
/* if (NSIsSymbolNameDefined(symbolName))
symbol = NSLookupAndBindSymbol ( symbolName ) ; */
symbol = image ? NSLookupSymbolInImage ( image , symbolName , NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR ) : NULL ;
free ( symbolName ) ;
return symbol ? NSAddressOfSymbol ( symbol ) : NULL ;
}
# endif /* __APPLE__ */
# if defined(__sgi) || defined (__sun)
# if defined(__sgi) || defined (__sun)
# include <dlfcn.h>
# include <dlfcn.h>
# include <stdio.h>
# include <stdio.h>
static void * SunGetProcAddress ( const GLubyte * name )
static void * SunGetProcAddress ( const GLubyte * name )
{
{
static void * h = NULL ;
typedef void * ( func_t * ) ( const GLubyte * ) ;
static void * gpa ;
static void * h = 0 ;
static func_t gpa = 0 ;
if ( h = = NULL )
if ( ! h )
{
{
if ( ( h = dlopen ( NULL , RTLD_LAZY | RTLD_LOCAL ) ) = = NULL ) return NULL ;
h = dlopen ( NULL , RTLD_LAZY | RTLD_LOCAL ) ;
gpa = dlsym ( h , " glXGetProcAddress " ) ;
if ( ! h )
return 0 ;
gpa = ( func_t ) dlsym ( h , " glXGetProcAddress " ) ;
}
}
if ( gpa ! = NULL )
return gpa ? gpa ( name ) : dlsym ( h , ( const char * ) name ) ;
return ( ( void * ( * ) ( const GLubyte * ) ) gpa ) ( name ) ;
}
else
return dlsym ( h , ( const char * ) name ) ;
}
# endif /* __sgi || __sun */
# endif /* __sgi || __sun */
# if defined(_WIN32)
# if defined(_WIN32)
# ifdef _MSC_VER
# pragma warning(disable: 4055)
# pragma warning(disable: 4054)
# endif
# ifdef _MSC_VER
static int TestPointer ( const PROC pTest )
# pragma warning(disable: 4055)
{
# pragma warning(disable: 4054)
if ( ! pTest )
# endif
return 0 ;
static int TestPointer ( const PROC pTest )
ptrdiff_t iTest = ( ptrdiff_t ) pTest ;
{
ptrdiff_t iTest ;
if ( ! pTest ) return 0 ;
iTest = ( ptrdiff_t ) pTest ;
if ( iTest = = 1 | | iTest = = 2 | | iTest = = 3 | | iTest = = - 1 ) return 0 ;
if ( iTest = = 1 | | iTest = = 2 | | iTest = = 3 | | iTest = = - 1 )
return 0 ;
return 1 ;
return 1 ;
}
}
static PROC WinGetProcAddress ( const char * name )
static PROC WinGetProcAddress ( const char * name )
{
HMODULE glMod = NULL ;
PROC pFunc = wglGetProcAddress ( ( LPCSTR ) name ) ;
if ( TestPointer ( pFunc ) )
{
{
PROC pFunc = wglGetProcAddress ( ( LPCSTR ) name ) ;
if ( TestPointer ( pFunc ) )
return pFunc ;
return pFunc ;
HMODULE glMod = GetModuleHandleA ( " OpenGL32.dll " ) ;
return ( PROC ) GetProcAddress ( glMod , ( LPCSTR ) name ) ;
}
}
glMod = GetModuleHandleA ( " OpenGL32.dll " ) ;
return ( PROC ) GetProcAddress ( glMod , ( LPCSTR ) name ) ;
}
# define IntGetProcAddress(name) WinGetProcAddress(name)
# define IntGetProcAddress(name) WinGetProcAddress(name)
# else
# else
# if defined(__APPLE__)
# if defined(__APPLE__)
# define IntGetProcAddress(name) AppleGLGetProcAddress(name)
# define IntGetProcAddress(name) AppleGLGetProcAddress(name)
@ -93,16 +86,15 @@ static PROC WinGetProcAddress(const char *name)
# else /* GLX */
# else /* GLX */
# include <GL/glx.h>
# include <GL/glx.h>
# define IntGetProcAddress(name) (*glXGetProcAddressARB)((const GLubyte*)name)
# define IntGetProcAddress(name) (*glXGetProcAddressARB)((const GLubyte*) name)
# endif
# endif
# endif
# endif
# endif
# endif
namespace gl
namespace gl
{
{
namespace exts
//////////////////////////////////////////////
{
// Function pointer types
}
// Extension: 1.1
// Extension: 1.1
typedef void ( CODEGEN_FUNCPTR * PFNCULLFACEPROC ) ( GLenum ) ;
typedef void ( CODEGEN_FUNCPTR * PFNCULLFACEPROC ) ( GLenum ) ;
@ -396,22 +388,20 @@ namespace gl
typedef void ( CODEGEN_FUNCPTR * PFNPRIMITIVERESTARTINDEXPROC ) ( GLuint ) ;
typedef void ( CODEGEN_FUNCPTR * PFNPRIMITIVERESTARTINDEXPROC ) ( GLuint ) ;
// Legacy
// Legacy
typedef void ( CODEGEN_FUNCPTR * PFNENABLECLIENTSTATEPROC ) ( GLenum cap ) ;
typedef void ( CODEGEN_FUNCPTR * PFNENABLECLIENTSTATEPROC ) ( GLenum ) ;
typedef void ( CODEGEN_FUNCPTR * PFNDISABLECLIENTSTATEPROC ) ( GLenum cap ) ;
typedef void ( CODEGEN_FUNCPTR * PFNDISABLECLIENTSTATEPROC ) ( GLenum ) ;
typedef void ( CODEGEN_FUNCPTR * PFNVERTEXPOINTERPROC ) ( GLint size , GLenum type , GLsizei stride , const GLvoid * ptr ) ;
typedef void ( CODEGEN_FUNCPTR * PFNVERTEXPOINTERPROC ) ( GLint , GLenum , GLsizei , const GLvoid * ) ;
typedef void ( CODEGEN_FUNCPTR * PFNNORMALPOINTERPROC ) ( GLenum type , GLsizei stride , const GLvoid * ptr ) ;
typedef void ( CODEGEN_FUNCPTR * PFNNORMALPOINTERPROC ) ( GLenum , GLsizei , const GLvoid * ) ;
typedef void ( CODEGEN_FUNCPTR * PFNCOLORPOINTERPROC ) ( GLint size , GLenum type , GLsizei stride , const GLvoid * ptr ) ;
typedef void ( CODEGEN_FUNCPTR * PFNCOLORPOINTERPROC ) ( GLint , GLenum , GLsizei , const GLvoid * ) ;
typedef void ( CODEGEN_FUNCPTR * PFNTEXCOORDPOINTERPROC ) ( GLint size , GLenum type , GLsizei stride , const GLvoid * ptr ) ;
typedef void ( CODEGEN_FUNCPTR * PFNTEXCOORDPOINTERPROC ) ( GLint , GLenum , GLsizei , const GLvoid * ) ;
typedef void ( CODEGEN_FUNCPTR * PFNTEXENVIPROC ) ( GLenum , GLenum , GLint ) ;
typedef void ( CODEGEN_FUNCPTR * PFNTEXENVIPROC ) ( GLenum target , GLenum pname , GLint param ) ;
typedef void ( CODEGEN_FUNCPTR * PFNMATRIXMODEPROC ) ( GLenum ) ;
typedef void ( CODEGEN_FUNCPTR * PFNMATRIXMODEPROC ) ( GLenum modem ) ;
typedef void ( CODEGEN_FUNCPTR * PFNLOADIDENTITYPROC ) ( void ) ;
typedef void ( CODEGEN_FUNCPTR * PFNLOADIDENTITYPROC ) ( void ) ;
typedef void ( CODEGEN_FUNCPTR * PFNORTHOPROC ) ( GLdouble left , GLdouble right , GLdouble bottom , GLdouble top , GLdouble near_val , GLdouble far_val ) ;
typedef void ( CODEGEN_FUNCPTR * PFNORTHOPROC ) ( GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble ) ;
typedef void ( CODEGEN_FUNCPTR * PFNCOLOR3DPROC ) ( GLdouble , GLdouble , GLdouble ) ;
typedef void ( CODEGEN_FUNCPTR * PFNCOLOR3DPROC ) ( GLdouble red , GLdouble green , GLdouble blue ) ;
//////////////////////////////////////////////
// Function pointers
// Extension: 1.1
// Extension: 1.1
PFNCULLFACEPROC CullFace ;
PFNCULLFACEPROC CullFace ;
@ -720,8 +710,11 @@ namespace gl
PFNCOLOR3DPROC Color3d ;
PFNCOLOR3DPROC Color3d ;
//////////////////////////////////////////////
// Switch functions
// Extension: 1.1
// Extension: 1.1
static void CODEGEN_FUNCPTR Switch_CullFace ( GLenum mode )
static void CODEGEN_FUNCPTR Switch_CullFace ( GLenum mode )
{
{
CullFace = ( PFNCULLFACEPROC ) IntGetProcAddress ( " glCullFace " ) ;
CullFace = ( PFNCULLFACEPROC ) IntGetProcAddress ( " glCullFace " ) ;
@ -1106,8 +1099,8 @@ namespace gl
Indexubv ( c ) ;
Indexubv ( c ) ;
}
}
// Extension: 1.2
// Extension: 1.2
static void CODEGEN_FUNCPTR Switch_BlendColor ( GLfloat red , GLfloat green , GLfloat blue , GLfloat alpha )
static void CODEGEN_FUNCPTR Switch_BlendColor ( GLfloat red , GLfloat green , GLfloat blue , GLfloat alpha )
{
{
BlendColor = ( PFNBLENDCOLORPROC ) IntGetProcAddress ( " glBlendColor " ) ;
BlendColor = ( PFNBLENDCOLORPROC ) IntGetProcAddress ( " glBlendColor " ) ;
@ -1138,8 +1131,8 @@ namespace gl
CopyTexSubImage3D ( target , level , xoffset , yoffset , zoffset , x , y , width , height ) ;
CopyTexSubImage3D ( target , level , xoffset , yoffset , zoffset , x , y , width , height ) ;
}
}
// Extension: 1.3
// Extension: 1.3
static void CODEGEN_FUNCPTR Switch_ActiveTexture ( GLenum texture )
static void CODEGEN_FUNCPTR Switch_ActiveTexture ( GLenum texture )
{
{
ActiveTexture = ( PFNACTIVETEXTUREPROC ) IntGetProcAddress ( " glActiveTexture " ) ;
ActiveTexture = ( PFNACTIVETEXTUREPROC ) IntGetProcAddress ( " glActiveTexture " ) ;
@ -1194,8 +1187,8 @@ namespace gl
GetCompressedTexImage ( target , level , img ) ;
GetCompressedTexImage ( target , level , img ) ;
}
}
// Extension: 1.4
// Extension: 1.4
static void CODEGEN_FUNCPTR Switch_BlendFuncSeparate ( GLenum sfactorRGB , GLenum dfactorRGB , GLenum sfactorAlpha , GLenum dfactorAlpha )
static void CODEGEN_FUNCPTR Switch_BlendFuncSeparate ( GLenum sfactorRGB , GLenum dfactorRGB , GLenum sfactorAlpha , GLenum dfactorAlpha )
{
{
BlendFuncSeparate = ( PFNBLENDFUNCSEPARATEPROC ) IntGetProcAddress ( " glBlendFuncSeparate " ) ;
BlendFuncSeparate = ( PFNBLENDFUNCSEPARATEPROC ) IntGetProcAddress ( " glBlendFuncSeparate " ) ;
@ -1238,8 +1231,8 @@ namespace gl
PointParameteriv ( pname , params ) ;
PointParameteriv ( pname , params ) ;
}
}
// Extension: 1.5
// Extension: 1.5
static void CODEGEN_FUNCPTR Switch_GenQueries ( GLsizei n , GLuint * ids )
static void CODEGEN_FUNCPTR Switch_GenQueries ( GLsizei n , GLuint * ids )
{
{
GenQueries = ( PFNGENQUERIESPROC ) IntGetProcAddress ( " glGenQueries " ) ;
GenQueries = ( PFNGENQUERIESPROC ) IntGetProcAddress ( " glGenQueries " ) ;
@ -1354,8 +1347,8 @@ namespace gl
GetBufferPointerv ( target , pname , params ) ;
GetBufferPointerv ( target , pname , params ) ;
}
}
// Extension: 2.0
// Extension: 2.0
static void CODEGEN_FUNCPTR Switch_BlendEquationSeparate ( GLenum modeRGB , GLenum modeAlpha )
static void CODEGEN_FUNCPTR Switch_BlendEquationSeparate ( GLenum modeRGB , GLenum modeAlpha )
{
{
BlendEquationSeparate = ( PFNBLENDEQUATIONSEPARATEPROC ) IntGetProcAddress ( " glBlendEquationSeparate " ) ;
BlendEquationSeparate = ( PFNBLENDEQUATIONSEPARATEPROC ) IntGetProcAddress ( " glBlendEquationSeparate " ) ;
@ -1698,8 +1691,8 @@ namespace gl
VertexAttribPointer ( index , size , type , normalized , stride , pointer ) ;
VertexAttribPointer ( index , size , type , normalized , stride , pointer ) ;
}
}
// Extension: 2.1
// Extension: 2.1
static void CODEGEN_FUNCPTR Switch_UniformMatrix2x3fv ( GLint location , GLsizei count , GLboolean transpose , const GLfloat * value )
static void CODEGEN_FUNCPTR Switch_UniformMatrix2x3fv ( GLint location , GLsizei count , GLboolean transpose , const GLfloat * value )
{
{
UniformMatrix2x3fv = ( PFNUNIFORMMATRIX2X3FVPROC ) IntGetProcAddress ( " glUniformMatrix2x3fv " ) ;
UniformMatrix2x3fv = ( PFNUNIFORMMATRIX2X3FVPROC ) IntGetProcAddress ( " glUniformMatrix2x3fv " ) ;
@ -1736,8 +1729,8 @@ namespace gl
UniformMatrix4x3fv ( location , count , transpose , value ) ;
UniformMatrix4x3fv ( location , count , transpose , value ) ;
}
}
// Extension: ARB_vertex_array_object
// Extension: ARB_vertex_array_object
static void CODEGEN_FUNCPTR Switch_BindVertexArray ( GLuint ren_array )
static void CODEGEN_FUNCPTR Switch_BindVertexArray ( GLuint ren_array )
{
{
BindVertexArray = ( PFNBINDVERTEXARRAYPROC ) IntGetProcAddress ( " glBindVertexArray " ) ;
BindVertexArray = ( PFNBINDVERTEXARRAYPROC ) IntGetProcAddress ( " glBindVertexArray " ) ;
@ -1762,8 +1755,8 @@ namespace gl
return IsVertexArray ( ren_array ) ;
return IsVertexArray ( ren_array ) ;
}
}
// Extension: ARB_map_buffer_range
// Extension: ARB_map_buffer_range
static GLvoid * CODEGEN_FUNCPTR Switch_MapBufferRange ( GLenum target , GLintptr offset , GLsizeiptr length , GLbitfield access )
static GLvoid * CODEGEN_FUNCPTR Switch_MapBufferRange ( GLenum target , GLintptr offset , GLsizeiptr length , GLbitfield access )
{
{
MapBufferRange = ( PFNMAPBUFFERRANGEPROC ) IntGetProcAddress ( " glMapBufferRange " ) ;
MapBufferRange = ( PFNMAPBUFFERRANGEPROC ) IntGetProcAddress ( " glMapBufferRange " ) ;
@ -1776,8 +1769,8 @@ namespace gl
FlushMappedBufferRange ( target , offset , length ) ;
FlushMappedBufferRange ( target , offset , length ) ;
}
}
// Extension: ARB_framebuffer_object
// Extension: ARB_framebuffer_object
static GLboolean CODEGEN_FUNCPTR Switch_IsRenderbuffer ( GLuint renderbuffer )
static GLboolean CODEGEN_FUNCPTR Switch_IsRenderbuffer ( GLuint renderbuffer )
{
{
IsRenderbuffer = ( PFNISRENDERBUFFERPROC ) IntGetProcAddress ( " glIsRenderbuffer " ) ;
IsRenderbuffer = ( PFNISRENDERBUFFERPROC ) IntGetProcAddress ( " glIsRenderbuffer " ) ;
@ -1898,8 +1891,8 @@ namespace gl
FramebufferTextureLayer ( target , attachment , texture , level , layer ) ;
FramebufferTextureLayer ( target , attachment , texture , level , layer ) ;
}
}
// Extension: 3.0
// Extension: 3.0
static void CODEGEN_FUNCPTR Switch_ColorMaski ( GLuint index , GLboolean r , GLboolean g , GLboolean b , GLboolean a )
static void CODEGEN_FUNCPTR Switch_ColorMaski ( GLuint index , GLboolean r , GLboolean g , GLboolean b , GLboolean a )
{
{
ColorMaski = ( PFNCOLORMASKIPROC ) IntGetProcAddress ( " glColorMaski " ) ;
ColorMaski = ( PFNCOLORMASKIPROC ) IntGetProcAddress ( " glColorMaski " ) ;
@ -2248,8 +2241,8 @@ namespace gl
return GetStringi ( name , index ) ;
return GetStringi ( name , index ) ;
}
}
// Extension: ARB_uniform_buffer_object
// Extension: ARB_uniform_buffer_object
static void CODEGEN_FUNCPTR Switch_GetUniformIndices ( GLuint program , GLsizei uniformCount , const GLchar * const * uniformNames , GLuint * uniformIndices )
static void CODEGEN_FUNCPTR Switch_GetUniformIndices ( GLuint program , GLsizei uniformCount , const GLchar * const * uniformNames , GLuint * uniformIndices )
{
{
GetUniformIndices = ( PFNGETUNIFORMINDICESPROC ) IntGetProcAddress ( " glGetUniformIndices " ) ;
GetUniformIndices = ( PFNGETUNIFORMINDICESPROC ) IntGetProcAddress ( " glGetUniformIndices " ) ;
@ -2292,16 +2285,16 @@ namespace gl
UniformBlockBinding ( program , uniformBlockIndex , uniformBlockBinding ) ;
UniformBlockBinding ( program , uniformBlockIndex , uniformBlockBinding ) ;
}
}
// Extension: ARB_copy_buffer
// Extension: ARB_copy_buffer
static void CODEGEN_FUNCPTR Switch_CopyBufferSubData ( GLenum readTarget , GLenum writeTarget , GLintptr readOffset , GLintptr writeOffset , GLsizeiptr size )
static void CODEGEN_FUNCPTR Switch_CopyBufferSubData ( GLenum readTarget , GLenum writeTarget , GLintptr readOffset , GLintptr writeOffset , GLsizeiptr size )
{
{
CopyBufferSubData = ( PFNCOPYBUFFERSUBDATAPROC ) IntGetProcAddress ( " glCopyBufferSubData " ) ;
CopyBufferSubData = ( PFNCOPYBUFFERSUBDATAPROC ) IntGetProcAddress ( " glCopyBufferSubData " ) ;
CopyBufferSubData ( readTarget , writeTarget , readOffset , writeOffset , size ) ;
CopyBufferSubData ( readTarget , writeTarget , readOffset , writeOffset , size ) ;
}
}
// Extension: 3.1
// Extension: 3.1
static void CODEGEN_FUNCPTR Switch_DrawArraysInstanced ( GLenum mode , GLint first , GLsizei count , GLsizei instancecount )
static void CODEGEN_FUNCPTR Switch_DrawArraysInstanced ( GLenum mode , GLint first , GLsizei count , GLsizei instancecount )
{
{
DrawArraysInstanced = ( PFNDRAWARRAYSINSTANCEDPROC ) IntGetProcAddress ( " glDrawArraysInstanced " ) ;
DrawArraysInstanced = ( PFNDRAWARRAYSINSTANCEDPROC ) IntGetProcAddress ( " glDrawArraysInstanced " ) ;
@ -2327,6 +2320,7 @@ namespace gl
}
}
// Legacy
// Legacy
static void CODEGEN_FUNCPTR Switch_EnableClientState ( GLenum cap )
static void CODEGEN_FUNCPTR Switch_EnableClientState ( GLenum cap )
{
{
EnableClientState = ( PFNENABLECLIENTSTATEPROC ) IntGetProcAddress ( " glEnableClientState " ) ;
EnableClientState = ( PFNENABLECLIENTSTATEPROC ) IntGetProcAddress ( " glEnableClientState " ) ;
@ -2393,10 +2387,6 @@ namespace gl
Color3d ( red , green , blue ) ;
Color3d ( red , green , blue ) ;
}
}
namespace
{
struct InitializeVariables
struct InitializeVariables
{
{
InitializeVariables ( )
InitializeVariables ( )
@ -2699,82 +2689,15 @@ namespace gl
NormalPointer = Switch_NormalPointer ;
NormalPointer = Switch_NormalPointer ;
ColorPointer = Switch_ColorPointer ;
ColorPointer = Switch_ColorPointer ;
TexCoordPointer = Switch_TexCoordPointer ;
TexCoordPointer = Switch_TexCoordPointer ;
TexEnvi = Switch_TexEnvi ;
TexEnvi = Switch_TexEnvi ;
MatrixMode = Switch_MatrixMode ;
MatrixMode = Switch_MatrixMode ;
LoadIdentity = Switch_LoadIdentity ;
LoadIdentity = Switch_LoadIdentity ;
Ortho = Switch_Ortho ;
Ortho = Switch_Ortho ;
Color3d = Switch_Color3d ;
Color3d = Switch_Color3d ;
}
}
} ;
} ;
InitializeVariables g_initVariables ;
InitializeVariables g_initVariables ;
}
namespace sys
{
namespace
{
void ClearExtensionVariables ( )
{
}
struct MapEntry
{
const char * extName ;
bool * extVariable ;
} ;
struct MapCompare
{
MapCompare ( const char * test_ ) : test ( test_ ) { }
bool operator ( ) ( const MapEntry & other ) { return strcmp ( test , other . extName ) = = 0 ; }
const char * test ;
} ;
struct ClearEntry
{
void operator ( ) ( MapEntry & entry ) { * ( entry . extVariable ) = false ; }
} ;
MapEntry g_mappingTable [ 1 ] =
{
} ;
void LoadExtByName ( const char * extensionName )
{
MapEntry * tableEnd = & g_mappingTable [ 0 ] ;
MapEntry * entry = std : : find_if ( & g_mappingTable [ 0 ] , tableEnd , MapCompare ( extensionName ) ) ;
if ( entry ! = tableEnd )
* ( entry - > extVariable ) = true ;
}
void ProcExtsFromExtList ( )
{
GLint iLoop ;
GLint iNumExtensions = 0 ;
GetIntegerv ( NUM_EXTENSIONS , & iNumExtensions ) ;
for ( iLoop = 0 ; iLoop < iNumExtensions ; iLoop + + )
{
const char * strExtensionName = ( const char * ) GetStringi ( EXTENSIONS , iLoop ) ;
LoadExtByName ( strExtensionName ) ;
}
}
}
void CheckExtensions ( )
{
ClearExtensionVariables ( ) ;
std : : for_each ( & g_mappingTable [ 0 ] , & g_mappingTable [ 0 ] , ClearEntry ( ) ) ;
ProcExtsFromExtList ( ) ;
}
}
}
}
# endif
# endif