// gles2.dl
/*
 * FRT - A Godot platform targeting single board computers
 * Copyright (c) 2017-2019  Emanuele Fornara
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#include <GLES2/gl2.h>

typedef void (*___glActiveTexture___)(GLenum texture);
typedef void (*___glAttachShader___)(GLuint program, GLuint shader);
typedef void (*___glBindAttribLocation___)(GLuint program, GLuint index, const GLchar *name);
typedef void (*___glBindBuffer___)(GLenum target, GLuint buffer);
typedef void (*___glBindFramebuffer___)(GLenum target, GLuint framebuffer);
typedef void (*___glBindRenderbuffer___)(GLenum target, GLuint renderbuffer);
typedef void (*___glBindTexture___)(GLenum target, GLuint texture);
typedef void (*___glBlendColor___)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (*___glBlendEquation___)(GLenum mode);
typedef void (*___glBlendEquationSeparate___)(GLenum modeRGB, GLenum modeAlpha);
typedef void (*___glBlendFunc___)(GLenum sfactor, GLenum dfactor);
typedef void (*___glBlendFuncSeparate___)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void (*___glBufferData___)(GLenum target, GLsizeiptr size, const void *data, GLenum usage);
typedef void (*___glBufferSubData___)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
typedef GLenum (*___glCheckFramebufferStatus___)(GLenum target);
typedef void (*___glClear___)(GLbitfield mask);
typedef void (*___glClearColor___)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (*___glClearDepthf___)(GLfloat d);
typedef void (*___glClearStencil___)(GLint s);
typedef void (*___glColorMask___)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (*___glCompileShader___)(GLuint shader);
typedef void (*___glCompressedTexImage2D___)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
typedef void (*___glCompressedTexSubImage2D___)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
typedef void (*___glCopyTexImage2D___)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void (*___glCopyTexSubImage2D___)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLuint (*___glCreateProgram___)();
typedef GLuint (*___glCreateShader___)(GLenum type);
typedef void (*___glCullFace___)(GLenum mode);
typedef void (*___glDeleteBuffers___)(GLsizei n, const GLuint *buffers);
typedef void (*___glDeleteFramebuffers___)(GLsizei n, const GLuint *framebuffers);
typedef void (*___glDeleteProgram___)(GLuint program);
typedef void (*___glDeleteRenderbuffers___)(GLsizei n, const GLuint *renderbuffers);
typedef void (*___glDeleteShader___)(GLuint shader);
typedef void (*___glDeleteTextures___)(GLsizei n, const GLuint *textures);
typedef void (*___glDepthFunc___)(GLenum func);
typedef void (*___glDepthMask___)(GLboolean flag);
typedef void (*___glDepthRangef___)(GLfloat n, GLfloat f);
typedef void (*___glDetachShader___)(GLuint program, GLuint shader);
typedef void (*___glDisable___)(GLenum cap);
typedef void (*___glDisableVertexAttribArray___)(GLuint index);
typedef void (*___glDrawArrays___)(GLenum mode, GLint first, GLsizei count);
typedef void (*___glDrawElements___)(GLenum mode, GLsizei count, GLenum type, const void *indices);
typedef void (*___glEnable___)(GLenum cap);
typedef void (*___glEnableVertexAttribArray___)(GLuint index);
typedef void (*___glFinish___)();
typedef void (*___glFlush___)();
typedef void (*___glFramebufferRenderbuffer___)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void (*___glFramebufferTexture2D___)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (*___glFrontFace___)(GLenum mode);
typedef void (*___glGenBuffers___)(GLsizei n, GLuint *buffers);
typedef void (*___glGenerateMipmap___)(GLenum target);
typedef void (*___glGenFramebuffers___)(GLsizei n, GLuint *framebuffers);
typedef void (*___glGenRenderbuffers___)(GLsizei n, GLuint *renderbuffers);
typedef void (*___glGenTextures___)(GLsizei n, GLuint *textures);
typedef void (*___glGetActiveAttrib___)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef void (*___glGetActiveUniform___)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef void (*___glGetAttachedShaders___)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
typedef GLint (*___glGetAttribLocation___)(GLuint program, const GLchar *name);
typedef void (*___glGetBooleanv___)(GLenum pname, GLboolean *data);
typedef void (*___glGetBufferParameteriv___)(GLenum target, GLenum pname, GLint *params);
typedef GLenum (*___glGetError___)();
typedef void (*___glGetFloatv___)(GLenum pname, GLfloat *data);
typedef void (*___glGetFramebufferAttachmentParameteriv___)(GLenum target, GLenum attachment, GLenum pname, GLint *params);
typedef void (*___glGetIntegerv___)(GLenum pname, GLint *data);
typedef void (*___glGetProgramiv___)(GLuint program, GLenum pname, GLint *params);
typedef void (*___glGetProgramInfoLog___)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void (*___glGetRenderbufferParameteriv___)(GLenum target, GLenum pname, GLint *params);
typedef void (*___glGetShaderiv___)(GLuint shader, GLenum pname, GLint *params);
typedef void (*___glGetShaderInfoLog___)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void (*___glGetShaderPrecisionFormat___)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
typedef void (*___glGetShaderSource___)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
typedef const GLubyte * (*___glGetString___)(GLenum name);
typedef void (*___glGetTexParameterfv___)(GLenum target, GLenum pname, GLfloat *params);
typedef void (*___glGetTexParameteriv___)(GLenum target, GLenum pname, GLint *params);
typedef void (*___glGetUniformfv___)(GLuint program, GLint location, GLfloat *params);
typedef void (*___glGetUniformiv___)(GLuint program, GLint location, GLint *params);
typedef GLint (*___glGetUniformLocation___)(GLuint program, const GLchar *name);
typedef void (*___glGetVertexAttribfv___)(GLuint index, GLenum pname, GLfloat *params);
typedef void (*___glGetVertexAttribiv___)(GLuint index, GLenum pname, GLint *params);
typedef void (*___glGetVertexAttribPointerv___)(GLuint index, GLenum pname, void **pointer);
typedef void (*___glHint___)(GLenum target, GLenum mode);
typedef GLboolean (*___glIsBuffer___)(GLuint buffer);
typedef GLboolean (*___glIsEnabled___)(GLenum cap);
typedef GLboolean (*___glIsFramebuffer___)(GLuint framebuffer);
typedef GLboolean (*___glIsProgram___)(GLuint program);
typedef GLboolean (*___glIsRenderbuffer___)(GLuint renderbuffer);
typedef GLboolean (*___glIsShader___)(GLuint shader);
typedef GLboolean (*___glIsTexture___)(GLuint texture);
typedef void (*___glLineWidth___)(GLfloat width);
typedef void (*___glLinkProgram___)(GLuint program);
typedef void (*___glPixelStorei___)(GLenum pname, GLint param);
typedef void (*___glPolygonOffset___)(GLfloat factor, GLfloat units);
typedef void (*___glReadPixels___)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
typedef void (*___glReleaseShaderCompiler___)();
typedef void (*___glRenderbufferStorage___)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (*___glSampleCoverage___)(GLfloat value, GLboolean invert);
typedef void (*___glScissor___)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (*___glShaderBinary___)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
typedef void (*___glShaderSource___)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
typedef void (*___glStencilFunc___)(GLenum func, GLint ref, GLuint mask);
typedef void (*___glStencilFuncSeparate___)(GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void (*___glStencilMask___)(GLuint mask);
typedef void (*___glStencilMaskSeparate___)(GLenum face, GLuint mask);
typedef void (*___glStencilOp___)(GLenum fail, GLenum zfail, GLenum zpass);
typedef void (*___glStencilOpSeparate___)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void (*___glTexImage2D___)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
typedef void (*___glTexParameterf___)(GLenum target, GLenum pname, GLfloat param);
typedef void (*___glTexParameterfv___)(GLenum target, GLenum pname, const GLfloat *params);
typedef void (*___glTexParameteri___)(GLenum target, GLenum pname, GLint param);
typedef void (*___glTexParameteriv___)(GLenum target, GLenum pname, const GLint *params);
typedef void (*___glTexSubImage2D___)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
typedef void (*___glUniform1f___)(GLint location, GLfloat v0);
typedef void (*___glUniform1fv___)(GLint location, GLsizei count, const GLfloat *value);
typedef void (*___glUniform1i___)(GLint location, GLint v0);
typedef void (*___glUniform1iv___)(GLint location, GLsizei count, const GLint *value);
typedef void (*___glUniform2f___)(GLint location, GLfloat v0, GLfloat v1);
typedef void (*___glUniform2fv___)(GLint location, GLsizei count, const GLfloat *value);
typedef void (*___glUniform2i___)(GLint location, GLint v0, GLint v1);
typedef void (*___glUniform2iv___)(GLint location, GLsizei count, const GLint *value);
typedef void (*___glUniform3f___)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (*___glUniform3fv___)(GLint location, GLsizei count, const GLfloat *value);
typedef void (*___glUniform3i___)(GLint location, GLint v0, GLint v1, GLint v2);
typedef void (*___glUniform3iv___)(GLint location, GLsizei count, const GLint *value);
typedef void (*___glUniform4f___)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (*___glUniform4fv___)(GLint location, GLsizei count, const GLfloat *value);
typedef void (*___glUniform4i___)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (*___glUniform4iv___)(GLint location, GLsizei count, const GLint *value);
typedef void (*___glUniformMatrix2fv___)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*___glUniformMatrix3fv___)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*___glUniformMatrix4fv___)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*___glUseProgram___)(GLuint program);
typedef void (*___glValidateProgram___)(GLuint program);
typedef void (*___glVertexAttrib1f___)(GLuint index, GLfloat x);
typedef void (*___glVertexAttrib1fv___)(GLuint index, const GLfloat *v);
typedef void (*___glVertexAttrib2f___)(GLuint index, GLfloat x, GLfloat y);
typedef void (*___glVertexAttrib2fv___)(GLuint index, const GLfloat *v);
typedef void (*___glVertexAttrib3f___)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void (*___glVertexAttrib3fv___)(GLuint index, const GLfloat *v);
typedef void (*___glVertexAttrib4f___)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (*___glVertexAttrib4fv___)(GLuint index, const GLfloat *v);
typedef void (*___glVertexAttribPointer___)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
typedef void (*___glViewport___)(GLint x, GLint y, GLsizei width, GLsizei height);

typedef void (*___glRenderbufferStorageMultisample___)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
