26 lines
640 B
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;
|
|
}
|
|
|