Refactor Lua support
[lsnes.git] / src / lua / settings.cpp
bloba6fd73a76e15cdbc9a1d0e52e82dc8caacc2437b
1 #include "lua/internal.hpp"
2 #include "core/settings.hpp"
4 namespace
6 function_ptr_luafun ss(LS, "settings.set", [](lua_state& L, const std::string& fname) -> int {
7 std::string name = L.get_string(1, fname.c_str());
8 std::string value = L.get_string(2, fname.c_str());
9 try {
10 lsnes_set.set(name, value);
11 } catch(std::exception& e) {
12 L.pushnil();
13 L.pushstring(e.what());
14 return 2;
16 L.pushboolean(1);
17 return 1;
18 });
20 function_ptr_luafun sg(LS, "settings.get", [](lua_state& L, const std::string& fname) -> int {
21 std::string name = L.get_string(1, fname.c_str());
22 try {
23 if(!lsnes_set.is_set(name))
24 L.pushboolean(0);
25 else {
26 std::string value = lsnes_set.get(name);
27 L.pushlstring(value.c_str(), value.length());
29 return 1;
30 } catch(std::exception& e) {
31 L.pushnil();
32 L.pushstring(e.what());
33 return 2;
35 });
37 function_ptr_luafun sb(LS, "settings.blank", [](lua_state& L, const std::string& fname) -> int {
38 std::string name = L.get_string(1, fname.c_str());
39 try {
40 lsnes_set.blank(name);
41 L.pushboolean(1);
42 return 1;
43 } catch(std::exception& e) {
44 L.pushnil();
45 L.pushstring(e.what());
46 return 2;
48 });
50 function_ptr_luafun si(LS, "settings.is_set", [](lua_state& L, const std::string& fname) -> int {
51 std::string name = L.get_string(1, fname.c_str());
52 try {
53 bool x = lsnes_set.is_set(name);
54 L.pushboolean(x ? 1 : 0);
55 return 1;
56 } catch(std::exception& e) {
57 L.pushnil();
58 L.pushstring(e.what());
59 return 2;
61 });