#include "idlib/precompiled.h"
#pragma hdrstop

dnl =====================================================
dnl utils
dnl =====================================================

define(`forloop',
	`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
	`$4`'ifelse($1, `$3', ,
	`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')

dnl =====================================================
dnl GL extensions
dnl =====================================================

typedef struct {
	const char *ext_name;
} glExtName_t;

glExtName_t glExtNames[] = {
	{ NULL }
};

static void StubFunction( void ) { }

GLExtension_t GLimp_ExtensionPointer( const char *name ) {
	if ( strstr( name, "wgl" ) == name ) {
		common->DPrintf( "WARNING: GLimp_ExtensionPointer for '%s'\n", name );
	}
#ifdef ID_DEDICATED
	common->Printf("GLimp_ExtensionPointer %s\n", name);
	return StubFunction;
#else
	#if 0
	glExtName_t *n;
	for ( n = glExtNames ; n->ext_name ; n++ ) {
		if ( !strcmp( name, n->ext_name ) ) {
			common->DPrintf("matched GL extension: %s\n", name );
			break;
		}
	}
	if ( ! n->ext_name ) {
		common->DPrintf("unmatched GL extension name: %s\n", name );
	}
	#endif
	GLExtension_t ret;
	#if defined(__linux__)
	// for some reason glXGetProcAddressARB doesn't work on RH9?
	ret = qglXGetProcAddressARB((const GLubyte *) name);
	if ( !ret ) {
		common->Printf("glXGetProcAddressARB failed: \"%s\"\n", name);
		return StubFunction;
	}
	#else
	#error Need OS define
	#endif
	return ret;
#endif
}