]> git.lizzy.rs Git - bspwm.git/blob - luautils.c
the name
[bspwm.git] / luautils.c
1 #define _BSD_SOURCE\r
2 \r
3 #include <string.h>\r
4 #include "utils.h"\r
5 #include "luautils.h"\r
6 \r
7 int eval_expr(lua_State *L, char *expr)\r
8 {\r
9     char buf[BUFSIZ];\r
10     sprintf(buf, "return %s", expr);\r
11     return luaL_dostring(L, buf);\r
12 }\r
13 \r
14 int lua_hastable(lua_State *L, char *name)\r
15 {\r
16     int result = 0;\r
17     eval_expr(L, name);\r
18     result = lua_istable(L, -1);\r
19     lua_pop(L, 1);\r
20     return result;\r
21 }\r
22 \r
23 char *string_expr(lua_State *L, char *expr, char* fallback)\r
24 {\r
25     char *result;\r
26     if (eval_expr(L, expr) == 0) {\r
27         if (lua_isstring(L, -1))\r
28             result = strdup(lua_tostring(L, -1));\r
29         else\r
30             result = strdup(fallback);\r
31         lua_pop(L, 1);\r
32     }\r
33     return result;\r
34 }\r
35 \r
36 double double_expr(lua_State *L, char *expr, double fallback)\r
37 {\r
38     double result = fallback;\r
39     if (eval_expr(L, expr) == 0) {\r
40         if (lua_isnumber(L, -1))\r
41             result = (double) lua_tonumber(L, -1);\r
42         lua_pop(L, 1);\r
43     }\r
44     return result;\r
45 }\r
46 \r
47 int int_expr(lua_State *L, char *expr, int fallback)\r
48 {\r
49     int result = fallback;\r
50     if (eval_expr(L, expr) == 0) {\r
51         if (lua_isnumber(L, -1))\r
52             result = (int) lua_tonumber(L, -1);\r
53         lua_pop(L, 1);\r
54     }\r
55     return result;\r
56 }\r
57 \r
58 bool lua_boolexpr(lua_State *L, char *expr, bool fallback)\r
59 {\r
60     bool result = fallback;\r
61     if (eval_expr(L, expr) == 0) {\r
62         if (lua_isboolean(L, -1))\r
63             result = (bool) lua_toboolean(L, -1);\r
64         lua_pop(L, 1);\r
65     }\r
66     return result;\r
67 }\r