]> git.lizzy.rs Git - bspwm.git/blob - luautils.c
Fix formatting
[bspwm.git] / luautils.c
1 #include <stdio.h>\r
2 #include <string.h>\r
3 #include <lua.h>\r
4 #include <lauxlib.h>\r
5 #include <lualib.h>\r
6 #include "helpers.h"\r
7 #include "luautils.h"\r
8 \r
9 int eval_expr(lua_State *L, char *expr)\r
10 {\r
11     char buf[BUFSIZ];\r
12     sprintf(buf, "return %s", expr);\r
13     return luaL_dostring(L, buf);\r
14 }\r
15 \r
16 int has_table(lua_State *L, char *name)\r
17 {\r
18     int result = 0;\r
19     eval_expr(L, name);\r
20     result = lua_istable(L, -1);\r
21     lua_pop(L, 1);\r
22     return result;\r
23 }\r
24 \r
25 void string_expr(lua_State *L, char *dest, char *expr, const char* fallback)\r
26 {\r
27     if (eval_expr(L, expr) == 0) {\r
28         if (lua_isstring(L, -1))\r
29             strcpy(dest, lua_tostring(L, -1));\r
30         else if (fallback != NULL)\r
31             strcpy(dest, fallback);\r
32         lua_pop(L, 1);\r
33     }\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 bool_expr(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