bspwm/luautils.c

54 lines
1.2 KiB
C
Raw Normal View History

2012-07-30 14:54:20 +02:00
#include "utils.h"
#include "luautils.h"
2012-07-30 17:23:25 +02:00
int lua_evalexpr(lua_State* L, char* expr)
2012-07-30 14:54:20 +02:00
{
char buf[EXPR_BUF_SIZE];
2012-07-30 17:23:25 +02:00
sprintf(buf, "return %s", expr);
return luaL_dostring(L, buf);
}
char *lua_stringexpr(lua_State* L, char* expr, char* fallback)
{
char *result = fallback;
if (lua_evalexpr(L, expr) == 0) {
if (lua_isstring(L, -1))
2012-07-30 14:54:20 +02:00
result = (char *) lua_tostring(L, -1);
lua_pop(L, 1);
}
return result;
}
2012-07-30 17:23:25 +02:00
double lua_doubleexpr(lua_State* L, char* expr, double fallback)
2012-07-30 14:54:20 +02:00
{
2012-07-30 17:23:25 +02:00
double result = fallback;
if (lua_evalexpr(L, expr) == 0) {
if (lua_isnumber(L, -1))
result = (double) lua_tonumber(L, -1);
2012-07-30 14:54:20 +02:00
lua_pop(L, 1);
}
return result;
}
2012-07-30 17:23:25 +02:00
int lua_intexpr(lua_State* L, char* expr, int fallback)
2012-07-30 14:54:20 +02:00
{
2012-07-30 17:23:25 +02:00
int result = fallback;
if (lua_evalexpr(L, expr) == 0) {
if (lua_isnumber(L, -1))
result = (int) lua_tonumber(L, -1);
lua_pop(L, 1);
}
return result;
2012-07-30 14:54:20 +02:00
}
2012-07-30 17:23:25 +02:00
bool lua_boolexpr(lua_State* L, char* expr, bool fallback)
2012-07-30 14:54:20 +02:00
{
2012-07-30 17:23:25 +02:00
bool result = fallback;
if (lua_evalexpr(L, expr) == 0) {
if (lua_isboolean(L, -1))
2012-07-30 14:54:20 +02:00
result = (bool) lua_toboolean(L, -1);
lua_pop(L, 1);
}
return result;
}