luametalatex-c/luaharfbuzz/src/luaharfbuzz/class_utils.c

26 lines
640 B
C

// Utility functions to create Lua classes.
#include "luaharfbuzz.h"
int register_class(lua_State *L, const char *name, const luaL_Reg *methods, const luaL_Reg *functions, const luahb_constant_t *constants) {
luaL_newmetatable(L, name);
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
if (constants) {
while (constants->name) {
lua_pushinteger(L, constants->value);
lua_setfield(L, -2, constants->name);
constants++;
}
}
luaL_setfuncs(L, methods, 0);
lua_pop(L, 1);
lua_newtable(L);
luaL_setfuncs(L, functions, 0);
luaL_getmetatable(L, name);
lua_setmetatable(L, -2);
return 1;
}