diff options
author | Tomasz Kramkowski <tk@the-tk.com> | 2018-03-26 21:27:00 +0100 |
---|---|---|
committer | Tomasz Kramkowski <tk@the-tk.com> | 2018-03-26 21:28:37 +0100 |
commit | 604ae85b6e76befe96036d16c4e3096b966a03e0 (patch) | |
tree | b6cf94126804d196c9631ac7a1da26891eb5d50f /loadgl.c | |
parent | ca761a910c25197b10aeadcb0120dae132442d56 (diff) | |
download | faqe-604ae85b6e76befe96036d16c4e3096b966a03e0.tar.gz faqe-604ae85b6e76befe96036d16c4e3096b966a03e0.tar.xz faqe-604ae85b6e76befe96036d16c4e3096b966a03e0.zip |
loadgl: Use m4 to generate the loads
The loadgl interfaces, loads and functions are now generated with m4 so
that all the information can be stored in a single place.
Diffstat (limited to 'loadgl.c')
-rw-r--r-- | loadgl.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/loadgl.c b/loadgl.c deleted file mode 100644 index 0dbd720..0000000 --- a/loadgl.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2018 Tomasz Kramkowski <tk@the-tk.com> - * SPDX-License-Identifier: MIT - */ -#include <setjmp.h> - -#include "loadgl.h" - -#define LGL_FUNC(name, glname) \ - name##_func *name; \ - static const char *name##_gln = #glname; - -LGL_FUNC(gl_viewport, glViewport); -LGL_FUNC(gl_clearcolor, glClearColor); -LGL_FUNC(gl_clear, glClear); -LGL_FUNC(gl_buf_gen, glGenBuffers); -LGL_FUNC(gl_buf_bind, glBindBuffer); -LGL_FUNC(gl_buf_data, glBufferData); -LGL_FUNC(gl_shdr_create, glCreateShader); -LGL_FUNC(gl_shdr_del, glDeleteShader); -LGL_FUNC(gl_shdr_source, glShaderSource); -LGL_FUNC(gl_shdr_compile, glCompileShader); -LGL_FUNC(gl_shdr_param, glGetShaderiv); -LGL_FUNC(gl_shdr_infolog, glGetShaderInfoLog); -LGL_FUNC(gl_prog_create, glCreateProgram); -LGL_FUNC(gl_prog_attachshdr, glAttachShader); -LGL_FUNC(gl_prog_link, glLinkProgram); -LGL_FUNC(gl_prog_use, glUseProgram); -LGL_FUNC(gl_prog_del, glDeleteProgram); -LGL_FUNC(gl_prog_param, glGetProgramiv); -LGL_FUNC(gl_prog_infolog, glGetProgramInfoLog); -LGL_FUNC(gl_va_define, glVertexAttribPointer); -LGL_FUNC(gl_va_enable, glEnableVertexAttribArray); -LGL_FUNC(gl_va_disable, glDisableVertexAttribArray); -LGL_FUNC(gl_va_gen, glGenVertexArrays); -LGL_FUNC(gl_va_bind, glBindVertexArray); -LGL_FUNC(gl_draw_arrays, glDrawArrays); -LGL_FUNC(gl_draw_elems, glDrawElements); -LGL_FUNC(gl_poly_mode, glPolygonMode); - -static void *load_func(const char *name, lgl_loadfunc *load, jmp_buf env) -{ - void *ret; - - ret = load(name); - if (ret == NULL) - longjmp(env, LGL_MISSING); - - return ret; -} - -enum lgl_status lgl_load(lgl_loadfunc *load) -{ - enum lgl_status status; - jmp_buf env; - - status = setjmp(env); - if (status != 0) - return status; - -#define LGL_LOAD(name) name = (name##_func *)load_func(name##_gln, load, env); - LGL_LOAD(gl_viewport); - LGL_LOAD(gl_clearcolor); - LGL_LOAD(gl_clear); - LGL_LOAD(gl_buf_gen); - LGL_LOAD(gl_buf_bind); - LGL_LOAD(gl_buf_data); - LGL_LOAD(gl_shdr_create); - LGL_LOAD(gl_shdr_del); - LGL_LOAD(gl_shdr_source); - LGL_LOAD(gl_shdr_compile); - LGL_LOAD(gl_shdr_param); - LGL_LOAD(gl_shdr_infolog); - LGL_LOAD(gl_prog_create); - LGL_LOAD(gl_prog_attachshdr); - LGL_LOAD(gl_prog_link); - LGL_LOAD(gl_prog_use); - LGL_LOAD(gl_prog_del); - LGL_LOAD(gl_prog_param); - LGL_LOAD(gl_prog_infolog); - LGL_LOAD(gl_va_define); - LGL_LOAD(gl_va_enable); - LGL_LOAD(gl_va_disable); - LGL_LOAD(gl_va_gen); - LGL_LOAD(gl_va_bind); - LGL_LOAD(gl_draw_arrays); - LGL_LOAD(gl_draw_elems); - LGL_LOAD(gl_poly_mode); - - return LGL_OK; -} - -const char *lgl_strerror(enum lgl_status status) -{ - switch (status) { - case LGL_OK: return "Success"; - case LGL_MISSING: return "Missing function"; - } - return "Unknown"; -} |