// Generated Code - DO NOT EDIT !!
// generated by 'emugen'
#ifndef __egl_wrapper_proc_t_h
#define __egl_wrapper_proc_t_h



#include "egl_types.h"
#ifndef egl_APIENTRY
#define egl_APIENTRY 
#endif
typedef EGLBoolean (egl_APIENTRY *eglChooseConfig_wrapper_proc_t) (EGLDisplay, const EGLint*, EGLConfig*, EGLint, EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglCopyBuffers_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLNativePixmapType);
typedef EGLContext (egl_APIENTRY *eglCreateContext_wrapper_proc_t) (EGLDisplay, EGLConfig, EGLContext, const EGLint*);
typedef EGLSurface (egl_APIENTRY *eglCreatePbufferSurface_wrapper_proc_t) (EGLDisplay, EGLConfig, const EGLint*);
typedef EGLSurface (egl_APIENTRY *eglCreatePixmapSurface_wrapper_proc_t) (EGLDisplay, EGLConfig, EGLNativePixmapType, const EGLint*);
typedef EGLSurface (egl_APIENTRY *eglCreateWindowSurface_wrapper_proc_t) (EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglDestroyContext_wrapper_proc_t) (EGLDisplay, EGLContext);
typedef EGLBoolean (egl_APIENTRY *eglDestroySurface_wrapper_proc_t) (EGLDisplay, EGLSurface);
typedef EGLBoolean (egl_APIENTRY *eglGetConfigAttrib_wrapper_proc_t) (EGLDisplay, EGLConfig, EGLint, EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglGetConfigs_wrapper_proc_t) (EGLDisplay, EGLConfig*, EGLint, EGLint*);
typedef EGLDisplay (egl_APIENTRY *eglGetCurrentDisplay_wrapper_proc_t) ();
typedef EGLSurface (egl_APIENTRY *eglGetCurrentSurface_wrapper_proc_t) (EGLint);
typedef EGLDisplay (egl_APIENTRY *eglGetDisplay_wrapper_proc_t) (EGLNativeDisplayType);
typedef EGLint (egl_APIENTRY *eglGetError_wrapper_proc_t) ();
typedef __eglMustCastToProperFunctionPointerType (egl_APIENTRY *eglGetProcAddress_wrapper_proc_t) (const char*);
typedef EGLBoolean (egl_APIENTRY *eglInitialize_wrapper_proc_t) (EGLDisplay, EGLint*, EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglMakeCurrent_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLSurface, EGLContext);
typedef EGLBoolean (egl_APIENTRY *eglQueryContext_wrapper_proc_t) (EGLDisplay, EGLContext, EGLint, EGLint*);
typedef EGLconstcharptr (egl_APIENTRY *eglQueryString_wrapper_proc_t) (EGLDisplay, EGLint);
typedef EGLBoolean (egl_APIENTRY *eglQuerySurface_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLint, EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglSwapBuffers_wrapper_proc_t) (EGLDisplay, EGLSurface);
typedef EGLBoolean (egl_APIENTRY *eglTerminate_wrapper_proc_t) (EGLDisplay);
typedef EGLBoolean (egl_APIENTRY *eglWaitGL_wrapper_proc_t) ();
typedef EGLBoolean (egl_APIENTRY *eglWaitNative_wrapper_proc_t) (EGLint);
typedef EGLBoolean (egl_APIENTRY *eglBindTexImage_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLint);
typedef EGLBoolean (egl_APIENTRY *eglReleaseTexImage_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLint);
typedef EGLBoolean (egl_APIENTRY *eglSurfaceAttrib_wrapper_proc_t) (EGLDisplay, EGLSurface, EGLint, EGLint);
typedef EGLBoolean (egl_APIENTRY *eglSwapInterval_wrapper_proc_t) (EGLDisplay, EGLint);
typedef EGLBoolean (egl_APIENTRY *eglBindAPI_wrapper_proc_t) (EGLenum);
typedef EGLenum (egl_APIENTRY *eglQueryAPI_wrapper_proc_t) ();
typedef EGLSurface (egl_APIENTRY *eglCreatePbufferFromClientBuffer_wrapper_proc_t) (EGLDisplay, EGLenum, EGLClientBuffer, EGLConfig, const EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglReleaseThread_wrapper_proc_t) ();
typedef EGLBoolean (egl_APIENTRY *eglWaitClient_wrapper_proc_t) ();
typedef EGLContext (egl_APIENTRY *eglGetCurrentContext_wrapper_proc_t) ();
typedef EGLSyncKHR (egl_APIENTRY *eglCreateSyncKHR_wrapper_proc_t) (EGLDisplay, EGLenum, const EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglDestroySyncKHR_wrapper_proc_t) (EGLDisplay, EGLSyncKHR);
typedef EGLint (egl_APIENTRY *eglClientWaitSyncKHR_wrapper_proc_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR);
typedef EGLBoolean (egl_APIENTRY *eglGetSyncAttribKHR_wrapper_proc_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
typedef EGLImageKHR (egl_APIENTRY *eglCreateImageKHR_wrapper_proc_t) (EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, const EGLint*);
typedef EGLBoolean (egl_APIENTRY *eglDestroyImageKHR_wrapper_proc_t) (EGLDisplay, EGLImageKHR);


#endif
