diff options
Diffstat (limited to 'src/common.h')
-rw-r--r-- | src/common.h | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/src/common.h b/src/common.h deleted file mode 100644 index 57a9de2..0000000 --- a/src/common.h +++ /dev/null @@ -1,265 +0,0 @@ -/** @file */ - -#ifndef HONEY_COMMON_H -#define HONEY_COMMON_H - -// standard c libraries -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> -#include <string.h> - -// POSIX options -#include <unistd.h> - -// lua interpreter -#include <lua.h> -#include <lualib.h> -#include <lauxlib.h> - -// glad -#include "glad/glad.h" -#include <GLFW/glfw3.h> - -// c opengl mathematics function -#define CGLM_ALL_UNALIGNED -#include <cglm/cglm.h> -#include <cglm/call.h> - -// assimp -#include <assimp/cimport.h> -#include <assimp/scene.h> -#include <assimp/postprocess.h> - -// stb image -#include "stb_image/stb_image.h" - -// cairo -#include <cairo/cairo.h> - -typedef GLFWwindow* honey_window; - -typedef struct { - honey_window window; - int width; - int height; - bool fullscreen; -} honey_window_information; - -extern int honey_window_info_ref; -extern int honey_window_resize_callback_ref; -extern int honey_window_resize_callback_data_ref; -extern int honey_window_focus_callback_ref; -extern int honey_window_focus_callback_data_ref; - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -typedef enum { - /* generic results */ - HONEY_OK, - HONEY_MEMORY_ALLOCATION_ERROR, - HONEY_FILE_READ_ERROR, - - /* shader errors */ - HONEY_VERTEX_SHADER_COMPILATION_ERROR, - HONEY_FRAGMENT_SHADER_COMPILATION_ERROR, - HONEY_SHADER_LINK_ERROR, - - /* mesh errors */ - HONEY_MESH_BAD_VERTEX_DATA, - HONEY_MESH_BAD_INDEX_DATA, - - /* model errors */ - HONEY_MODEL_LOAD_ERROR, - - HONEY_N_ERRORS -} honey_result; - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -typedef enum { VEC3, - VEC4, - MAT3, - MAT4 -} honey_glm_array_type; - -typedef struct { - honey_glm_array_type type; - unsigned int size; - float* data; -} honey_glm_array; - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -honey_result honey_format_string(char** string, - char* format_string, - ...); - -/** @brief Throw an error with a string generated by a printf format string. - * - * This function attempts to create a string from the given format string; - * if an error should occur, it will instead throw a lua error with the appropriate - * message. - * - * @param[in] L The Lua state to throw an error from. - * @param[in] format_string The format string used to generate the error message. - * @param[in] ... The arguments for the format string. - * - * @returns Nothing. - */ -void honey_lua_throw_error(lua_State* L, - char* format_string, - ...); - -/* lua binding functions */ - -typedef enum { - HONEY_BOOLEAN, - HONEY_INTEGER, - HONEY_NUMBER, - HONEY_STRING, - HONEY_FUNCTION, - HONEY_TABLE, - HONEY_NIL, - HONEY_USERDATA, - HONEY_LIGHTUSERDATA, - HONEY_ANY -} honey_lua_type; - -/** @brief Get arguments from a function, checking to ensure the types match. - * - * Each argument type should be specified as [# of args], type, ptr, type, ptr..., - * e.g. - * ``` - * honey_lua_parse_arguments(L, 3, - * // option 0 - * 2, HONEY_INTEGER, &a, HONEY_INTEGER, &b, - * // option 1 - * 1, HONEY_INTEGER, &a, - * // option 2 - * 0); - * ``` - * - * Note that this function will check for correct types of HONEY_TABLE, HONEY_NIL, and - * HONEY_FUNCTION, but does not expect a pointer to them. It performs no check for - * HONEY_ANY, and also does not expect a pointer. - * - * @param[in] L The lua state to parse arguments from. - * @param[in] n The number of argument options to parse. - * @param[in] ... Variadic list of argument options. - * - * @returns The zero-indexed index of the actual argument option used. Throws an - * error if no options matched the provided arguments. - */ -int honey_lua_parse_arguments(lua_State* L, unsigned int n, ...); - -/** @brief Process a param table. - * - * Please ensure that the param table is on top of the stack before calling this function. - * - * The first m elements of the param table are required, and their absence from - * the table will trigger an error. - * - * The variadic portion of this function expects arguments as - * type_1, param_name_1, function1, (void*) data1, type_2, param_name_2, function_2, (void*) data_2, ... - * - * Each function should be of the form void (*)(lua_State*, void*), and should - * not return with a modified stack. - * - * @param[in] L The lua state to parse the table from. - * @param[in] n The number of params to parse. - * @param[in] m The number of required params. - * @param[inout] ... Variadic list of param processing functions, as described above. - * - * @returns Nothing, but throws a lua error if a required argument is not found. - */ -void honey_lua_parse_params(lua_State* L, int n, int m, ...); - -/** @brief Wrap C objects for lua. */ -typedef struct honey_lua_element { - char* name; - honey_lua_type type; - union { - int integer; - double number; - char* string; - int (*function)(lua_State*); - struct { - int n_elements; - struct honey_lua_element* elements; - } table; - void* pointer; - } data; -} honey_lua_element; - -/** @brief Push an element to the lua stack. - * - * @param[in] L The lua state to push the element to. - * @param[in] element The honey_lua_element to push to the stack. - * - * @returns Nothing. - */ -void honey_lua_push_element(lua_State* L, - honey_lua_element element); - -/** @brief Get an enum value from a string. - * - * This function expects the variadic arguments of the form STR1, VAL1, STR2, VAL2, ... - * - * @param[out] k The result of the conversion. - * @param[in] string The string to check. - * @param[in] n The number of variadic pairs provided. - * @param[in] ... Variadic arguments as described above. - * - * @returns true if the string parsed successfully; false otherwise. - */ -bool honey_string_to_enum(int* k, char* string, int n, ...); - -/** @brief Get an enum value from a string. - * - * This function expects the variadic arguments of the form STR1, VAL1, STR2, VAL2, ... - * - * @param[in] string The resulting string. - * @param[out] k The integer to check. - * @param[in] n The number of variadic pairs provided. - * @param[in] ... Variadic arguments as described above. - * - * @returns true if the integer parsed successfully; false otherwise. - */ -bool honey_enum_to_string(char** string, int k, int n, ...); - -/** @brief Create and populate a lua table. - * - * This function expects a list of the form `type, name, element, type, name, element...`. - * In the case of a sub-table, the format is - * `type, name, n_elements, subtype, subname, subelement...`. - * This can be nested as deeply as one wishes. - * - * As userdata cannot be pushed from C, attempting to push HONEY_USERDATA will result in - * an error. - * - * @param[in] L The lua state to push the table to. - * @param[in] n_elements The number of elements in the array. - * @param[in] ... Variadic list of table elements. - * - * @returns Nothing. - */ -void honey_lua_create_table(lua_State* L, - unsigned int n_elements, - ...); - -/** @brief Get the traceback for use after an error. - */ -int honey_lua_traceback(lua_State* L); - -/** @brief Wrapper for lua_pcall that uses a honey_lua_traceback as an error handler. - */ -int honey_lua_pcall(lua_State* L, int nargs, int nret); - -/** @brief Trigger honey to exit. - * - * @returns Nothing. - */ -int honey_exit(lua_State* L); - -#endif |