// Generated Code - DO NOT EDIT !!
// generated by 'emugen'


#include <string.h>
#include "egl_wrapper_context.h"


#include <stdio.h>

int egl_wrapper_context_t::initDispatchByName(void *(*getProc)(const char *, void *userData), void *userData)
{
	eglChooseConfig = (eglChooseConfig_wrapper_proc_t) getProc("eglChooseConfig", userData);
	eglCopyBuffers = (eglCopyBuffers_wrapper_proc_t) getProc("eglCopyBuffers", userData);
	eglCreateContext = (eglCreateContext_wrapper_proc_t) getProc("eglCreateContext", userData);
	eglCreatePbufferSurface = (eglCreatePbufferSurface_wrapper_proc_t) getProc("eglCreatePbufferSurface", userData);
	eglCreatePixmapSurface = (eglCreatePixmapSurface_wrapper_proc_t) getProc("eglCreatePixmapSurface", userData);
	eglCreateWindowSurface = (eglCreateWindowSurface_wrapper_proc_t) getProc("eglCreateWindowSurface", userData);
	eglDestroyContext = (eglDestroyContext_wrapper_proc_t) getProc("eglDestroyContext", userData);
	eglDestroySurface = (eglDestroySurface_wrapper_proc_t) getProc("eglDestroySurface", userData);
	eglGetConfigAttrib = (eglGetConfigAttrib_wrapper_proc_t) getProc("eglGetConfigAttrib", userData);
	eglGetConfigs = (eglGetConfigs_wrapper_proc_t) getProc("eglGetConfigs", userData);
	eglGetCurrentDisplay = (eglGetCurrentDisplay_wrapper_proc_t) getProc("eglGetCurrentDisplay", userData);
	eglGetCurrentSurface = (eglGetCurrentSurface_wrapper_proc_t) getProc("eglGetCurrentSurface", userData);
	eglGetDisplay = (eglGetDisplay_wrapper_proc_t) getProc("eglGetDisplay", userData);
	eglGetError = (eglGetError_wrapper_proc_t) getProc("eglGetError", userData);
	eglGetProcAddress = (eglGetProcAddress_wrapper_proc_t) getProc("eglGetProcAddress", userData);
	eglInitialize = (eglInitialize_wrapper_proc_t) getProc("eglInitialize", userData);
	eglMakeCurrent = (eglMakeCurrent_wrapper_proc_t) getProc("eglMakeCurrent", userData);
	eglQueryContext = (eglQueryContext_wrapper_proc_t) getProc("eglQueryContext", userData);
	eglQueryString = (eglQueryString_wrapper_proc_t) getProc("eglQueryString", userData);
	eglQuerySurface = (eglQuerySurface_wrapper_proc_t) getProc("eglQuerySurface", userData);
	eglSwapBuffers = (eglSwapBuffers_wrapper_proc_t) getProc("eglSwapBuffers", userData);
	eglTerminate = (eglTerminate_wrapper_proc_t) getProc("eglTerminate", userData);
	eglWaitGL = (eglWaitGL_wrapper_proc_t) getProc("eglWaitGL", userData);
	eglWaitNative = (eglWaitNative_wrapper_proc_t) getProc("eglWaitNative", userData);
	eglBindTexImage = (eglBindTexImage_wrapper_proc_t) getProc("eglBindTexImage", userData);
	eglReleaseTexImage = (eglReleaseTexImage_wrapper_proc_t) getProc("eglReleaseTexImage", userData);
	eglSurfaceAttrib = (eglSurfaceAttrib_wrapper_proc_t) getProc("eglSurfaceAttrib", userData);
	eglSwapInterval = (eglSwapInterval_wrapper_proc_t) getProc("eglSwapInterval", userData);
	eglBindAPI = (eglBindAPI_wrapper_proc_t) getProc("eglBindAPI", userData);
	eglQueryAPI = (eglQueryAPI_wrapper_proc_t) getProc("eglQueryAPI", userData);
	eglCreatePbufferFromClientBuffer = (eglCreatePbufferFromClientBuffer_wrapper_proc_t) getProc("eglCreatePbufferFromClientBuffer", userData);
	eglReleaseThread = (eglReleaseThread_wrapper_proc_t) getProc("eglReleaseThread", userData);
	eglWaitClient = (eglWaitClient_wrapper_proc_t) getProc("eglWaitClient", userData);
	eglGetCurrentContext = (eglGetCurrentContext_wrapper_proc_t) getProc("eglGetCurrentContext", userData);
	eglCreateSyncKHR = (eglCreateSyncKHR_wrapper_proc_t) getProc("eglCreateSyncKHR", userData);
	eglDestroySyncKHR = (eglDestroySyncKHR_wrapper_proc_t) getProc("eglDestroySyncKHR", userData);
	eglClientWaitSyncKHR = (eglClientWaitSyncKHR_wrapper_proc_t) getProc("eglClientWaitSyncKHR", userData);
	eglGetSyncAttribKHR = (eglGetSyncAttribKHR_wrapper_proc_t) getProc("eglGetSyncAttribKHR", userData);
	eglCreateImageKHR = (eglCreateImageKHR_wrapper_proc_t) getProc("eglCreateImageKHR", userData);
	eglDestroyImageKHR = (eglDestroyImageKHR_wrapper_proc_t) getProc("eglDestroyImageKHR", userData);
	return 0;
}

