summaryrefslogtreecommitdiff
path: root/src/lua/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-11-20 13:02:29 +1100
committerjacqueline <me@jacqueline.id.au>2023-11-20 13:02:29 +1100
commitb7f37f6426c78132d338b032962209bd93771039 (patch)
treefd9e097ed55167616e630c257a28724b0f1ddc63 /src/lua/include
parentb3b512f10e0570f7dc8a04e1613f1234e5532728 (diff)
downloadtangara-fw-b7f37f6426c78132d338b032962209bd93771039.tar.gz
Add a generic lua function binding, alongside properties
Diffstat (limited to 'src/lua/include')
-rw-r--r--src/lua/include/bridge.hpp5
-rw-r--r--src/lua/include/property.hpp7
2 files changed, 11 insertions, 1 deletions
diff --git a/src/lua/include/bridge.hpp b/src/lua/include/bridge.hpp
index 26401d14..91153d67 100644
--- a/src/lua/include/bridge.hpp
+++ b/src/lua/include/bridge.hpp
@@ -24,7 +24,10 @@ class Bridge {
auto AddPropertyModule(
const std::string&,
- std::vector<std::pair<std::string, std::shared_ptr<Property>>>) -> void;
+ std::vector<
+ std::pair<std::string,
+ std::variant<LuaFunction, std::shared_ptr<Property>>>>)
+ -> void;
system_fsm::ServiceLocator& services() { return services_; }
PropertyBindings& bindings() { return bindings_; }
diff --git a/src/lua/include/property.hpp b/src/lua/include/property.hpp
index b6b4718f..60f9906a 100644
--- a/src/lua/include/property.hpp
+++ b/src/lua/include/property.hpp
@@ -16,6 +16,7 @@
namespace lua {
using LuaValue = std::variant<std::monostate, int, float, bool, std::string>;
+using LuaFunction = std::function<int(lua_State*)>;
class Property {
public:
@@ -42,6 +43,12 @@ class PropertyBindings {
PropertyBindings(lua_State&);
auto Register(lua_State*, Property*) -> void;
+ auto Register(lua_State*, LuaFunction) -> void;
+
+ auto GetFunction(size_t i) -> const LuaFunction&;
+
+ private:
+ std::vector<LuaFunction> functions_;
};
} // namespace lua