forked from len0rd/rockbox
lua optimize integer and string consts in rocklib
use a table approach for registering integer / string constants Change-Id: Idbccae9c2203de1c694f6dd5a7014a7fccedae9b
This commit is contained in:
parent
733c20d5d3
commit
dc6f23ec36
1 changed files with 59 additions and 27 deletions
|
@ -421,8 +421,19 @@ static const luaL_Reg rocklib[] =
|
||||||
extern const luaL_Reg rocklib_aux[];
|
extern const luaL_Reg rocklib_aux[];
|
||||||
extern const luaL_Reg rocklib_img[];
|
extern const luaL_Reg rocklib_img[];
|
||||||
|
|
||||||
#define RB_CONSTANT(x) lua_pushinteger(L, x); lua_setfield(L, -2, #x);
|
#define RB_CONSTANT(x) {#x, x}
|
||||||
#define RB_STRING_CONSTANT(x) lua_pushstring(L, x); lua_setfield(L, -2, #x);
|
#define RB_STRING_CONSTANT(x) {#x, x}
|
||||||
|
|
||||||
|
struct lua_int_reg {
|
||||||
|
char const* name;
|
||||||
|
int value;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct lua_str_reg {
|
||||||
|
char const* name;
|
||||||
|
char const* value;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Open Rockbox library
|
** Open Rockbox library
|
||||||
*/
|
*/
|
||||||
|
@ -432,41 +443,62 @@ LUALIB_API int luaopen_rock(lua_State *L)
|
||||||
luaL_register(L, LUA_ROCKLIBNAME, rocklib_aux);
|
luaL_register(L, LUA_ROCKLIBNAME, rocklib_aux);
|
||||||
luaL_register(L, LUA_ROCKLIBNAME, rocklib_img);
|
luaL_register(L, LUA_ROCKLIBNAME, rocklib_img);
|
||||||
|
|
||||||
RB_CONSTANT(HZ);
|
static const struct lua_int_reg rlib_const_int[] =
|
||||||
|
{
|
||||||
|
/* useful integer constants */
|
||||||
|
RB_CONSTANT(HZ),
|
||||||
|
|
||||||
RB_CONSTANT(LCD_WIDTH);
|
RB_CONSTANT(LCD_WIDTH),
|
||||||
RB_CONSTANT(LCD_HEIGHT);
|
RB_CONSTANT(LCD_HEIGHT),
|
||||||
RB_CONSTANT(LCD_DEPTH);
|
RB_CONSTANT(LCD_DEPTH),
|
||||||
|
|
||||||
RB_CONSTANT(FONT_SYSFIXED);
|
RB_CONSTANT(FONT_SYSFIXED),
|
||||||
RB_CONSTANT(FONT_UI);
|
RB_CONSTANT(FONT_UI),
|
||||||
|
|
||||||
RB_CONSTANT(PLAYLIST_PREPEND);
|
RB_CONSTANT(PLAYLIST_PREPEND),
|
||||||
RB_CONSTANT(PLAYLIST_INSERT);
|
RB_CONSTANT(PLAYLIST_INSERT),
|
||||||
RB_CONSTANT(PLAYLIST_INSERT_LAST);
|
RB_CONSTANT(PLAYLIST_INSERT_LAST),
|
||||||
RB_CONSTANT(PLAYLIST_INSERT_FIRST);
|
RB_CONSTANT(PLAYLIST_INSERT_FIRST),
|
||||||
RB_CONSTANT(PLAYLIST_INSERT_SHUFFLED);
|
RB_CONSTANT(PLAYLIST_INSERT_SHUFFLED),
|
||||||
RB_CONSTANT(PLAYLIST_REPLACE);
|
RB_CONSTANT(PLAYLIST_REPLACE),
|
||||||
RB_CONSTANT(PLAYLIST_INSERT_LAST_SHUFFLED);
|
RB_CONSTANT(PLAYLIST_INSERT_LAST_SHUFFLED),
|
||||||
|
|
||||||
#ifdef HAVE_TOUCHSCREEN
|
#ifdef HAVE_TOUCHSCREEN
|
||||||
RB_CONSTANT(TOUCHSCREEN_POINT);
|
RB_CONSTANT(TOUCHSCREEN_POINT),
|
||||||
RB_CONSTANT(TOUCHSCREEN_BUTTON);
|
RB_CONSTANT(TOUCHSCREEN_BUTTON),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RB_CONSTANT(SCREEN_MAIN);
|
RB_CONSTANT(SCREEN_MAIN),
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
RB_CONSTANT(SCREEN_REMOTE);
|
RB_CONSTANT(SCREEN_REMOTE),
|
||||||
#endif
|
#endif
|
||||||
|
{NULL, 0}
|
||||||
|
};
|
||||||
|
|
||||||
/* some useful paths constants */
|
static const struct lua_int_reg* rlci = rlib_const_int;
|
||||||
RB_STRING_CONSTANT(ROCKBOX_DIR);
|
for (; rlci->name; rlci++) {
|
||||||
RB_STRING_CONSTANT(HOME_DIR);
|
lua_pushinteger(L, rlci->value);
|
||||||
RB_STRING_CONSTANT(PLUGIN_DIR);
|
lua_setfield(L, -2, rlci->name);
|
||||||
RB_STRING_CONSTANT(PLUGIN_APPS_DATA_DIR);
|
}
|
||||||
RB_STRING_CONSTANT(PLUGIN_GAMES_DATA_DIR);
|
|
||||||
RB_STRING_CONSTANT(PLUGIN_DATA_DIR);
|
static const struct lua_str_reg rlib_const_str[] =
|
||||||
RB_STRING_CONSTANT(VIEWERS_DATA_DIR);
|
{
|
||||||
|
/* some useful paths constants */
|
||||||
|
RB_STRING_CONSTANT(ROCKBOX_DIR),
|
||||||
|
RB_STRING_CONSTANT(HOME_DIR),
|
||||||
|
RB_STRING_CONSTANT(PLUGIN_DIR),
|
||||||
|
RB_STRING_CONSTANT(PLUGIN_APPS_DATA_DIR),
|
||||||
|
RB_STRING_CONSTANT(PLUGIN_GAMES_DATA_DIR),
|
||||||
|
RB_STRING_CONSTANT(PLUGIN_DATA_DIR),
|
||||||
|
RB_STRING_CONSTANT(VIEWERS_DATA_DIR),
|
||||||
|
{NULL,NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct lua_str_reg* rlcs = rlib_const_str;
|
||||||
|
for (; rlcs->name; rlcs++) {
|
||||||
|
lua_pushstring(L, rlcs->value);
|
||||||
|
lua_setfield(L, -2, rlcs->name);
|
||||||
|
}
|
||||||
|
|
||||||
rli_init(L);
|
rli_init(L);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue