better API, put them in global name space
This commit is contained in:
parent
e15650cb1f
commit
0dd833306d
1 changed files with 2 additions and 67 deletions
|
@ -3,54 +3,11 @@
|
||||||
#include "lua.hpp"
|
#include "lua.hpp"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
// CREATE ARRAY TYPE AND EXPOSE matrixpanel TO LUA.
|
|
||||||
// metatable method for handling "array[index]"
|
|
||||||
/* static int matrixpanel_index (lua_State* L) {
|
|
||||||
CRGB** parray = (CRGB **) luaL_checkudata(L, 1, "matrixpanel");
|
|
||||||
int index = luaL_checkint(L, 2);
|
|
||||||
lua_pushnumber(L, (*parray)[index-1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// metatable method for handle "array[index] = value"
|
|
||||||
static int matrixpanel_newindex (lua_State* L) {
|
|
||||||
CRGB** parray = (CRGB **) luaL_checkudata(L, 1, "matrixpanel");
|
|
||||||
int index = luaL_checkint(L, 2);
|
|
||||||
int value = luaL_checkint(L, 3);
|
|
||||||
(*parray)[index-1] = value;
|
|
||||||
return 0;
|
|
||||||
} */
|
|
||||||
|
|
||||||
int8_t matrixpanel_userdata = 0; // used just to have some userdata
|
|
||||||
|
|
||||||
static int matrixpanel_swapbuffer(lua_State *L) {
|
static int matrixpanel_swapbuffer(lua_State *L) {
|
||||||
matrixpanel.swapBuffers(true);
|
matrixpanel.swapBuffers(true);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pushPanel (lua_State *L)
|
|
||||||
{
|
|
||||||
int8_t *pi = (int8_t *)lua_newuserdata(L, sizeof(int8_t));
|
|
||||||
*pi = matrixpanel_userdata;
|
|
||||||
luaL_getmetatable(L, "matrixpanel");
|
|
||||||
lua_setmetatable(L, -2);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int matrixpanel_new (lua_State *L) {
|
|
||||||
pushPanel(L);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int matrixpanel_gc (lua_State *L) {
|
|
||||||
output_log("dropped matrixpanel\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int matrixpanel_tostring (lua_State *L) {
|
|
||||||
lua_pushfstring(L, "matrixpanel string");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int matrixpanel_fillscreen (lua_State *L) {
|
static int matrixpanel_fillscreen (lua_State *L) {
|
||||||
int c = luaL_checkint(L, 1);
|
int c = luaL_checkint(L, 1);
|
||||||
matrixpanel.fillScreen(c);
|
matrixpanel.fillScreen(c);
|
||||||
|
@ -326,7 +283,6 @@ static int matrixpanel_gettextbounds (lua_State *L) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct luaL_Reg matrixpanel_methods[] = {
|
static const struct luaL_Reg matrixpanel_methods[] = {
|
||||||
{ "new", matrixpanel_new },
|
|
||||||
{ "swapBuffer", matrixpanel_swapbuffer },
|
{ "swapBuffer", matrixpanel_swapbuffer },
|
||||||
{ "fillScreen", matrixpanel_fillscreen },
|
{ "fillScreen", matrixpanel_fillscreen },
|
||||||
{ "drawPixel", matrixpanel_drawpixel },
|
{ "drawPixel", matrixpanel_drawpixel },
|
||||||
|
@ -364,28 +320,7 @@ static const struct luaL_Reg matrixpanel_methods[] = {
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct luaL_Reg matrixpanel_metamethods[] = {
|
|
||||||
{ "__gc", matrixpanel_gc },
|
|
||||||
{ "__tostring", matrixpanel_tostring },
|
|
||||||
{NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
int luaopen_matrixpanel (lua_State* L) {
|
int luaopen_matrixpanel (lua_State* L) {
|
||||||
lua_newtable(L);
|
luaL_newlib(L, matrixpanel_methods);
|
||||||
luaL_setfuncs(L, matrixpanel_methods, 0);
|
return 0;
|
||||||
lua_setglobal(L, "matrixpanel");
|
|
||||||
|
|
||||||
luaL_newmetatable(L, "matrixpanel"); /* create metatable for matrixpanel,
|
|
||||||
add it to the Lua registry */
|
|
||||||
luaL_setfuncs(L, matrixpanel_methods, 0);
|
|
||||||
|
|
||||||
lua_pushliteral(L, "__index");
|
|
||||||
lua_pushvalue(L, -3); /* dup methods table*/
|
|
||||||
lua_rawset(L, -3); /* metatable.__index = methods */
|
|
||||||
lua_pushliteral(L, "__metatable");
|
|
||||||
lua_pushvalue(L, -3); /* dup methods table*/
|
|
||||||
lua_rawset(L, -3); /* hide metatable:
|
|
||||||
metatable.__metatable = methods */
|
|
||||||
lua_pop(L, 1); /* drop metatable */
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue